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脚本