[IDA]IDC脚本基础

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实用函数

idc同样为idapython提供了这些函数

返回值函数名参数 
longBytelong addr从虚拟地址addr处读取一个字节
longWordlong addr从虚拟地址addr处读取两个字节
longDwordlong addr从虚拟地址addr处读取四个字节
voidPatchBytelong addr, long val设置虚拟地址addr处的一个字节值
voidPatchWordlong addr, long val设置虚拟地址addr处的两个字节值
voidPatchDwordlong addr, long val设置虚拟地址addr处四个字节值
boolisLoadedlong addr

如果addr包含有效数据,则返回1,否则0

如果提供一个无效的地址也会返回0xff,所以

isloaded可以判断是否有数据

voidMessagestring format,....在输出窗口打印一条格式化字符串
voidprint....在输出窗口打印每个参数的字符串表示形式
voidWarningstring format,....在对话框中显示一条格式化消息
stringAskStrstring default, string prompt

显示一个输入框,要求用户输入一个字符串。如果操作成功

返回用户字符串,如果取消则返回0

stringAskFile

long doSave, string mask,

string prompt

显示一个文件选择对话框,以简化选择文件任务,如果操作成功,返回选择文件的名称,如果取消,返回0
longAskYNlong default, string prompt用一个答案为是或否提问,1为是,0为否,-1取消
longScreenEA 返回当前光标所在位置的虚拟地址
boolJumplong addr跳转到反汇编窗口指定地址
stringformstring format,....返回一个新字符串,由所提供的值格式化
stringsprintfstring format,....在ida5.6代替form
longatolstring val十进制转换为整数
longxtolstring val转换为16进制
stringltoalong val, long radix以指定进制返回val
longordstring ch返回单个字符串 ASCII
longstrlenstring str返回字符串长度
longstrstrstring str, string substr返回str中substr的索引
stringsubstrstring str, long start ,long end返回start到end-1的字符串
longfopenstring filename, string mode返回文件句柄,和c语言一样
voidfcloselong handle关闭文件
longfilelengthlong handle返回指定文件长度,如果错误-1
longfgetclong handle从文件中读取一个字节
longfputclong val, long handle写入一个字节,成功则0,失败-1
longfprintflong handle,string format, ...一个格式化字符串写入给定文件
longwritestrlong handle, string str指定字符串写入文件
string/longreadstrlong handle从给定文件中读取一个字符串,读到一个换行符为止,包括换行符,末尾返回-1
longDfirstlong from返回给定地址应用一个数据值的第一个位置。没有返回-1
longDnextlong from,long current如果已经有一个位置,可以利用当前位置,搜索下一个位置。错误返回-1
longXrefType 返回最后一个交叉引用查询函数返回的类型
longDfirstBlong to返回给顶地址作为数据引用的第一个位置,不存在返回-1
longDnextBlong to, long current如果已经有一个位置,可以利用当前位置,搜索下一个位置。错误返回-1
longFindCodelong addr, long flags

flag指定查找行为,SEARCH_DOWN,扫描高位地址,SEARCH_NEXT跳过当前匹配,搜索下一个,SEARCH_CASE以区分大小写方式扫描二进制文本

从给定地址搜索一条指令

longFindeDatalong addr, long flags从给定地址搜索一个数据项
longFindBinarylong addr, long flags, string binary从给定地址搜索一个字节序列

 在独立的.idc脚本文件编写脚本时,需要按如下结构

#include<idc.idc>

static main(){

//主函数

}

保存为.idc文件后,打开ida在菜单中File>Script File可以执行idc脚本

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值