IDC的变量
idc使用三种基本数据类型 整形,字符串,浮点值
idc使用auto关键字声明变量,使用extern关键字声
明全局变量
auto var = 1; //局部变量
extern var2 = 1; //全局变量
IDC的运算符
idc支持绝大部分c的运算符,但是不支持如+=的复合运算符,并且idc所有整数操作数
均作为有符号处理,移位运算符如>>总是进行算术移位,想要完成逻辑移位,必须手
动进行位运算。字符串是idc的基本类型,所以可以执行+号运算符拼接字符串。
IDC语句
idc不支持switch语句其他语句风格与c一致,以分号结束语句。
IDC函数
idc仅在idc的独立程序脚本中支持定义用户的函数。使用static关键字声明函数,可以使用return
返回一个值,return并非必须。参数为&a表示传引用
static func(a,b,c){
//函数体
}
IDC实用函数
1)void PatchByte(long addr , long val) 设置虚拟地址addr处的一个字节值,PatchByte可更换为PatchWord,PatchDword设置虚拟地址addr处的2字节和4字节值。
2)long Byte(long addr) 从虚拟地址addr读取一个字节值,Byte可更换为Word,Dword读取2字节和4字节值。
3)void Message(string format , …),在输出窗口打印一条格式化消息。
4)void print(…),在输出窗口中打印每个参数的字符串表示形式。
5)long atol(string val),将10进制val转化成对应整数值。
6)long xtol(string val),将16进制val转化成对应整数值。
7)long ord(string ch),返回单字符字符串ch的ASCII值。
8)string Name(long addr),返回与给定地址有关的名称,如果该位置没有名称,则返回空字符串。
在独立的.idc脚本文件编写脚本时,需要按如下结构
#include<idc.idc>
static main(){
//主函数
}
保存为.idc文件后,打开ida在菜单中File>Script File可以执行idc脚本