我正在编写一个 Idapython 加载程序脚本,以帮助对具有 68000 处理器的嵌入式系统上的固件进行逆向工程。
不幸的是,我无法获得用于构建 FLIRT 签名的原始 C 编译器的副本,但我想使用 Idapython 向 IDA 提供有关它已完成的一些优化的提示。
举个例子——编译器经常做这样的事情:
MOVEA.L #sub_1234, a4
...
JSR (a4)
优化之处在于,它使用地址寄存器来保存函数的地址,从而在多次调用一个函数时节省了代码空间。
我想我可以弄清楚如何在代码中搜索这些模式——但是我怎么能告诉 IDA “(a4)”真的是对 sub_1234 的引用?