Hex-Rays 反编译器的默认输出在简洁性和可读性之间寻求平衡。然而,每个人的偏好不同,因此它提供了一些选项来控制伪代码的布局和格式。
访问选项
由于其作为 IDA 第三方插件的起源,反编译器选项不是通过 IDA 的“选项”菜单访问,而是通过“编辑 > 插件 > Hex-Rays 反编译器,选项”按钮访问。
伪代码格式化选项
格式化选项在选项对话框的主页面上可用。
-
注释缩进:常规(行尾)注释的起始位置。显然,对于较长的行,注释会向右移动。块注释与其附加的语句对齐,因此此设置不适用于它们。
-
块缩进:嵌套语句的缩进,例如在
if
语句或for
/do
/while
循环体内。 -
右边距:反编译器尝试将伪代码行长度保持在指定长度以下。例如,它会尝试通过将带有多个参数的函数调用拆分到单独的行上来实现:
-
最大字符串常量长度:伪代码中直接显示的字符串常量的最大长度。超过此值的常量将被替换为引用它的名称。
最大逗号数:反编译器在一个表达式中可以使用多少个逗号运算符以使代码更紧凑。通过减少此值,您应该会看到更简单的表达式,但代价是更多的代码行:更多/更深的嵌套 if
语句、中间结果的额外变量,甚至是额外的 goto
语句。
将最大逗号数更改为 1 后,逗号消失,但代价是增加了 if
和 goto
语句:
更改默认设置
通过使用上述 UI 从 IDA 内部更改设置时,它们仅适用于当前数据库。要更改所有新数据库的默认设置,可以编辑 IDA 安装目录中的 cfg/hexrays.cfg
,或在用户目录中创建一个包含您想要覆盖的选项的文件
更多文章
立即关注【二进制磨剑】公众号
原文始发于微信公众号(二进制磨剑):IDA 技巧(82) 反编译器选项:伪代码格式化【文末抽奖】
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论