IDApython的学习
IDApython的学习
我的IDA情况:IDA7.7,idapython3.8
这个可以作为文件导入和命令行内输入,我一般习惯命令行
这里要注意是python不是IDC
访问原数据
idc.get_wide_byte(ea) // 获取单字节,按整形解释
idc.get_wide_word(ea) // 获取双字节,按整形解释
idc.get_wide_dword(ea) // 获取四字节,按整形解释
idc.get_qword(ea) // 获取八字节,按整形解释
idc.GetFloat(ea) //获取四字节,按浮点解释
idc.GetDouble(ea)//获取八字节,按浮点解释
idc.get_bytes(ea,size) // 在ea获取size字节,按byte解释
idc.get_wide_byte(ea)
从ea获取一个字节,以整形的形式返回
idc.get_wide_word(ea)
从ea获取2个字节,以整形的形式返回,这里 为了方便大家看,我把整形转为16进制
这里注意小端序
idc.get_wide_dword(ea)
从ea获取4个字节,以整形的形式返回
idc.get_qword(ea)
从ea获取8个字节,以整形的形式返回
idc.GetFloat(ea)
从ea获取4个字节,以浮点的形式返回
idc.GetDouble(ea)
从ea获取8个字节,以浮点的形式返回
idc.get_bytes(ea,size)
在ea获取size字节,按byte解释
数据打补丁
一般和获取原数据的api配合使用
idc.patch_byte(ea, value)
idc.patch_word(ea, value)
idc.patch_dword(ea, value)
idc.patch_qword(ea, value)
idc.patch_byte(ea, value)
下面就不一一演示了。
汇编获取
idc.GetDisasm(ea)//获取ea的汇编指令 比如 mov rbp, rsp
idc.print_insn_mnem(ea)//获取ea的汇编指令的名字,比如mov
idc.print_operand(ea,0)
//获取操作数的文本表示形式
指令(或数据)的线性地址
N -操作数个数:
0 -第一个操作数
1 -第二个操作数
返回:操作数的当前文本表示形式
比如 rbp,同理idc.print_operand(ea,1)为rsp