我使用 IDA Pro 在 Windows 7 32 位上反汇编 SPEC 2006 二进制文件。
它生成一个声明如下的变量:
aKernel32_dll_0 unicode 0, <KERNEL32.DLL>,0
在 .text 部分,我发现这个变量的用法是这样的:
push offset aKernel32_dll_0
call ds:__imp__GetModuleHandleW@4
......
我想要做的是让这些代码/数据重新组合。
所以我的问题是:
所以基本上像**aKernel32_dll_0 unicode 0, ,0 **这样的声明不能被masm/nasm直接重新组装,我应该如何调整呢?
我只是将它调整为aKernel32_dll_0 dd 0,代码是这样的:
每次 调用 ds:__imp__GetModuleHandleW@4后都会遇到奇怪的情况
与使用 Ollydbg 的原始二进制文件进行比较:
所以看起来 aKernel32_dll_0 实际上是一个外部变量?那么正确的方法是 删除声明并extern声明这个变量吗?如果是这样,那么这个变量的名称是什么?我不认为它是 aKernel32_dll_0,因为它看起来像是由 IDA Pro 生成的随机名称。
谁能给我一些帮助?谢谢!