iOS LLVM 混淆插件:Hikari 和 Hanabi

iOS LLVM 混淆插件:Hikari 和 Hanabi

💡 原文中文,约7600字,阅读约需18分钟。
📝

内容提要

作者将项目中使用的Xcode LLVM混淆方案从obfuscator-llvm更换为开源的Hanabi插件。Hanabi方案通过HOOK的方式干预LLVM IR混淆过程,其他编译过程依赖Xcode原生的toolchain。已知问题包括不支持bitcode和编译Swift时报错。

🎯

关键要点

  • 将项目中的 Xcode LLVM 混淆方案从 obfuscator-llvm 更换为开源的 Hanabi 插件。
  • Hanabi 方案通过 HOOK 的方式干预 LLVM IR 混淆过程,其他编译过程依赖 Xcode 原生的 toolchain。
  • obfuscator-llvm 项目已不再维护,存在兼容性问题。
  • Hanabi 方案包含 Obfuscator Pass 和 Hanabi 两部分内容。
  • 需要关闭 macOS SIP 才能使用 optool 工具修改 Xcode 文件。
  • Hanabi 源码分析显示其基本思路是将混淆的 LLVM Pass 打包成动态库。
  • 使用 DobbyHook 在关键点添加混淆 Pass。
  • 对 Xcode clang 和 swift-frontend 的修改需要使用 optool 工具。
  • 支持的混淆参数包括启用控制流扁平化、基本块分割等。
  • 已知问题包括不支持 bitcode 和编译 Swift 时可能出现错误。
➡️

继续阅读