arm64 执行桥
让只有 arm64 版本、带加固的游戏能在 ModAVD 的 x86_64 系统镜像上跑起来。现在只对《阴阳师》的 7 个渠道包生效。0.36.0 起随 Release 主包提供,装在 sdk\emulator\resources\modavd\。
不碰游戏
执行桥不修改、不打补丁、不绕过游戏或它的加固库,也不干预任何完整性或防篡改校验。这是转译层的兼容性工程:让游戏自己装的钩子正确执行并返回。Intel Houdini 本来就是这么做的,同一个游戏在 Houdini 上就能跑。执行桥本身不改 Google 的转译层。管理器开机后另外把一份在本机生成的补丁副本挂到原路径上,只改提示类指令(SEVL、SEV、WFE、WFI)的解码,镜像文件不动,改过的二进制不分发。
为什么需要它
x86_64 镜像靠 Google 的转译层跑 arm64 应用:系统库保持原生 x86_64,只转译应用自带的 arm64 库。
游戏的加固库会把系统库里一些函数入口改成指向它自己的 arm64 代码。真机上两边都是 arm64,没问题;在 x86_64 镜像上,原生代码一跳进 arm64 代码就崩,因为转译层只支持「转译代码调原生」,不支持反过来。执行桥用转译层自己导出的接口补上了这条路。原理详见开发:arm64 执行桥。
只对名单里的游戏生效
- 名单现在是《阴阳师》的 7 个渠道包。
- 名单外的应用在进程启动后把执行桥改过的地方都撤回原样,行为和没装桥时一样。
装进实例
- 0.36.0 起不用自己装:用管理器
ModAVD.exe或命令行tools\modavd.exe start开机时,新建的和已有的实例都会自动带好桥。开机流程做完后桥还没装就装上,没生效就关机冷启动,最多三轮。第一次开机要多 1–2 分钟。 - 装好以后照常用 AUTO-MAS 开机,桥一直在。
- 只用 AUTO-MAS 开机、从没用管理器开过的实例,这一版还不会自动装:用管理器把它开一次机就行。
- 桥装在实例自己的 system / vendor 覆盖层里,不动 Google 的原始镜像。
不想要桥
- 新建时用
tools\modavd.exe create --no-bridge; - 对已有实例运行
tools\modavd.exe bridge <编号> uninstall,之后开机都不再自动装(再install就恢复); start --no-bridge只管这一次;- 只读检查用
bridge <编号> verify(实例要开着)。
退回旧版本之前
退回 0.36.0 以前的版本之前,先在每一台实例上运行一次 tools\modavd.exe bridge <编号> uninstall,看到结果是「没装」再换包。不先卸就退版,那台实例上所有只有 arm64 版本的应用都会跑不起来。
源码在 ModAVD 仓库的 bridge/,按 AGPL-3.0-or-later 发布。