IDA SDK - Interactive Disassembler Module SDK
从网上下载好idasdk,我用的是idasdk6.8版本
配置要求:
Windows 32/64bit 模块 Visual C++ >= 9.0 / GNU C++ compiler (MinGW)
Linux 32/64bit 模块 GNU C++ compiler
MacOSX 32/64bit 模块 GNU C++ compiler or clang
idasdk目录结构:
ida.hpp IDA插件工程主要头文件,其中inf结构保存了所有文件中的参数设置
kerwin.hpp 用于用户交互和字符串处理的函数
ua.hpp 描述insn_t结构,保存汇编指令
idap.hpp IDP模块主要头文件,描述processor_t结构和asm_t结构,分别保存处理器数据和反汇编器数据
area.hpp 保存反汇编文件的区域信息
auto.hpp 自动分析相关函数
bytes.hpp
ida插件类型:
类型 导出
processor LPH
loader
可以使用函数进行调试:deb() msg() warning()
使用Visual Studio 2015开发一个Loader模块:
1.配置工程,创建一个windows的dynamic library项目,并按照idasdk的install_visual.txt中说明来配置
2.输入代码,最简单的一个demo就完成了
#include "../ldr/idaldr.h"
int idaapi accept_file(linput_t *li, char fileformatname[MAX_FILE_FORMAT_NAME],int n);
void idaapi load_file(linput_t *li, ushort neflags, const char *fileformatname);
int idaapi move_segm(ea_t from, ea_t to, asize_t size, const char *fileformatname);
loader_t LDSC =
{
IDP_INTERFACE_VERSION,
LDRF_RELOAD,
accept_file,
load_file,
NULL,
NULL
};
int idaapi accept_file(linput_t * li, char fileformatname[MAX_FILE_FORMAT_NAME], int n)
{
return 0;
}
void idaapi load_file(linput_t * li, ushort neflags, const char * fileformatname)
{
return;
}
int idaapi move_segm(ea_t from, ea_t to, asize_t size, const char * fileformatname)
{
return 0;
}