首页
社区
课程
招聘
[求助]如何获得一个进程的某个模块的代码段基址以及代码段大小
发表于: 2008-7-15 13:07 8569

[求助]如何获得一个进程的某个模块的代码段基址以及代码段大小

2008-7-15 13:07
8569

上面是OD的截图,我想写个通用的函数获得指定进程中某个模块的代码段首地址及代码段大小,在论坛上没有找到有用的信息,希望得到大家的帮助,谢谢..   

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 375
活跃值: (12)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
从PEB里应该可以找到一点东西吧。
lkd> dt_LDR_DATA_TABLE_ENTRY
nt!_LDR_DATA_TABLE_ENTRY
   +0x000 InLoadOrderLinks : _LIST_ENTRY
   +0x008 InMemoryOrderLinks : _LIST_ENTRY
   +0x010 InInitializationOrderLinks : _LIST_ENTRY
   +0x018 DllBase          : Ptr32 Void
   +0x01c EntryPoint       : Ptr32 Void
   +0x020 SizeOfImage      : Uint4B
   +0x024 FullDllName      : _UNICODE_STRING
   +0x02c BaseDllName      : _UNICODE_STRING
   +0x034 Flags            : Uint4B
   +0x038 LoadCount        : Uint2B
   +0x03a TlsIndex         : Uint2B
   +0x03c HashLinks        : _LIST_ENTRY
   +0x03c SectionPointer   : Ptr32 Void
   +0x040 CheckSum         : Uint4B
   +0x044 TimeDateStamp    : Uint4B
   +0x044 LoadedImports    : Ptr32 Void
   +0x048 EntryPointActivationContext : Ptr32 Void
   +0x04c PatchInformation : Ptr32 Void
DllBase和SizeOfImage应该就是你要的。
2008-7-15 17:50
0
雪    币: 287
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
感谢xPLK
我找了PEB的资料 写代码测试了一下 DllBase和SizeOfImage这个不是我想要的
这两个值CreateToolhelp32Snapshot遍历进程模块可以得到
我要的是进程中某个模块的代码段基址及大小
例如顶楼截图中的0x01001000和0x00008000
2008-7-15 23:47
0
雪    币: 6839
活跃值: (3719)
能力值: ( LV13,RANK:1664 )
在线值:
发帖
回帖
粉丝
4
根据DllBase以及各个节的属性及其地址和大小就可以判断了吧
2008-7-16 10:51
0
雪    币: 287
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
感谢xym
另外我还有个问题不太确定

可能有这种情况.
PE文件是加了壳的.在装载到内存中后,区块信息被恢复到未加壳前的状态.那么通过文件得到的区块信息就不可用.
我的问题是在pe文件装载进内存后,其pe文件头是不是总在固定的位置,如基址到基址+0x1000的位置,还是会有特殊情况,特殊情况下如何定位PE文件头..
2008-7-16 12:28
0
雪    币: 952
活跃值: (1821)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
用 VirtualQueryEx 就行了
2008-7-16 12:29
0
游客
登录 | 注册 方可回帖
返回
//