Skip to content

Releases: isesword/golem

golem v0.2.1

Choose a tag to compare

@github-actions github-actions released this 01 Oct 04:03

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

Pre-release

Choose a tag to compare

golem v0.1.0-dev.20261001.0403

Pre-release

Choose a tag to compare

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

Choose a tag to compare

@github-actions github-actions released this 30 Sep 09:26
0bcf588

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 移出核心接口 → RegFileReader capability
  • 官方消费者 apseemu 已同步迁移;Config.Android 进入 deprecated(仍可用,后续版本移除)

What's Changed

🐛 Bug Fixes

  • fix(emu): pin UC_ERR_ARG correctly + evidence-tiered Windows arch gate by @isesword in #3

🔧 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

Choose a tag to compare

@github-actions github-actions released this 29 Sep 04:18