IDA 技巧(66) 反编译器注释

admin 2024年11月4日10:25:15评论8 views字数 772阅读2分34秒阅读模式

当你在反编译器中处理伪代码时,可能会注意到变量声明和提示中有一些内容略显神秘的注释。那么它们是什么意思呢?

IDA 技巧(66) 反编译器注释

Image

虽然有些注释的含义显而易见,但有些则不那么明显,还有一些仅在罕见情况下出现。

变量位置

注释的第一部分是变量的位置。对于栈变量,这包括其相对于栈和帧指针的位置。对于寄存器变量,则是用于存储其值的寄存器。

在某些情况下,你可能还会看到分散的参数位置语法。例如:

struct12 v78; // 0:r2.8,8:^0.4

这表示一个12字节的结构体部分存储在寄存器中(前8个字节,从r2开始),部分存储在栈中(后4个字节,从栈偏移8开始)。

变量属性

在位置之后,可能会有额外的属性以大写关键字形式打印。以下是最常见的可能性:

  • 按引用传递:该变量的地址在当前函数中被获取(例如用于传递给函数调用);
  • 重叠:当反编译器未能将所有变量分开时显示,因此其中一些变量最终存储在交叉位置。通常具有此类变量的函数也会标记有注释:
    // 局部变量分配失败,输出可能错误!
  • 映射目标:另一个变量已被映射到此变量;
  • 强制:这是一个明确强制的变量。
  • 是参数:用于函数参数(在鼠标提示弹出窗口中显示);

用户定义的注释

局部变量也可能有额外的用户定义的注释,可以使用/快捷键或上下文菜单添加:

IDA 技巧(66) 反编译器注释

Image

如果存在,它将在变量注释的末尾打印,位于注释之后。

类型注释

除了局部变量,反编译器还可以在提示中显示以下内容的注释:

  • 结构体和联合体字段。显示偏移量和类型。

    IDA 技巧(66) 反编译器注释

  • 全局变量。仅显示类型。
  • 函数和函数调用。打印参数列表及其位置:

    IDA 技巧(66) 反编译器注释

更多文章

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

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

IDA 技巧(66) 反编译器注释

原文始发于微信公众号(二进制磨剑):IDA 技巧(66) 反编译器注释

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月4日10:25:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   IDA 技巧(66) 反编译器注释https://cn-sec.com/archives/3352062.html

发表评论

匿名网友 填写信息