我是一个初学者,所以请耐心等待,因为我无法通过 Google 找到答案(到目前为止我注意到的 Ghidra 工作中很常见)。
我有一个看起来像是构造函数的函数。但是我在做什么时遇到了麻烦,主要是因为我认为我不太了解 C 语言。
我很困惑的代码是这样的:
代码为C:
代码为 ASM:
抱歉使用截图,我无法让 ASM 合理地复制和粘贴到这里。
*param_1
, 设置为特定地址。变量前面的 * 是什么意思,除了有人说“你不应该在 C 代码中这样做!”之外我真的找不到。
然后它开始做的是将数组或结构中的一些变量清零,这些变量param_1
现在显然是(通过 ASM,param_1 == ECX
所以可能_this_
?)其余的现在似乎无关紧要。
什么在0x497e68
?它是一个地址,然后指向位于 的另一位代码0x438170
。虽然这个0x497e68
地址被引用了 4 次,但它们都以类似的方式进行,因此我从未看到对这种间接方法的直接“调用”。该方法本身只是在 ECX 上调用 _free。这并不特别。
那么这里发生了什么?关于为什么会发生这种情况,是否有合理的解释?我实际上应该在这里阅读什么?如果是这样,那么我是否可以说服 Ghidra 以更明智的方式呈现这一点?