这个 *param_1 发生了什么?

逆向工程 x86 C 吉德拉 局部变量
2021-07-11 01:33:05

我是一个初学者,所以请耐心等待,因为我无法通过 Google 找到答案(到目前为止我注意到的 Ghidra 工作中很常见)。

我有一个看起来像是构造函数的函数。但是我在做什么时遇到了麻烦,主要是因为我认为我不太了解 C 语言。

我很困惑的代码是这样的:

代码为C:

代码为 C

代码为 ASM:

代码为 ASM

抱歉使用截图,我无法让 ASM 合理地复制和粘贴到这里。

*param_1, 设置为特定地址。变量前面的 * 是什么意思,除了有人说“你不应该在 C 代码中这样做!”之外我真的找不到。

然后它开始做的是将数组或结构中的一些变量清零,这些变量param_1现在显然是(通过 ASM,param_1 == ECX所以可能_this_?)其余的现在似乎无关紧要。

什么在0x497e68它是一个地址,然后指向位于 的另一位代码0x438170虽然这个0x497e68地址被引用了 4 次,但它们都以类似的方式进行,因此我从未看到对这种间接方法的直接“调用”。该方法本身只是在 ECX 上调用 _free。这并不特别。

那么这里发生了什么?关于为什么会发生这种情况,是否有合理的解释?我实际上应该在这里阅读什么?如果是这样,那么我是否可以说服 Ghidra 以更明智的方式呈现这一点?

0个回答
没有发现任何回复~