IDApython的学习 世界今热点

博客园   2023-07-01 06:15:44


(资料图)

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, rspidc.print_insn_mnem(ea)//获取ea的汇编指令的名字,比如movidc.print_operand(ea,0)//获取操作数的文本表示形式指令(或数据)的线性地址N -操作数个数:0 -第一个操作数1 -第二个操作数返回:操作数的当前文本表示形式比如 rbp,同理idc.print_operand(ea,1)为rsp

idc.GetDisasm(ea)

idc.print_insn_mnem(ea)

idc.print_operand(ea,n)