IDA 技巧(42) 反编译器中的注释

admin 2024年8月15日22:39:05评论41 views字数 729阅读2分25秒阅读模式

注释

当您无法为变量或函数想出一个好的名称时,您可以添加注释,并对所发生的情况进行解释或理论。

伪代码中提供了以下注释类型:

  • 普通行注释:使用 / 添加或编辑它们(很容易记住, C++ 中 // 用于注释)

IDA 技巧(42) 反编译器中的注释

  • 块注释:与反汇编视图中行间注释类似,使用 Ins 快捷方式(Mac 上为 I)。注释添加在当前语句之前(不一定是当前行)。

IDA 技巧(42) 反编译器中的注释

  • 函数注释:当您在函数的第一行使用 / 时,会添加函数注释。
  • IDA 技巧(42) 反编译器中的注释

由于实现的限制,当伪代码更改时,前两种类型可能会移动,甚至最终成为孤立注释。

函数注释附加到函数本身,并且在反汇编视图中也可见。

使用注释,我们可以对上一篇文章中的函数进行注释,以阐明发生了什么。

在下面的屏幕截图中,普通注释以蓝色突出显示,而块注释则以橙色显示。

IDA 技巧(42) 反编译器中的注释

最后,该函数似乎将字节从 a2 复制到 a1,并在第一个零字节处停止。如果您了解 libc,您很快就会意识到它实际上是 strcpy 的一个简单实现。

现在,我们可以将函数和参数重命名为规范名称,并添加函数注释来解释函数的用途。

IDA 技巧(42) 反编译器中的注释

遗憾的是,现有注释不会自动更新,因此必须手动修复对 a1 和 a2 的引用。

空行

为了进一步提高伪代码的可读性,您可以手动或自动添加空行。

对于手动行,请在语句之后或之前按 Enter。

例如,以下是添加了额外空行的相同函数:

IDA 技巧(42) 反编译器中的注释

要删除手动空行,请编辑前面的注释(Mac 上的 Ins 或 I)并从注释中删除空行。

要添加自动空行,请在 hexrays.cfg 中设置 GENERATE_EMPTY_LINES = YES

这将导致反编译器在复合语句之间以及标签之前添加空行。

这提高了长函数或复杂函数的可读性。

例如,这是具有两种设置的同一函数的反编译。

您可以看到,由于额外的间距,第二个读起来更容易。

IDA 技巧(42) 反编译器中的注释

IDA 技巧(42) 反编译器中的注释

原文始发于微信公众号(二进制磨剑):IDA 技巧(42) 反编译器中的注释

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月15日22:39:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   IDA 技巧(42) 反编译器中的注释https://cn-sec.com/archives/3069216.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息