1.1 IDA有三个比较重要的库:IDC,idautils,idaapi.
IDC他是封装IDA和IDC函数的兼容性模块。
idaapi他可以允许我们访问更加底层的数据。
在IDA中我们要使用脚本有三种方式:
第一种:快捷键shift+F2 调出界面,也可以在菜单中选择命令脚本。
第二种:ALT+F7 脚本文件进行引用
第三种:在IDA底部写命令。
1.2IDAPython汇编界面介绍:
.text : 程序段名称
0x004010B7 当前的addr地址
movups 汇编语句操作符
movups xmmword ptr[xxx],xmmo 这是汇编指令操作符
movups xmmword ...,xmmo 这是反汇编语句
1.3:如何在IDA获取界面中地址函数
当前地址获取使用:idc.here()函数,或者 idc.screen_ea()函数
最小地址可以使用:ida_ida.inf_get_min_ea()
最大地址可以使用:ida_ida.inf_get_max_ea()
当前选择地址的开始:idc.read_selection_start()
当前选择地址的结束:idc.read_selection_end()
如果判断地址是否存在,可以使用:idaapi.BADADDR
这些函数的返回值都是地址,且木有参数。
1.4数值获取:
idc.get_wide_byte(addr)
idc.get_wide_word(addr)
idc.get_wide_dword(addr)
idc.get_qword(addr)
1.5数值操作:
ida_bytes.patch_byte(addr,value)
ida_bytes.patch_word(addr,value)
ida_bytes.patch_Dword(addr,value)
ida_bytes.patch_Qword(addr,value)
二:简单的脚本实现
现在我们写一个脚本,脚本作用是:
获取我们选择区域的所有二进制值,如果二进制数值是0x... 那我们就替换成0x....