签署Adobe AIR hardened Runtime时出现OSX错误的相关问题咨询
Adobe AIR for Mac Runtime硬加固后签名内存错误修复方案
根因说明
Adobe官方在2020年停止桌面版AIR的维护更新后,内置的Runtime框架未适配Apple hardened runtime的安全约束规则:Runtime内置的ActionScript JIT编译器需要动态申请可写可执行的内存页,开启硬加固后系统默认禁止该操作,最终触发非法内存访问错误。未开启hardening时无系统权限约束,因此应用可以正常运行。
修复操作步骤
- 准备签名用的 entitlements 权限配置文件,添加AIR Runtime运行必须的权限例外,完整配置参考:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.security.cs.allow-jit</key> <true/> <key>com.apple.security.cs.allow-unsigned-executable-memory</key> <true/> <key>com.apple.security.cs.disable-executable-page-protection</key> <true/> </dict> </plist>
- 对Runtime执行硬加固时,不要修改
Adobe AIR.framework/Versions/Current/Adobe AIR核心二进制的原始结构,仅对应用自身的自定义可执行文件做加固处理 - 签名时指定权限配置文件,示例签名命令:
codesign --force --options runtime --entitlements ./entitlements.plist --sign "Developer ID Application: 你的证书名称" /路径/到/你的/应用.app
效果验证
- 执行
codesign -dv --verbose=4 /路径/到/你的/应用.app,确认签名包含runtime选项,且无签名失效报错 - 启动应用遍历全量功能路径,确认无内存访问崩溃问题
内容的提问来源于stack exchange,提问作者Derek Wade
相关产品推荐
相关产品推荐

