如何在IDA Pro中修改结构体数组大小并保存文件?
修改IDA Pro中数组变量大小并保存可执行文件的方法
一、调整_item_list的数组大小
- 定位目标变量
- 打开IDA的Structures标签页,找到显示为
_item_list item 100 dup(?)的行;也可以按快捷键N搜索变量名,直接定位到该变量的定义或引用位置。
- 打开IDA的Structures标签页,找到显示为
- 修改数组长度
- 右键点击
_item_list所在行,选择Edit Array(或按快捷键Alt+A); - 在弹出的编辑窗口里,把重复次数(
count)从100改成1000,确认后完成修改。
- 右键点击
- 必看注意事项
- 要确保
_item_list所在内存区域有足够空闲空间,能容纳新增的900个item结构体数据。可以查看反汇编窗口中该变量后续的内容,如果后面已经有其他代码或数据,直接扩容会覆盖这些内容导致程序崩溃,这种情况需要先调整节的内存大小(见下文保存环节的补充操作)。
- 要确保
二、将修改同步到可执行文件
IDA里的直接修改仅存在于本地数据库,要写入原文件需要执行补丁操作:
- 打开补丁导出功能
- 点击顶部菜单栏的Edit -> Patch program -> Apply patches to input file。
- 设置保存参数
- 在弹出窗口中选择保存路径(建议先保存为新文件,避免覆盖原文件),勾选Create backup保留原文件备份;
- 如果弹出空间不足的提示,说明数组扩容后超出了原节的大小,需要先调整节属性:
- 按快捷键
Shift+S打开Segments窗口,找到_item_list所在的节; - 右键选择Edit segment,增大
Raw size和Virtual size的值,确保能容纳扩容后的数组,保存节修改后再重新执行补丁导出。
- 按快捷键
- 完成保存
- 确认参数后点击OK,IDA会将修改后的内容写入目标可执行文件。
内容的提问来源于stack exchange,提问作者Vu Hong Ha
相关产品推荐
相关产品推荐

