我正在使用 Capstone 引擎开发 ELF 反汇编程序。我已经实现了一个线性扫描算法作为最基本的版本。
我的目标是现在实现递归遍历。
考虑一些反汇编(它做什么并不重要):
0x4005b6: xor ebx, ebx
0x4005b8: nop dword ptr [rax + rax]
0x4005c0: mov rdx, r13
0x4005c3: mov rsi, r14
0x4005c6: mov edi, r15d
0x4005c9: call qword ptr [r12 + rbx*8]
0x4005cd: add rbx, 1
0x4005d1: cmp rbx, rbp
使用递归遍历,我认为不可能反汇编下面地址处的内容(或任何以指针为目标的分支指令)是否正确?
0x4005c9: call qword ptr [r12 + rbx*8]
ps 如果它有任何意义,则 r12 的值计算为
0x40058b: lea r12, qword ptr [rip + 0x20087e]
rip 和 r12 寄存器在被剪断的代码所属的更广泛的反汇编中没有被引用。
谢谢