我尝试对应用程序进行逆向工程,但遇到了我不明白的问题。我有以下反汇编代码gdb
:
│0x7ffff76f7e4b <_ZN16CRRegistratorImp8RegisterEbPv+587> je 0x7ffff76f7ce6 <_ZN16CRRegistratorImp8RegisterEbPv+230> │
│0x7ffff76f7e51 <_ZN16CRRegistratorImp8RegisterEbPv+593> mov rdi,QWORD PTR [rbp+0x10] │
│0x7ffff76f7e55 <_ZN16CRRegistratorImp8RegisterEbPv+597> mov rax,QWORD PTR [rdi] │
│0x7ffff76f7e58 <_ZN16CRRegistratorImp8RegisterEbPv+600> call QWORD PTR [rax+0x30] │
│0x7ffff76f7e5b <_ZN16CRRegistratorImp8RegisterEbPv+603> test al,al │
│0x7ffff76f7e5d <_ZN16CRRegistratorImp8RegisterEbPv+605> je 0x7ffff76f7ce6 <_ZN16CRRegistratorImp8RegisterEbPv+230> │
│0x7ffff76f7e63 <_ZN16CRRegistratorImp8RegisterEbPv+611> jmp 0x7ffff76f7d29 <_ZN16CRRegistratorImp8RegisterEbPv+297>
│0x7ffff76f7e68 <_ZN16CRRegistratorImp8RegisterEbPv+616> xor edx,edx │
│0x7ffff76f7e6a <_ZN16CRRegistratorImp8RegisterEbPv+618> mov rsi,r12 │
│0x7ffff76f7e6d <_ZN16CRRegistratorImp8RegisterEbPv+621> mov rdi,rbp │
│0x7ffff76f7e70 <_ZN16CRRegistratorImp8RegisterEbPv+624> call 0x7ffff7596518 <_Z18CallRegGuiCallbackP13CRRegistratorPv13ERegGUIAction@plt> │
│0x7ffff76f7e75 <_ZN16CRRegistratorImp8RegisterEbPv+629> jmp 0x7ffff76f7e41 <_ZN16CRRegistratorImp8RegisterEbPv+577> │
│0x7ffff76f7e77 <_ZN16CRRegistratorImp8RegisterEbPv+631> mov edx,0x4 │
│0x7ffff76f7e7c <_ZN16CRRegistratorImp8RegisterEbPv+636> mov rsi,r12 │
│0x7ffff76f7e7f <_ZN16CRRegistratorImp8RegisterEbPv+639> mov rdi,rbp │
│0x7ffff76f7e82 <_ZN16CRRegistratorImp8RegisterEbPv+642> call 0x7ffff7596518 <_Z18CallRegGuiCallbackP13CRRegistratorPv13ERegGUIAction@plt>
这不是整个过程,但我认为没有必要。我想知道的是,如何到达地址0x7ffff76f7e68
(+616
)。我在想,在这个过程中的某个地方,我会找到类似这样的指令:
jmp 0x7ffff76f7e68 <_ZN16CRRegistratorImp8RegisterEbPv+616>
但是在这个过程中没有这样的指令,它不可能到达那里,因为在地址上+611
有jmp
指令。所以我有以下问题:
- 是死代码吗?
是否可以
+616
从其他程序直接跳转到这个特定地址()?还有其他方法可以到达这个地址吗?