SuperAPI AI 工具集

idapython

安全与审计

查看项目

更新于 10-16 01:29

技能介绍

IDAPython 用于编写 IDA Pro 的 Python 脚本,适用于逆向工程中的二进制分析、反汇编与反编译自动化。资料建议使用现代 ida_* 模块,避免旧版 idc 模块。

主要能力按模块划分:内存与字节用 ida_bytes(get_bytes、patch_bytes、get_flags、create_*);函数用 ida_funcs(func_t、get_func、add_func、get_func_name);名称用 ida_name(set_name、get_name、demangle_name);类型用 ida_typeinf(tinfo_t、apply_tinfo、parse_decl);反编译用 ida_hexrays(decompile、cfunc_t、lvar_t、ctree 访问器);段用 ida_segment;交叉引用用 ida_xref;指令用 ida_ua;调用栈帧用 ida_frame;遍历用 idautils(Functions()、Heads()、XrefsTo()、Strings());UI 用 ida_kernwin;数据库信息用 ida_ida;分析用 ida_auto;流程图用 ida_gdl;寄存器追踪用 ida_regfinder。

常见用法包括:用 idautils.Functions() 遍历函数,用 ida_ua.decode_insn 遍历函数内指令,用 idautils.XrefsTo 获取交叉引用,用 ida_bytes.get_bytes 读字节、patch_bytes 打补丁,用 ida_hexrays.decompile 获取伪代码并遍历反编译树,用 ida_typeinf.apply_tinfo 应用类型,以及用 ida_auto.auto_wait() 等待自动分析完成。

关键常量包括 BADADDR、ida_name.SN_NOCHECK、ida_typeinf.TINFO_DEFINITE,以及操作数类型、数据类型和代码/数据交叉引用类型等。

关键规则:不要手动进行十六进制/十进制转换,应使用 int_convert MCP 工具;读取结果前需调用 ida_auto.auto_wait();IDA SDK 调用必须运行在主线程(可用 @idasync);地址始终按 64 位处理。应避免使用 idc.* 函数、硬编码地址、手动转换和阻塞主线程,长操作应使用 execute_sync()。详细 API 可查阅 docs/<module>.md 或 hex-rays.com 的 RST 源文件。