基于IDA7.2的STM8处理器插件编写

一、创建代码工程

创建一个生成动态库的空工程。

工程属性配置

1、  配置体调试信息

将D:Program FilesIDA 7.2ida64.exe添加到配置属性命令(注*此处配置是为了调试方便)

 基于IDA7.2的STM8处理器插件编写

2、添加SDK路径

将IDASDK 的include、module的路径添加到配置属性C/C++常规附加包含目录

$(ProjectDir)idasdk72include

$(ProjectDir)idasdk72module

 基于IDA7.2的STM8处理器插件编写

3、配置预处理器定义

将__NT__、_DEBUG、_CONSOLE加到配置属性C/C++预处理器预处理器定义

 基于IDA7.2的STM8处理器插件编写

4、配置输出路径和依赖库路径

4.1将D:Program FilesIDA 7.2procs$(TargetName)64$(TargetExt)添加到配置属性链接器常规输出文件(注*:此处目的是将生成的DLL直接输出大IDA安装目录,方便调试)

4.2将$(ProjectDir)idasdk72libx64_win_vc_32添加到配置属性链接器常规附加库目录(该处的路径选择根据你电脑的系统属性来选择)

 基于IDA7.2的STM8处理器插件编写

5、添加依赖库

将ida.lib添加到配置属性链接器输入附加依赖项

 基于IDA7.2的STM8处理器插件编写

6、从IDASDKmodule目录下找出于要编写的处理器类似的代码文件即可创建好的工程如下

 基于IDA7.2的STM8处理器插件编写

 

二、IDA指令解析流程

分析(Ana)

在notify_ana(self, insn)中,需要做的是读取数据并解析成指令。根据opcode找到对应的指令,读取并设置好指令的参数与属性。其中insn为一个insn_t类型的变量,即为要设置的指令对象。调用insn.get_next_byte()系列方法可以获取到当前的数据,也就是下一步要解析的指令或操作数。设置insn的itype属性为指令的itype,根据操作数数量设置insn.Op1及insn.Op2的系列属性如type(操作数类型):o_imm(立即数)/o_reg(寄存器)/o_mem(内存)……、dtype(操作数大小):dt_byte/dt_word/dt_dword和value(操作数的值),在不需要调试的情况下主要需要更改的代码区即为分析。

模拟(Emu)

体现在notify_emu(self)中,用于设置数据与代码之间的关系,例如当前指令执行完毕后如果顺序执行下一条指令就要通过add_cref(insn.ea, insn.ea + insn.size, fl_F)来告诉ida这条指令的下一条在哪。其中第一个参数为出发点,多数时候为当前指令地址,第二个参数为将跳到的地址,第三个参数有可能为 fl_F(顺序),fl_JN/fl_JF(跳转)以及fl_CN/fl_CF(调用)。以及使用add_dref(op.addr, op.offb, dr_O)类似指令来添加数据的引用信息。如果有对栈数据的分析也在模拟过程中处理,可参考ebc.py中emu回调所调用的trace_sp方法。再笔者的理解中,除了个别情况,大多数修改ida数据库中数据的操作都在模拟部分进行。

输出(output)

体现在notify_out_operand(self, ctx, op)与notify_out_insn(self, ctx)两个方法。notify_out_operand用来输出参数,notify_out_insn用来输出指令。注释中特意指出在这两个方法中不应该有任何操作数据库,修改标志位等操作。笔者认为与output操作执行次数较多有关。

 三、使用方法

      1、将.cfg文件拷贝到IDA安装目录下的cfg文件夹下

      2、将.dll文件拷贝到IDA安装目录下的procs文件夹下

       在次打开IDA,在处理器选择界面出现下图所示一栏选择即加载成功

基于IDA7.2的STM8处理器插件编写

Stm8

 

原文链接: https://www.cnblogs.com/chenshikun/p/13373671.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    基于IDA7.2的STM8处理器插件编写

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/200789

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午8:33
下一篇 2023年2月12日 下午8:34

相关推荐