跳转至

Dynarmic

面向 ARM 的动态重编译器。

请注意,恶意访客程序可以检测出自己是否在 Dynarmic 下运行。阻止这一点并不是本项目的目标。

Cortex-A57(32 位和 64 位)是被模拟的访客目标。参见 ArchVersion。

唯一支持的主机架构是 x86-64 和 AArch64。目前没有计划支持任何 32 位架构。

参见示例用法。

设计文档位于 ./Design.md。

Dynarmic 的替代方案

以下是一些与 Dynarmic 目标相同的项目:

  • Unicorn - 基于 QEMU 的重编译多架构 CPU 模拟器
  • SkyEye - ARM 的缓存式解释器

更通用的替代方案:

  • tARMac - Tarmac 使用 armlets 的做法最初启发我们使用中间表示(IR)
  • QEMU - 重编译的多架构系统模拟器
  • VisUAL - 面向教育的可视化 ARM UAL 模拟器
  • 大量其他重编译器、解释器和模拟器可以嵌入到其他项目中,以下是我们推荐关注的一些:
  • firebird 的重编译器 - 采用更多调用线程式的方法进行重编译
  • higan 的 arm7tdmi 模拟器 - 代码风格非常干净
  • ozaki-r 的 arm-js - 在浏览器中模拟 ARMv7A 以及 Versatile Express 的一些外设

Dynarmic 的缺点

为了追求速度,一些通常不被依赖的行为被省略了。因此,这个模拟器不完全符合规范。 请注意,这意味着访客应用可以很容易地检测出自己是否在插桩环境下运行。

已知示例:

  • 仅模拟用户模式,不模拟任何其他特权级别。
  • FPSR 状态是近似值。
  • 在某些情况下,未对齐的加载/存储不会被正确捕获。
  • 独占监视器的行为可能与任何已知的物理处理器都不匹配。

尚未进行形式化验证,也未进行安全评估。 使用此代码库风险自负。

Dynarmic 采用 GPLv3 许可证,请查看相关文件头以获取更多信息。

Dynarmic 使用了多个开源库,其许可证包含在相应库中。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 eg/Eglantine