首页
社区
课程
招聘
[求助]如何得到远程程序的基址
发表于: 2007-6-29 17:15 4439

[求助]如何得到远程程序的基址

2007-6-29 17:15
4439
如何用OpenProcess得到远程程序的基址和对应的页面区域?有没有具体的代码实例。
用GetModuleHandle只能得到自身的基址。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 560
活跃值: (359)
能力值: ( LV13,RANK:1370 )
在线值:
发帖
回帖
粉丝
2
有几种方法吧:
1、
invoke OpenProcess , PROCESS_ALL_ACCESS , TRUE , Pid
mov hProcess,eax
invoke  GetModuleInformation,hProcess,ModuleHwnd,addr ModuleInformation,size MODULEINFO
其中:
          MODULEINFO struct
            lpBaseOfDll dword 0           ;模块的地址
            SizeOfImage dword 0           ;大小
            EntryPoint dword 0            ;入口
          MODULEINFO ends

2、
GetModulePreferredBaseAddr proc dwProcessID:DWORD,pvModuleRemote:PVOID
local pvModulePreferredBaseAddr:PVOID     
LOCAL idh:IMAGE_DOS_HEADER   
LOCAL inth:IMAGE_NT_HEADERS   
       invoke Toolhelp32ReadProcessMemory,dwProcessID,pvModuleRemote,addr idh,sizeof idh ,NULL
       .if idh.e_magic==IMAGE_DOS_SIGNATURE   
             invoke Toolhelp32ReadProcessMemory,dwProcessID,pvModuleRemote+idh.e_lfanew,addr inth,sizeof inth,NULL  
             .if inth.Signature==IMAGE_NT_SIGNATURE
                     mov eax,inth.OptionalHeader.ImageBase
                     mov pvModulePreferredBaseAddr,eax
             .endif
      .endif
      mov eax,pvModulePreferredBaseAddr  
GetModulePreferredBaseAddr endp

3、
invoke OpenProcess , PROCESS_ALL_ACCESS , TRUE , Pid
mov hProcess,eax                        
invoke VirtualQueryEx,hProcess,400000h,addr meminfo,sizeof meminfo
mov eax,meminfo.BaseAddress
mov BaseAddr,eax
2007-6-29 21:09
0
游客
登录 | 注册 方可回帖
返回
//