【发布时间】:2014-03-17 01:53:45
【问题描述】:
我使用 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 实际上是一个外部变量?那么 delete the declaration 和 extern 声明这个变量的正确方法是什么?如果是这样,那么这个变量的名称是什么?我不认为它是 aKernel32_dll_0,因为它看起来像是 IDA Pro 生成的随机名称。
谁能帮帮我?谢谢!
【问题讨论】:
标签: winapi assembly reverse-engineering ida kernel32