IDA技巧(104)立即数搜索

admin 2025年1月26日12:28:01评论26 views字数 992阅读3分18秒阅读模式

立即数搜索是IDA中三种主要搜索类型之一。虽然不太为人所知,但在某些情况下非常有用。以下是一些例子。

独特(魔法)常量

如果你知道程序中使用的一些独特常量,寻找它们可以让你缩小需要分析的代码范围。例如,如果程序报告一个数值错误代码,你可以寻找它以找到可能返回该错误的位置。

RISC处理器中未发现的交叉引用

许多RISC处理器使用固定宽度的指令,这使得在指令中编码完整地址值的空间不足。因此,它们不得不通过小片段构建地址值。例如,在SPARC中,加载一个32位值必须作为一对指令来完成:

ounter(lineounter(linesethi %hi(Prompt),%o1or%o1,%lo(Prompt),%o1

其中%hi返回值的高22位,%lo返回低10位。由于这样的指令可能不会紧挨在一起,IDA可能无法“连接”它们并恢复完整的32位值,导致缺失的交叉引用。因此,如果你有一个位于地址N的字符串常量,并认为它应该从某处被引用,进行N&0x3FF的立即数搜索应该会生成一份可能引用该地址的指令候选列表。

结构字段引用

有时你可能有一个在特定偏移量上具有相当独特字段的结构(不是一个小或整值),并希望找到它在程序中的使用位置。例如,让我们看看最近的Windows内核和结构_KPRCB。在偏移量63Eh处,它有一个字段每物理处理器核心数:

IDA技巧(104)立即数搜索

如何找到它的使用位置?搜索值0x63e会给出使用该值的指令列表。

IDA技巧(104)立即数搜索
IDA技巧(104)立即数搜索

然后你可以检查这些指令,看看它们是否确实引用了_KPRCB字段而不是其他东西。

这可能是立即数搜索的最佳用途之一,但它不能替代手动分析。例如:

  1. 它可能会错过不直接使用该值而是通过某种方式计算的引用;
  2. 可能会出现误报,特别是对于常见或小值;
  3. 该字段可能通过更大的包含结构间接引用(例如,_KPCR包含_KPRCB作为成员,因此来自_KPCR的引用将有一个额外的偏移量)。

学习资源

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

👉👉👉【IDA 技巧合集】👈👈👈
👉👉👉【Github 安全项目合集】👈👈👈
零基础学习 IDA 逆向
【课程完结!内容揭秘!】7 天打造 IDA 9.0 大师:从零基础到逆向精英
🔥🔥🔥 第二期 Android 内核逆向🔥🔥🔥🔥
【课程完结!内容揭秘】第 2 期-Android 逆向内核攻防
🔥🔥🔥 第三期 程序混淆十讲🔥🔥🔥🔥
【课程】第 3 期-程序混淆十讲【早鸟报名开启】

原文始发于微信公众号(二进制磨剑):IDA技巧(104)立即数搜索

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

发表评论

匿名网友 填写信息