IDA技巧(110)自相对偏移量

admin 2025年2月11日16:28:11评论14 views字数 713阅读2分22秒阅读模式

我们之前讨论过偏移量与基址。在位置无关代码中,常常使用一种偏移量的变体,通过一个小技巧可以轻松处理。

让我们来看一个来自ARM32固件的ARM函数:

IDA将地址88和8C处的值转换为偏移量,因为它们恰好是有效地址,但如果你查看代码的操作(我已添加注释描述发生的情况),我们会看到这两个值都被加到它们加载的地址(0x88)上,即它们是相对于它们自身位置的(或自相对的)。

要获得它们所指的最终值,我们可以使用操作“编辑 > 操作数类型 > 偏移量 > 偏移量(用户定义)”(快捷键CtrlR),并输入基址为地址值(0x88),或者对于地址00000088的值,使用IDC关键字here,它会扩展为光标下的地址。

IDA技巧(110)自相对偏移量

IDA计算最终地址并用一个使用特殊符号.表达式替换该值,该符号表示ARM上的当前地址:

对于地址0000008C的值,here不起作用,因为它扩展为0x8c,而加数是0x88。我们可以使用以下几种选项:

  1. 使用实际值0x88作为基址
  2. 使用表达式here-4,它解析为0x88。
  3. 使用here,但在目标增量字段中指定4。
IDA技巧(110)自相对偏移量

IDA将使用增量作为表达式的附加调整:

现在我们可以看到函数实际使用的地址并进一步分析。

学习资源

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

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

原文始发于微信公众号(二进制磨剑):IDA技巧(110)自相对偏移量

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

发表评论

匿名网友 填写信息