学习一下这个库,方便脚本好干活
内容辣眼睛,仅为自用
seg000:000000000000005E mov rbx, rsi
seg000:0000000000000061 sub rsp, 8
seg000:0000000000000065 mov rbp, [rsi+r13-8] !!!!!!!光标停留在这里
seg000:000000000000006A mov rdi, rbp
seg000:000000000000006D call sub_1847
seg000:0000000000000072 lea rbp, [rbp+rax+1]
Python>ea = here()
Python>idaapi.decode_insn(ea)
5
Python>idaapi.cmd.Op2.addr
18446744073709551608
Python>addr2 = idaapi.cmd.Op2.addr
Python>hex(addr2)
0xfffffffffffffff8L 这个就是 -8
解读:
我们得到每个指令在一个函数里通过调用 idautils.FuncItems(ea) 。从这里一个新的函数 idaapi.decode_insn(ea)被调用。这个函数获得我们想要解码的指令的地址。一旦它被解码,我们可以通过访问它的 idaapi.cmd 访问指令的不同性质。
延伸
可以帮助我们找到一些重复访问的位移值 。
Python>displace[0x40]
[1609L, 1876L, 2293L]
Python>for x in displace[0x40]:print hex(x),GetDisasm(x)
0x649L mov [rsp+88h+var_40], rax
0x754L mov qword ptr [rax+48h], 38h
0x8f5L mov rsi, [rsp+88h+var_40]