能力值:
( LV7,RANK:140 )
2 楼
A进程中的一个线程。 当你注入到A进程之后,操作A进程的内存已经不需要WriteProcessMemory了,直接指针操作就可以了。比如memcpy。 如果你真的要用WriteProcessMemory,就打开当前进程的句柄。
能力值:
( LV3,RANK:20 )
3 楼
直接传(HANDLE)-1就行了
能力值:
( LV2,RANK:10 )
4 楼
yeyeshun
A进程中的一个线程。
当你注入到A进程之后,操作A进程的内存已经不需要WriteProcessMemory了,直接指针操作就可以了。比如memcpy。
如果你真的要用WriteProcessMem ...
有没有windows api实现memcpy的功能的?
能力值:
( LV3,RANK:20 )
5 楼
lwtzero
有没有windows api实现memcpy的功能的?
看来你并没有理解注入是怎么回事
能力值:
( LV7,RANK:140 )
6 楼
lwtzero
有没有windows api实现memcpy的功能的?
有没有API不是很清楚。
为什么一定要用API,自己写一个for循环填充内存不就行了吗
能力值:
( LV9,RANK:370 )
7 楼
现在DLL是一个线程运行在A进程里面,还是它本身就是一个进程? 回答: DLL本身只是该进程里面的ModuleList(模块列表)一段Code内存空间,是否会有线程,要看你的Code里面是否create thread, 如果有。 在ThreadList(线程列表)可以找到你的线程。 比如说:模块列表: Executable modules 基址 大小 入口 名称 (系统) 文件版本 路径 00B40000 00079000 00B4312B WeChat 2.4.5.1 C:\Program Files (x86)\Tencent\WeChat\WeChat.exe 6D5E0000 027F9000 6EF4EB93 qbcore 3.43.691.400 C:\Program Files (x86)\Tencent\WeChat\qbcore.dll 6FDE0000 004BA000 WeChatRe 1.0.0.0 C:\Program Files (x86)\Tencent\WeChat\WeChatResource.dll 702A0000 005A3000 7030DAFF libFFmpe C:\Program Files (x86)\Tencent\WeChat\libFFmpeg.dll 70850000 01205000 7130EC9C WeChatWi 2.6.2.31 C:\Program Files (x86)\Tencent\WeChat\WeChatWin.dll 72130000 00051000 7215988C WINSPOOL (系统) 6.1.7600.16385 ( C:\Windows\system32\WINSPOOL.DRV 722B0000 00070000 722B1F65 ntshrui (系统) 6.1.7600.16385 ( C:\Windows\system32\ntshrui.dll 你自己的Dll只能在Ring3级别,内存段的一段空间内。除非是驱动可以在8XXXXXXX以上的地址。 如果在dll编写函数操作A进程的内存地址,WriteProcessMemory()中第一个句柄参数应该用谁的句柄或线程? 回答:第一个参数是模块基地址dwModuleBaseAddr,这里可以是主模块基地址,也可以是自己Dll的基地址。 如果要执行,必须先VirtualQuery 查询Protect = PAGE_EXECUTE_READWRITE , 可写状态。 比如你可以这样写: 这里的pAddress: Pointer可以是ring3,也就是7XXXXXXX以下的可写地址。 function SetToWrite(pAddress: Pointer): Boolean; var mInfo: MEMORY_BASIC_INFORMATION; dwOldProtect: DWORD; begin VirtualQuery(pAddress, mInfo, SizeOf(mInfo)); if mInfo.Protect = PAGE_EXECUTE_READWRITE then Result := True else begin if VirtualProtect(mInfo.BaseAddress, mInfo.RegionSize, PAGE_EXECUTE_READWRITE, @dwOldProtect) = True then Result := True else Result := False; end; end;
能力值:
( LV7,RANK:140 )
8 楼
fosom
现在DLL是一个线程运行在A进程里面,还是它本身就是一个进程?
回答:
DLL本身只是该进程里面的ModuleList(模块列表)一段Code内存空间,是否会有线程,要看你的Code里面是否cre ...
我对你的回答有疑问。
楼主说注入成功弹出对话框,那么一定有线程拉起来。不管是谁创建的线程,肯定会有线程。
WriteProcessMemory第一个参数是进程句柄,从没听说过可以直接传递模块基址的。
也许是我孤陋寡闻了。等一下,你是从第0个参数开始算起的吗?
最后于 2018-4-26 16:51
被yeyeshun编辑
,原因:
能力值:
( LV2,RANK:10 )
9 楼
武装的蔷薇
看来你并没有理解注入是怎么回事
确实不是很理解