地图文件如下所示:
0002:000442e4 00000118H .idata$2 DATA
0002:000443fc 00000014H .idata$3 DATA
0002:00044410 00000b7cH .idata$4 DATA
0002:00044f8c 0000512eH .idata$6 DATA
0002:0004a0ba 00000000H .edata DATA
崩溃信息如下所示:
Application Error : The instruction at "0x00458ae1" referenced memory at "0x00000074". The memory could not be "read".
我试图在下一次崩溃时获取堆栈转储,但在我看来,这是我们击败堆栈然后返回的情况,这使我们最终执行数据。
不过我并不完全确定,因为我读过一些这样的文章:Under the Hood Article似乎表明这是一个导入方法名称的区域
导入库为导入的 API 提供的数据保存在几个名称都以 .idata 开头的部分中(例如,.idata$4、.idata$5 和 .idata$6)。.idata$5 部分包含一个 DWORD,当可执行文件加载时,它包含导入函数的地址。.idata$6 部分(如果存在)包含导入函数的名称。当将可执行文件加载到内存中时,Win32 加载程序使用此字符串有效地调用导入函数的 GetProcAddress。
没有堆栈回溯,我有点卡住了。我是否以错误的方式看待这次崩溃?