深入解析IDA处理器模块开发:Python处理器示例
1. 栈指针追踪与输出准备
在处理Python代码时,指针的变化仅在函数范围内才具有相关性,而目前我们还没有办法识别Python代码中的函数边界。若要实现栈指针追踪,鉴于Python是基于栈的架构,几乎每条Python指令都会以某种方式修改栈。为简化确定每条指令对栈指针的修改量的过程,可以定义一个数组,为每条Python指令分配一个值,该值表示该指令对栈的修改量。在模拟每条指令时,这些值将用于调用 add_auto_stkpnt2 。
当模拟器添加完所有可能的交叉引用并对数据库进行必要的修改后,就可以开始生成输出了。接下来,我们将探讨输出器在生成IDA反汇编显示中的作用。
2. 输出器概述
输出器的目的是将由 cmd 全局变量指定的单条反汇编指令输出到IDA显示界面。在IDA处理器模块中,输出器通常由 out.cpp 文件中名为 out 的函数实现(你也可以随意命名)。该函数的原型非常简单:
void idaapi out(void); // 输出单条反汇编指令
你必须使用指向输出函数的指针初始化 LPH 对象的 u_out 成员。当调用 out 函数时, cmd 已由分析器初始化。输出函数不应修改数据库。此外,你还需要创建一个辅助函数,其唯一目的是格式化
超级会员免费看
订阅专栏 解锁全文
2060

被折叠的 条评论
为什么被折叠?



