首页
社区
课程
招聘
关于ImageBase的问题
发表于: 2009-11-28 16:02 4262

关于ImageBase的问题

2009-11-28 16:02
4262
我正在看《加密与解密》10章 编写PE分析工具(300页)
里面有个函数是这样的:
BOOL IsPEFile(LPVOID ImageBase)
{
          PIMAGE_DOS_HANDER pDH=NULL;
          PIMAGE_NT_HEADRS  pNtH = NULL;
          if(!ImageBase)                         //判断映像基址
            return FALSE;
          pDH = (PIMAGE_DOS_HEADER)ImageBase;
          if(pDH->e_magic != IMAGE_DOS_SIGNATURE)
                  return FALSE;
          pNtH = (PIMAGE_NT_HEADERS32)
                        ((DWORDpDH+pDH>e_lfanew);
          if(pDH->Signature != IMAGE_NT_SIGATURE) //判断是否为PE格式
                  return FALSE;
        return TRUE;         
}
这是一个判断文件是不是PE文件的函数。
问题:函数的参数ImageBase是如何得到的呢?
麻烦详细点!先谢了!

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 202
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
那个没看,不过一般来说imagebase是可以从PE文件映射到了内存之中后,可以用映射到内存,这个地址就是PE的dos头的位置,所以。用PE结构就可以找出这个值是多少了。

补上,看上面的imagebase不是PE里的那个imagebase吧?这个函数看上去是判断是否是PE文件,所以这个imagebase应就是文件映射到内存中返回的那个地址。
2009-11-28 16:07
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
hFile = CreateFileMapping(...);
你说的就是hFile吗?
2009-11-28 16:12
0
雪    币: 146
活跃值: (182)
能力值: ( LV13,RANK:220 )
在线值:
发帖
回帖
粉丝
4
通过可选头IMAGE_OPTIONAL_HEADER里的ImaseBase获得的吧,没看过那书
一般是默认的4000000*啥的
2009-11-28 16:13
0
雪    币: 202
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
是mapofview 记不太清楚了。大约是这样的。这个函数会返回地址成功的话
2009-11-28 17:02
0
雪    币: 100
活跃值: (30)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
是GetModuleHandle函数的返回值.
2009-11-29 13:32
0
游客
登录 | 注册 方可回帖
返回
//