IDA Pro内置的IDC脚本语言是一种灵活的、C语言风格的脚本语言,旨在帮助逆向工程师更轻松地进行反汇编和静态分析。IDC脚本语言支持变量、表达式、循环、分支、函数等C语言中的常见语法结构,并且还提供了许多特定于反汇编和静态分析的函数和操作符。由于其灵活性和可扩展性,许多逆向工程师都喜欢使用IDC脚本语言来自动化反汇编和静态分析过程,以提高效率和准确性。
long fopen(string filename,string mode)打开文件,模式(r表示读取,w表示写入)void fclose(long handle)关闭fopen中文件句柄指定的文件long filelength(long handle)返回指定文件的长度,如果发生错误,则返回-1。long fgetc(long handle)从给定文件中读取一个字节。如果发生错误,则返回-1。long fputc(long val, long handle)写入一个字节到给定文件中。如果操作成功,则返回0;如果发生错误,则返回-1。long fprintf(long handle, string format, …)将一个格式化字符串写入到给定文件中。long writestr(long handle, string str)将指定的字符串写入到给定文件中。string/long readstr(long handle)从给定文件中读取一个字符串。这个函数读取到下一个换行符为止的所有字符(包括非ASCII字符),包括换行符本身(ASCII 0xA)。如果操作成功,则返回字符串;如果读取到文件结尾,则返回-1。long writelong(long handle, long val, long bigendian)使用大端(bigendian=1)或小端(bigendian=0)字节顺序将一个4字节整数写入到给定文件中。long readlong(long handle, long bigendian)使用大端(bigendian=1)或小端(bigendian=0)字节顺序从给定的文件中读取一个4字节整数。long writeshort(long handle, long val, long bigendian)使用大端(bigendian=1)或小端(bigendian=0)字节顺序将一个2字节整数写入到给定的文件中。long readshort(long handle, long bigendian)使用大端(bigendian=1)或小端(bigendian=0)字节顺序从给定的文件中读取一个2字节整数。bool loadfile(long handle, long pos, long addr, long length)从给定文件的pos位置读取length数量的字节,并将这些字节写入以addr地址开头的数据库中。bool savefile(long handle, long pos, long addr, long length)将以addr数据库地址开头的length数量的字节写入给定文件的pos位置。
(5)操纵数据库名称
函数
功能
string Name(long addr)返回与给定地址有关的名称,如果该位置没有名称,则返回空字符串。如果名称被标记为局部名称,这个函数并不返回用户定义的名称。string NameEx(long from, long addr)返回与addr有关的名称。如果该位置没有名称,则返回空字符串。如果from是一个同样包含addr的函数中的地址,则这个函数返回用户定义的局部名称。bool MakeNameEx(long addr, string name, long flags)将给定的名称分配给给定的地址。该名称使用flags位掩码中指定的属性创建而成。这些标志在帮助系统中的MakeNameEx文档中有记录描述,可用于指定各种属性,如名称是局部名称还是公共名称、名称是否应在名称窗口中列出。long LocByName(string name)返回一个位置(名称已给定)的地址。如果数据库中没有这个名称,则返回BADADDR(-1)。long LocByNameEx(long funcaddr, string localname)在包含funcaddr的函数中搜索给定的局部名称。如果给定的函数中没有这个名称,则返回BADADDR(-1)。
(6)处理函数的函数
函数
功能
long GetFunctionAttr(long addr,long attrib)返回包含给定地址的函数的被请求的属性string GetFunctionName(long addr)返回包含给定地址的函数的名称long NextFunction(long addr)回给定地址后的下一个函数的起始地址long PrevFunction(long addr)返回给定地址之前距离最近的函数的起始地址