IDA 技巧 (34)Dummy names

admin 2024年7月31日12:55:08评论16 views字数 1131阅读3分46秒阅读模式

在 IDA 的反汇编中,您可能经常观察到乍一看奇怪且神秘的名称:sub_73906D75、loc_40721B、off_40A27C 等等。

在 IDA 的术语中,它们被称为虚拟名称。

当汇编语法需要名称但没有合适的可用名称时,例如输入文件没有调试信息(即它已被删除),或者引用调试信息中不存在的位置时,将使用它们。

这些名称实际上并不存储在数据库中,而是由 IDA 在打印列表时动态生成。

虚拟名称前缀

虚拟名称由类型相关的前缀和通常与地址相关的唯一后缀组成。

IDA 中使用以下前缀:

  • sub_,指令,子程序(函数)开始
  • locret_,返回指令
  • loc_,指令,其他类型的指令
  • off_,数据,包含一个偏移(指针)值
  • seg_,数据,包含段地址值
  • asc_, 数据,字符串文字的开头
  • byte_,数据,1 字节
  • word_,数据,2 字节,16 位
  • dword_,数据,4 字节,32 位
  • qword_,数据,8 字节,64 位
  • byte3_,数据,3 字节
  • xmmword_,数据,128 位
  • ymmword_,数据,256 位
  • packreal_,数据,packed real
  • flt_,浮点数据,32 位
  • dbl_,浮点数据,64 位
  • tbyte_,浮点数据,80 位
  • stru_,结构体
  • custdata_,自定义数据类型
  • algn_,对齐指令
  • unk_,未探索(未定义、未知)字节

由于 IDA 以特殊方式处理前缀,因此它们是保留的,不能在用户定义的名称中使用。

如果您尝试使用这样的名称,您会从 IDA 收到错误:

IDA 技巧 (34)Dummy names

警告:无法重命名字节,因为该名称具有保留的前缀

一种可能的解决方法是在开头添加下划线,以便前缀不同。

但如果您想删除现有名称并让 IDA 再次使用虚拟名称,只需将其删除(重命名为空字符串)即可。

名称后缀

默认后缀是虚拟名称所附加的项目的线性(也称为有效)地址。

然而,这并不是唯一的可能性。

通过使用“选项”>“名称表示...”对话框,您可以选择不同的内容。

IDA 技巧 (34)Dummy names

虚拟名称表示对话框

前半部分的选项在处理分段程序(例如 16 位 DOS 软件)时特别有用;您可以看到段及其内部的偏移量,而不是全局线性地址。

因此,例如,当目标位于另一个段中时,它是显而易见的。

IDA 技巧 (34)Dummy names

DOS 程序使用“段名称和距段基址的偏移量”表示。

其他前缀

除了虚拟名称之外,IDA 中还使用其他两种自动生成的名称:

  • 堆栈变量 (var_) 和参数 (arg_)。
  • 从文本生成的字符串文字名称(例如“Exception”的 aException)

堆栈前缀是硬编码的且不可配置,但后者可以在“选项”>“常规...”的“字符串”选项卡中进行配置。

IDA 技巧 (34)Dummy names

与虚拟名称不同,这些名称存储在标记为自动生成的数据库中,因此它们的前缀不被视为保留,您可以在自定义名称中使用它们。

原文始发于微信公众号(二进制磨剑):IDA 技巧 (34)Dummy names

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

发表评论

匿名网友 填写信息