Windows平台Qiling仿真崩溃问题技术求助
Qiling仿真代码执行崩溃:Invalid memory read(UC_ERR_READ_UNMAPPED)
问题描述
数月前可正常运行的Qiling仿真代码及CPP编译生成的exe,如今执行时直接崩溃,错误提示为Invalid memory read (UC_ERR_READ_UNMAPPED)。本人尝试修复但对Qiling框架了解有限,怀疑该问题与项目的#1594 issue相关。
相关材料
仿真代码
# 此处填入用户提供的仿真代码内容
CPP源码
// 此处填入用户提供的CPP源码内容
执行日志
此处粘贴用户提供的执行日志内容
预期行为
原本可正常完成仿真流程,无崩溃报错,能得到预期的程序输出或执行结果。
排查与修复建议
- 检查内存映射配置:确认仿真代码中是否正确映射了目标exe需要访问的所有内存区域,尤其是新增的内存访问点。可在崩溃前添加内存映射检查逻辑,验证触发错误的内存地址是否已被纳入Qiling虚拟空间。
- 核对Qiling版本差异:对比此前正常运行时的Qiling版本与当前版本的代码变更,重点查看#1594相关的内存管理、Unicorn引擎交互逻辑修改,按需调整仿真代码以适配新的内存处理规则。
- 跟踪内存访问路径:开启Qiling调试模式(
ql.debugger = True)或自定义内存访问钩子函数,在崩溃点打印上下文的内存地址、寄存器状态,定位触发未映射内存读取的具体代码段。 - 验证编译环境一致性:确认当前编译CPP exe的编译器版本、编译选项与之前是否一致,部分选项变更可能导致exe内存布局改变,超出原仿真代码的内存映射范围。
内容的提问来源于stack exchange,提问作者farhan jatt
相关产品推荐
相关产品推荐

