两个参数压入堆栈,被调用方只显示一个参数

逆向工程 拆卸 雷达2 争论
2021-07-02 21:27:18

我发现自己在反转一些程序时感到困惑(特别是 IOLI Crackme 挑战)。我可以轻松解决它们,但我遇到了一些我不明白的问题,这让我很恼火。

在本例中,我有一个对sub_80484B4的函数调用来电者是sub_8048542它推送到堆栈上的值,(arg_4num)。但是,正如您在sub_80484B4的反汇编中所见,它仅显示一个参数arg_4

发生了什么事NUMIda 只是说arg_4只是因为在被调用者中没有引用num 的值吗?

我使用 Radare2,它显示了同样的事情。我错过了什么还是工具只是在简化?

调用者将两个值压入堆栈Callee 显示一个参数

2个回答

是的,反汇编器不包括它,因为[ebp+8]在过程中的任何地方都没有引用

然而,sub_80484B4 处的函数确实在 eax 中返回其值,因此推动可能是保留 eax 的原始值。从反汇编中可以看到的内容也没有使用。在那种情况下可能没有经过优化编译