1。IDA脚本的打开与使用:
IDA脚本两种语言:IDC(IDC,本地脚本语言)和Python
2。IDC语言介绍
1。IDC变量:IDC是一种松散的语言,没有明确的类型。使用3中数据类型,整数(IDA文档使用类型名称long)、字符串、浮点值。绝大部分的操作是针对整数和字符串。
因为字符串被视为IDC中的本地数据类型。所以不需要跟踪存储一个字符串所需空间。
IDC支持局部变量,使用任何变量前需要声明变量。
引入局部变量的关键字auto,声明时可以初始化。
全局变量的关键字extern,可以在函数内或外定义,但不能声明时带初始值,首次使用分配空间,生存周期和该会话生存周期一致。
Eg:auto addr, reg, val;
2。注释:C风格注释 /**/或//
3。使用“;”分号作为语句终止符和C一样
4。IDC不支持C风格数组(IDA5.6引入分片)、指针(IDA5.6开始支持)或结构体和联合体等复杂数据结构,IDA5.6使用的是类
5。IDC表达式
IDC支持几乎所有的C中的算术运算符,包括三元运算符,但不支持复合赋值运算符(eg:+= *= >>=等)。所有整数值的操作运作为有符号数处理,所以进行右移操作需要处理符号为(& 0x7FFFFFFF)
在IDC中不需要使用字符串来复制函数(C语言中strcpy,strdup),也不需要字符串拼接函数(C语言中strcat),使用分片指定与数组类似的变量子序列。
分片使用方法:[起始索引:结束索引] 至少需要一个索引,使用分片处理IDC字符串类似数组。
Eg: auto str=”String to slice”;
auto s1,s2,s3,s4;
s1 = str[7:9] // to
s2 = str[:6] // String
s3 = str[10:] // slice
s4 =