IDA 技巧(83) 反编译器选项:默认基数

admin 2024年12月9日14:27:51评论11 views字数 902阅读3分0秒阅读模式

我们之前已经讨论过主要的伪代码格式选项,但还有一个选项可以影响输出,那就是用于打印伪代码中数字的基数

在位置计数系统中,基数底数是用于表示数字的唯一数字的数量,包括数字零。例如,对于十进制/十进制系统(今天最常用的系统),基数(底数)是十,因为它使用从0到9的十个数字。(来自维基百科)

自动基数

默认的基数设置是0,意味着“自动”。

IDA 技巧(83) 反编译器选项:默认基数

自动基数

在此设置下,反编译器对检测为无符号的值使用十六进制基数,而对其他值使用十进制。例如,在下面的截图中,CContextMenuManager::AddMenu()的参数以十六进制显示,因为函数原型指定最后一个参数类型为“unsigned int”,而LoadStringA()的参数以十进制显示,因为反编译器使用了一个猜测的原型,类型为_DWORD,其行为类似于有符号类型。

IDA 技巧(83) 反编译器选项:默认基数
示例

“好看”的数字

在某些情况下,即使是有符号数字,反编译器也可能使用十六进制,如果这样会使数字看起来“好看”。目前(截至IDA 7.7),使用以下规则:

  1. 匹配2n和2n-1(典型的位掩码)的值以十六进制打印。
  2. 64位值如果高32位不是全零或全一,则以十六进制打印,除非它们在十进制表示中以超过3个零结尾。
  3. -1以十进制打印。

手动更改基数

您可以随时通过上下文菜单或热键更改伪代码中特定数字的表示形式。

IDA 技巧(83) 反编译器选项:默认基数
更改基数

要在十进制和十六进制之间切换,请使用H热键。八进制默认仅通过上下文菜单可用,但可以为动作名称hx:Oct添加自定义热键。

设置首选基数

通过更改反编译器选项中的默认基数,您可以让反编译器始终对所有未明确设置基数的数字使用十进制(10)或十六进制(16)。请注意,在这种情况下,“好看”数字检测将被禁用。

要更改所有新数据库的默认值,请在hexrays.cfg中设置值DEFAULT_RADIX,如上一篇文章中所述。

更多文章

立即关注【二进制磨剑】公众号

👉👉👉【IDA 技巧合集】👈👈👈
👉👉👉【Github 安全项目合集】👈👈👈
学习零基础学习 IDA 逆向
【课程完结!内容揭秘!】7 天打造 IDA 9.0 大师:从零基础到逆向精英
知识星球🪐
IDA 技巧(83) 反编译器选项:默认基数

原文始发于微信公众号(二进制磨剑):IDA 技巧(83) 反编译器选项:默认基数

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

发表评论

匿名网友 填写信息