SuperAPI AI 工具集

types

编程与开发

查看项目

更新于 10-15 16:47

技能介绍

这是 idasql-skills 中针对 IDA 类型系统的权威参考技能,通过 idasql 以 SQL 表方式操作本地类型。用途:创建/编辑 struct、union、enum、typedef,检查函数原型参数类型,解析指针/typedef 行为,应用或精修恢复出的数据模型。涉及注解流程可参考 annotations,反编译器的类型交互(ctree、lvars、联合体选择等)参考 decompiler。

主要能力:types 表支持 INSERT/UPDATE/DELETE 及 folder_path 文件夹组织;字段 member_name、member_type、offset 可原地重命名、改类型、移动;types_members 管理结构与联合成员;types_enum_values 管理枚举常量;local_types 提供本地类型清单;local_type_bookmarks 管理本地类型书签;type_gaps 与 is_gap 暴露固定布局中的空闲字节区间。

典型用法:先用 SELECT ordinal, name, kind, size FROM types ORDER BY ordinal LIMIT 30; 做清单;用 SELECT name, size FROM types WHERE is_struct = 1 ORDER BY size DESC LIMIT 20; 找大结构体;用 SELECT type_name, arg_index, arg_name, arg_type FROM types_func_args WHERE arg_index >= 0 LIMIT 40; 做原型内省。创建类型:INSERT INTO types (name, kind) VALUES ('MY_HEADER', 'struct');。成员编辑以 type_ordinal 加 member_name 或 member_index 为键。注意成员表是 types_members、枚举常量是 types_enum_values;没有 print_type()/exec_python() 这类 SQL 函数,运行 Python 走 idapython 技能;IDA 9 没有 ida_struct,结构体/联合体通过 types 与 types_members 编辑;查字段引用用 struct_member_xrefs。DELETE 不塌缩,会留下 gap;固定布局用 is_fixed=1,需压缩时先置 1 再置 0,普通精修优先表编辑而非 parse_decls() 整体重建。