在linux内核⾥⾯有很多脚本⼯具,位于linux/scripts/。⾥⾯有⼀个decodecode⼯具可以⽤来转换机器码,⽤法如下: ⽐如在arm64机器上有⼀⾏armv8的机器码:f2a800e8,将其翻译成汇编。
:$ echo "Code: f2 a8 00 e8" > code
:$ ./decodecode < code
Code starting with the faulting instruction
===========================================
0: f2a800e8 movk x8, #0x4007, lsl #16
注意指令字节之间留⼀个空格,以“Code:"作为起始,当然这个起始标记⼀个⽂件只需⼀个即可, ⽐如: Code: e8 00 a8 f2 08 00 98 f2 a9 54 eb d2 a9 54 cb f2 a9 54 ab f2 a9 54 8b f2 09 25 81 a8 1f 01 01 eb
cb ff ff 54 eb ff ff 17 cc 3e 00 00 00 00 00 00 e5 03当然脚本认为该机器码是跟host结构相同的原⽣机器码,想要跨架构的翻译还是不⾏的。
>代码转换