IDA 7.0 - 将汇编指令序列组合成一个宏
逆向工程
艾达
蟒蛇
x86-64
ida插件
2021-07-03 13:21:38
1个回答
好的,把这个正式化(因为我现在有一些时间来输入一个实际的答案)。
的add_hidden_range()
IDC的功能和相同的名称的SDK函数(bytes.hpp
)可以被用于该目的。(但是,我几乎可以肯定当时我使用了另一个函数。)
update_hidden_range()
也可能感兴趣(见上面的链接)。
几年前我用它来编写 IDC 脚本时(IDAPython 当时没有随 IDA 一起提供),我用它来隐藏我正在寻找的某些(已检查的)Windows 二进制文件中某些重复调试打印和断言功能的代码在。为此,我使用了灰色并用装配式注释(;
前缀)替换了整个隐藏范围。然后,注释将包含它隐藏的调试打印或断言的伪代码。这有助于使反汇编更清晰,便于阅读。
除了找到功能和最初暴露它的 IDC 函数之外,最大的挑战是寻找围绕已知函数调用的外部参照位置的操作码,并确保我没有隐藏一些散布的操作码。所以基本上我确保脚本会在遇到意外操作码与预期操作码穿插在一起的实例时详细输出,显示 EA,然后可以在日志窗格中双击它以查看这些(在我的情况下很少见)手动实例。
其中,该技术被证明有用的其他实例是众所周知的内联函数(想memmove
,memcpy
和朋友)。模式重复,通过隐藏操作码并用有意义的伪代码替换它们,您可以大大加快阅读反汇编的速度(即使没有反编译插件)。