IDA Pro 参数地址

逆向工程 艾达 反汇编者
2021-06-28 13:43:52

我是逆向工程的新手,我试图理解这篇博文:

http://0x0atang.github.io/reversing/2015/09/17/flareon2-concolic.html

有一次,作者在查看他想使用符号执行运行的函数的参数时说了以下内容:

让我们放大并了解有关函数 sub_401084 的更多信息。它需要三个参数,即(1)地址到 0x4010E4 处的字节缓冲区,这大概是验证的参考密钥,(2)地址到 0x402159 处的用户输入缓冲区,以及(3)提供的用户密码的长度到程序。

我的问题是,他如何找出 3 个参数的地址?在 IDA pro 中,您只有具有相对于 EBP 的偏移量的堆栈视图。我试图做这个计算,但我没有得到他的价值。谁能告诉我应该如何推理?谢谢!

1个回答

他可能没有:可执行文件被打包,ASLR 被禁用,重定位被剥离。这意味着两个地址参数0x4010E40x402159固定。

在此处输入图片说明

有重大后果,因为:

  • 第一个参数0x4010E4sub_401000sub_401084调用者)返回地址!由于 ASLR 被禁用,这是一个常数。你可以在这里看到:

在此处输入图片说明

  • 第二个参数0x402159是二进制.data段中的静态缓冲区由于重定位被剥离,这也是一个常数。

在一般情况下(ASLR + reloc),它要复杂得多。关于 Idapython 中的提取函数 args一个很好的 SO/RE 问题,然后必须将其与angr内存状态粘合才能正常工作。