【发布时间】:2017-12-31 06:07:16
【问题描述】:
使用 IDA Pro 分析文件,我遇到了一些我不太明白的代码:
mov eax, ss:dword_410CC5[ebp] ;
call eax; Indirect Call Near Proc
转到这个地址 - 410CC5 - 我看到了:
ile.........Clos
eHandle.........
我假设在 EAX 的第一个代码 sn-p 中存储了库函数的名称,然后由
call eax; Indirect Call Near Proc
但问题是地址 410CC5 与此名称不完全对应(见附件)。在这个地址实际上只是零。
这是否意味着在
call eax; Indirect Call Near Proc
我们调用 CloseHandle?如果是这样,那么为什么没有将正确的地址传递给 EAX?
【问题讨论】:
-
dword_410CC5[ebp]不是绝对地址410CC5,应该加上ebp的值。这只是[ebp+410CC5]的愚蠢语法。此外,call eax不会按名称调用函数。 -
当然,在第一行代码中,缺少
MOV指令? -
是的,很抱歉。已更正
-
您正在查看模块的 IAT(导入地址表)。虽然 EBP 通常寻址堆栈帧,但它确实在高度优化的代码中用作通用寄存器。有可能它只是调用一个导入的函数。还告诉您,您将很难到达某个地方,优化的代码很难进行逆向工程。
标签: assembly x86 reverse-engineering ida