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

idc.GetDisasm(ea)

idc.print_insn_mnem(ea)

idc.print_operand(ea,n)

posted @ 2023-06-30 23:25  雨后初霁  阅读(297)  评论(0编辑  收藏  举报