如何在IDA Pro导出的asm文件中同时包含反汇编代码与枚举列表?
解决IDA Pro导出.asm文件时包含枚举列表的问题
方法1:调整导出对话框选项
在导出ASM文件时,修改默认设置即可:
- 依次点击
File > Produce file > Create ASM file - 在弹出的导出对话框中,找到**"Include enums"**(部分新版本可能标注为"Enums")的勾选框,确保其处于选中状态
- 确认其他所需选项后,点击"OK"完成导出
新版本IDA默认取消了该选项的勾选,这是和6.8版本的核心差异点。
方法2:用IDC脚本强制导出枚举
如果上述选项无效或找不到,可通过IDC脚本将枚举单独导出后合并到主ASM文件:
- 按
Shift+F2打开脚本控制台,或通过File > Script command进入 - 运行以下IDC脚本:
static main() { auto f, enum_id, enum_name, member_id, member_name, member_val; f = fopen("enums_export.asm", "w"); enum_id = get_first_enum(); while (enum_id != BADADDR) { enum_name = get_enum_name(enum_id); fprintf(f, "; Enumeration: %s\n", enum_name); fprintf(f, "%s ENUM\n", enum_name); member_id = get_first_enum_member(enum_id); while (member_id != BADADDR) { member_name = get_enum_member_name(member_id); member_val = get_enum_member_value(member_id); fprintf(f, " %s EQU %X\n", member_name, member_val); member_id = get_next_enum_member(enum_id, member_id); } fprintf(f, "%s ENDM\n\n", enum_name); enum_id = get_next_enum(enum_id); } fclose(f); }
- 脚本运行后会生成
enums_export.asm文件,将其内容复制粘贴到主ASM文件开头即可。
方法3:确认枚举的可导出属性
确保你定义的枚举本身允许被导出:
- 打开枚举窗口:
View > Open subviews > Enums - 右键目标枚举,选择
Edit enum - 在编辑窗口中,勾选**"Exportable"**选项
- 保存修改后重新尝试导出
内容的提问来源于stack exchange,提问作者Marian M.
相关产品推荐
相关产品推荐

