|
|
|
|
|
注入DLL到进程的问题
现在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; |
|
[原创]http动态注入(链路劫持)
顶一下。。。。。 |
|
|
|
★请问下在看雪是不是必须要发精华帖才能提升等级★
我顺便看看我的分数。。。 |
|
[转帖]Notepad++ v6.6.4
notepad++ ,的确不错,一直在用。 |
|
[原创]iOS下远程进程注入dylib源码
高端,留贴 |
|
|
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值