Framework 加固
小蟹定向加固是面向 iOS Framework / SDK 的 IR 级加固方案,路线和 OLLVM 同类:变换发生在 LLVM 中间表示上,不是改 Xcode 源码树的符号,也不是对已经打好的 IPA 做包内处理。控制流平坦化、虚假控制流、指令替换在 Framework 仍有 IR 时完成,宿主 App 不必整包走工程混淆,也能把 SDK 二进制的逆向成本抬上去。
什么时候走这条
你向外提供 .framework(或会打成 Framework 的静态库),或产品里有自研 SDK,需要单独保护这份二进制。Framework 还能经 Clang/LLVM 编译。你不想只为了藏 SDK,就把宿主工程整包做语言级改名。要保护的是宿主 App 主程序本身,请走 App 加固。
和另外两条入口的区别
Xcode 工程混淆(Unity、Flutter、Cocos、原生)改的是即将归档提审的 App:符号、资源、调用栈形态。Uni-app IPA 加固吃的是已经打好的包。定向加固对准 Framework 的 IR,做法接近 OLLVM。三条入口混用是常见错法:把编好的 Dynamic Mach-O 丢进工程混淆,或把 Framework 工程丢进 IPA 加固,都对不上 IR。
仍然做不到的事
IR 加固提高逆向成本,不会单独给你一套新的审核指纹,也不会对审核隐藏功能。两个宿主 App 看起来像一家时,仍要走编译级混淆,并保证 listing 诚实,见 4.3 和 混淆和加固。已经剥成没有 IR 的 Dynamic Mach-O,这里同样不覆盖,和工程混淆 FAQ 一致。
申请试用时写 Framework 的 Bundle Id(或宿主 Bundle Id 加上 SDK 名),并注明「Framework 加固」。IR 变换说明见 Framework IR 加固与 OLLVM。