-
-
[分享][讨论]通过PE寻找程序的入口点
-
发表于: 2021-7-7 01:23 3669
-
以附件中的ASM C.exe为范例
- 文件是从哪里开始执行的?
- 用010 edit或者UE打开ASM C.exe程序,观察pe结构图,需要明白0x00对应的是000000h,0x3c对应的是000000dch
3c是十六进制,转换为十进制是60,也就是从00000000h处向后数60个字节,刚好来到0000003c处,观察0x3c后面跟着的Dword e_Mannew,这是一个双字(在内存中占32个bit,也就是4个字节),所以要从3c处开始数4个字节。
windows系统存储数据的方式是低位在前高位在后,所以找到的数据是
00 00 00 40
,所以最终找到的数据是40
,所以最终00000040h就是程序存储32位数据信息的起点,但这并不是程序的入口,不是程序运行的起点。代码存在哪里?
- 数据存在哪里?
- 图1,PE结构
- 图2.第二行文件展开
- 第三行显示0x18,十六进制的18转化为十进制24,所以要从00000040h的下位置开始往后数24个字节。来到00000058h,也就是
0B 01
的位置, 此时应该向右偏移,偏移到第三行展开的位置。找到的程序入口地址0x10 Dword(橙色标记笔位置),十六进制的10转化为10进制是16,从0058h的位置往后数16个字节,来到0068h,因为Dword是4个字节,所以应用和程序的入口点是00 01 10 23
,后面四个字节(0x14 Dword)就是代码的基址(此处的基址并非是游戏调试中寻找的基址,游戏调试中的基址只不过是一个全局变量,这里的基址可以理解为存储程序代码的七点),在往后四个字节(0x18 Dword)就是数据的基址 - 图3.第三行文件展开
赞赏
谁下载
无
赞赏
雪币:
留言: