arm v8.3版本以上加入了point auth code这种指令比如pacia retaa,很可惜,大多数反编译器无法编译,甚至你在跑qemu的时候如果qemu的版本太低也会报错。
之前使用ghidra 9.1.2的时候能够编译成功,但是9.2以上的时候就不行了。
事实上我们在ghidra_9.2.1_PUBLIC/Ghidra/Processors/AARCH64/data/languages/AARCH64.pspec里面可以找到这一段代码和注释:
1 | <context_data> |
把里面的ShowPAC和PAC_clobber改成1重启就可以了,注释里还提到可以使用右键的set register value来设置context register也就是伪寄存器来临时修改这个flag,但是我总是报错,不知道为什么。
总之无论什么方法,修改了这个反编译的flag之后就能够成功实现对pacia指令对反编译。

参考:https://github.com/NationalSecurityAgency/ghidra/issues/2488
说些什么吧!