idapython杂记

学习一下这个库,方便脚本好干活
内容辣眼睛,仅为自用

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]

猜你喜欢

转载自blog.csdn.net/m0_37329910/article/details/86487685