python - Capstone 动态从 ARM 切换到 THUMB
问题描述
我正在尝试编写一个简单的脚本来反汇编 ARM/THUMB 字节码。从一种模式切换到另一种模式在 ARM 中很常见,因此反汇编程序能够遵循这一点非常重要。我遇到了麻烦,即使文档说它很简单(请参阅https://www.capstone-engine.org/lang_python.html#62-dynamically-change-disassemble-mode-at-run-time) . 这对我来说似乎在运行时不起作用。
这是我的测试的样子:
for i in md.disasm(CODE, 0x1000):
print("0x%x:\t%s\t%s" %(i.address, i.mnemonic, i.op_str))
if i.mnemonic == "bx":
md.mode = cs.CS_MODE_THUMB
请注意,它实际上确实进入了拇指模式,而不是在循环期间。因此,发生的情况是代码在 ARM 中完全反汇编,但如果我再次运行它,它将在 THUMB 中完全反汇编。
预先感谢您的帮助
解决方案
disasm
在一次调用中反汇编多个指令,因此在您更改模式时为时已晚。
您可以一次反汇编一条指令或使用cs_disasm_iter
.
推荐阅读
- javascript - Createjs 事件 - “mouseleave” 有效,但“click” 无效
- css - 尽管在 Opera 浏览器的 CSS 文件中添加了“resize:none”,但我在 HTML 中的 textarea 仍然可以调整大小
- r - 空间关系矩阵中的顺序点
- python - 无法将 PostgreSQL 数据库从 docker 连接到 python
- c# - 在没有原则的线程上使用 Authorize 属性时,Asp.net Core 操作不返回 401?
- swift - 无法使用 Fairplay HLS 从 AVPlayer 获取视频缩略图
- reporting-services - 在 SSRS 中,预览上的日期时间参数与部署的报告不匹配
- node.js - 由于“错误:‘class v8::ObjectTemplate’没有名为‘SetAccessCheckCallbacks’的成员”,npm 安装失败
- heroku - 在 Heroku 中使用带有 HTTP2 支持的 actix-web
- ios - 我的位置没有显示在 MapKit 的地图上