看过Python灰帽子的密友都知道IDAPython在逆向的场景中常常能够发挥出巨大的威力,笔者偶然一次在逆向的过程中使用了它,下面就来总结一下使用的方法和一些注意事项:
环境:IDA 6.1 ,android 2.3 AVD。
我这个IDAPython的版本是:
--------------------------------------------------------------------------------------
Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)]
IDAPython v1.5.2 final (serial 0) (c) The IDAPython Team [email protected]
--------------------------------------------------------------------------------------
下载这个包
安装方法:
1)解压压缩包
2)将python.plw,python.p64复制到IDA的插件目录plugins下。
3)将python的目录拷贝到IDA的主目录中。
如果安装成功,在启动IDA后,输出面板会有如上的输出。
安装好了以后,我的只有一个Python command... 命令项,并没有Python file...项
应用:
from idaapi import *
from idc import *
count = 0
class DumpHook(DBG_Hooks):
def dbg_bpt (self,tid,ea):
global count
count += 1;
print "[*] Hit: 0x%08x the %d time\n" % (ea, count)
data = "\xBE\x91\x0A\xF3\x9A\x26\xA4\xA9\x92\xC6\xFD\x01\xA1\x43\xED\x19"
dbg_write_memory(GetRegValue("r7"), data)
return 1
try:
if debugger:
print("Removing previous hook ...")
debugger.unhook()
except:
pass
AddBpt (0x8050a42e)
SetBptAttr(0x8050a42e, BPTATTR_FLAGS, BPT_ENABLED|BPT_TRACE)
print "[*] set hook OK...\n"
debugger = DumpHook()
debugger.hook()
关于里面的函数,可以去查看IDA主目录下python文件夹里的idc.py和idaapi.py,里面有对各个函数的详细说明。
注意:python脚本从python command...里输入,而不是作为一个文件从script file...里输入