Repository navigation
Releases: isesword/golem
Releases · isesword/golem
Release list
golem v0.2.1
What's Changed
🐛 Bug Fixes
- fix(emu): normalize single-address code hooks — [addr, addr] is empty on some targets by @isesword in #5
📦 Other Changes
- P10: syscall override + WrapSymbol — interposable function wrap on the binding paths by @isesword in #6
Full Changelog: v0.2.0...v0.2.1
golem v0.1.0-dev.20261001.0413
golem v0.1.0-dev.20261001.0403
What's Changed
🐛 Bug Fixes
- fix(emu): normalize single-address code hooks — [addr, addr] is empty on some targets by @isesword in #5
📦 Other Changes
- P10: syscall override + WrapSymbol — interposable function wrap on the binding paths by @isesword in #6
Full Changelog: v0.2.0...v0.1.0-dev.20261001.0403
golem v0.2.0
v0.2.0 — 多架构 + Public Semantic API
golem 从"AArch64 单架构模拟器"进化为多架构 native 库模拟框架:Android ARM64 / ARM32 / AMD64 与 Darwin(Mach-O) 四条端到端链路,外加一层让业务代码跨架构零修改的 Public Semantic API。
🏛️ 多架构与平台化
- Android:ARM64 ✅ / **ARM32(ARMv7 + Thumb 互通)**✅ / AMD64 ✅ —— 三架构各自走完 加载→bionic→syscall→调用 全链
- Darwin(Mach-O):ARM64 / ARM64e(实验)——
DYLD_CHAINED_PTR_64链式修复 format 1/2、arm64e 认证指针 PAC 剥签名策略 - 新平台语义层
internal/platform:Factory→Runtime 纯数据 personality,新增平台 = 新包 + 一行空导入,emulator 本体零改动(合成平台契约测试钉住该缝) - 内核 syscall 语义平台无关化:utsname 身份等个性数据随 Runtime 注入,handler 只编码不判断
🎛️ Public Semantic API(新)
- Portable 面(业务默认):
HookContext(Arg/ReturnAddress/ReadRole)、类型化调用CallSymbol(name, Ptr(p), Words(n)...)—— 同一份业务代码跑三架构,寄存器对(ARM32 U64→r2:r3)、栈溢出、调用约定由框架消化 - 语义二分:
ReadRole(RoleLR)是 CPU 观察(任何 hook 可用;AMD64 无 LR →ErrUnsupportedRole);ReturnAddress()是调用上下文事实(仅入口 hook)。不支持与不可用分属两个哨兵错误,绝不静默返零 - Advanced 面(
Reg/RegRead/CallSymbolArgs)保留给逆向调试场景,文档明确"架构自担"
⚡ 性能
- 调用路径收敛:
RegBatchWriter批量寄存器写(1 次宿主↔引擎穿越替代逐寄存器)+ 词参栈快路径 —— 单次调用 ns/op -16%~-33%,allocs 35→26 - 调用基准集永久化(词参/指针/IO 型分层 + 跨版本 A/B 锚)
🛡️ 正确性与健壮性(外部审计驱动)
- 假 poison 武装为真毒化 + Alloc/Restore 入口守卫;Darwin futex-0 拦截门控;arm64e
high8位拼接修正;guest 长度上界(kernel.MaxGuestIO);ELF/Mach-O 段越界与畸形重定位表一律 parse error - ARM32 引擎创建时启用 VFP/NEON(真实第三方库首条 VLDR 即触发的坑)
- Windows:修正
UC_ERR_ARG错钉;发布 DLL 目标拓宽至 arm/aarch64/x86;引擎宿主侧全套测试 Windows 实跑恢复全绿(ARM32/AMD64 guest 在 Windows 引擎上的机制性限制会响亮报错,不静默)
✅ 验证
- 三层递进验证:自编 fixture → 官方 bionic(真实链接 + JNI)→ 真实第三方预编译库(Termux libsqlite3 3.53.4,open/exec/insert/query/close 全链 ALL GREEN)
- 全量测试双构建模式 22 包全绿;基准回归(
-count=6中位数对比)纳入流程
⚠️ Breaking Changes
Hook.Arg(i)→ 返回(Value, error);CallSymbol/CallOffset参数 →...Value(Words / Ptr / Uint64 / Int64构造器)h.LR()移除 →ReadRole(RoleLR);ReadGPRegs移出核心接口 →RegFileReadercapability- 官方消费者 apseemu 已同步迁移;
Config.Android进入 deprecated(仍可用,后续版本移除)
What's Changed
🐛 Bug Fixes
🔧 CI / Build
- fix(ci): build the Windows unicorn DLL with arm+aarch64+x86 targets by @isesword in #2
- fix(ci): release DLL covers arm;aarch64;x86 targets by @isesword in #4
📦 Other Changes
- chore(release): PR-based release notes — categories, PR template, contributing guide by @isesword in #1
New Contributors
Full Changelog: v0.1.0...v0.2.0
golem v0.1.0
Full Changelog: https://github.com/isesword/golem/commits/v0.1.0