1、IDA
作为最常用的逆向分析工具之一,IDA自然是对AVR架构有所支持,然而对于AVR架构的分析并不像常见的x86、ARM那样方便,它并没有AVR的decompiler,也就是说不能将汇编代码反编译为c代码。另外,还有几个致命问题:
无法识别指令长度
指令的地址全部是依次+1的,这就导致我们无法从IDA中得到正确的指令地址。
数据段识别错误
我们知道,在AVR架构上,数据和指令是独立寻址的,而IDA仍然按照统一寻址的方式识别,导致对数据的访问都被识别成了代码地址
2、radare2
radare2是基于命令行的逆向分析框架,但支持在命令行下进行图形操作,如查看控制流图等,可以做到对二进制文件的反汇编、模拟运行、修改等。它对于AVR架构的分析就比IDA要完善许多,不会出现IDA的上述问题。
3、simavr
simavr是一个linux下的avr架构模拟执行工具,它提供了用于模拟执行的二进制文件,同时它也是一个c++库,你可以利用他编写自己需要的工具。例如它提供的simavr二进制文件就不支持uart串口输入,只能把输出打印在控制台,那么你可以模仿它的范例代码,将uart串口绑定到系统的/dev/pts/*终端上,再利用串口工具进行交互操作。