我认为可以检查所属的外部参照类型。但是,有几种不同的类型:
Code_Near_Jump
Code_Far_Jump
但Data_Read
(用于间接跳转)。这种方法对我来说看起来很复杂,并不十分可靠。对于
call
指令,有idaapi.is_call_insn(addr)
。跳跃有类似的东西吗? #1 楼
有关想法,请参见https://github.com/trailofbits/mcsema/blob/master/tools/mcsema_disass/ida/get_cfg.py这里是如何获取入口点操作码助记符的示例:
import idaapi
import idautils
ea = idaapi.get_screen_ea() // Gets the entrypoint VA
idautils.DecodeInstruction(ea).get_canon_mnem() // e.g. push or jne
我最近使用过该技术,请检查示例工作。
然后您可以使用所使用的位的常量的常量,例如,
/www.hex-rays.com/products/ida/support/idapython_docs/
评论
您在其他平台上尝试过吗?我只是在MIPS上尝试过,但是没有用。如果看一下SDK,这些常量似乎是特定于Intel的。
–TMR232
15年6月29日在15:53
我没有,但是我认为你是正确的。请参阅此参考以获取受支持的ida处理器hex-rays.com/products/ida/support/idadoc/618.shtml MIPS所需的常量在此处hex-rays.com/products/ida/support/idapython_docs egMIPS_null = 0 MIPS_add = 1 MIPS_addu = 2
–JoeKir
15年7月16日在0:13
可悲的是,似乎唯一的方法是检测跳转外部参照。我需要检查,但是我认为当跳转到不存在的地址时可能会出现问题。检查后将更新。
–TMR232
15年7月16日在19:23