首页
社区
课程
招聘
[求助]为什么OD载入,内存的起始地址不是ImageBase + BaseOfCode
发表于: 2008-11-4 02:35 5588

[求助]为什么OD载入,内存的起始地址不是ImageBase + BaseOfCode

2008-11-4 02:35
5588
一般都是,似乎出现下图后,内存地址都不再是ImageBase(00400000) + BaseOfCode(00001000),而是还要多加一个 00010000,起始地址变成00411000,不知道这个是怎么加上去的。我的     SectionAlignment,   FileAlignment都是 00001000,不过问题似乎跟这个没有关系,有哪位能解释下啊?谢谢

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 179
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
呵呵,估计明白了,应该是 .text段映射到内存中的起始地址,
typedef struct _IMAGE_SECTION_HEADER {
      BYTE    Name[IMAGE_SIZEOF_SHORT_NAME];
      union {
              DWORD   PhysicalAddress;
              DWORD   VirtualSize;
      } Misc;
      DWORD   VirtualAddress;
      DWORD   SizeOfRawData;
      DWORD   PointerToRawData;
      DWORD   PointerToRelocations;
      DWORD   PointerToLinenumbers;
      WORD    NumberOfRelocations;
      WORD    NumberOfLinenumbers;
      DWORD   Characteristics;
  } IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
结构中成员3,似乎没有什么好工具可以查看各段的具体细节啊,就是象stud_PE那样看各个段头部,方便。用winhex看老累的。大家能推荐一款么?
另外,上面那个入口点警告是什么意思?显然入口点在.text块中,怎么提示超出代码块范围呢?
2008-11-4 04:02
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
3
OD出现这条警告,它的意思是,模块的入口点,即EntryPoint,所位于的节,并不是通常的.text节,而是在其它”非标准“的节。

也就是说,现在入口点不属于由BaseOfCode所指示的节了。

而一般来说,对程序加壳,壳通常会给程序添加节,而把壳的内容放在新的节中。不同的壳添加的节名各有特征,比如UPX加壳后,程序会含有UPX0和UPX1这样的节。

所以OD遇到这种情况会发出警告。

关于查看PE头部的信息,正如你所讲的PE_Stub,我常用的是LordPE。
2008-11-4 11:36
0
雪    币: 293
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
PEiD可以看各个section header啊。
2008-11-4 14:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我也碰到同样的问题。关注中。
2008-11-4 20:48
0
雪    币: 889
活跃值: (4027)
能力值: ( LV5,RANK:69 )
在线值:
发帖
回帖
粉丝
6
2008-11-5 09:00
0
游客
登录 | 注册 方可回帖
返回
//