背景:
鉴于目前市面上大部分的加固方案都是基于ollvm并做成toolchain的方式针对源码编译,这样操作不是方便,然后就有了如下方案,我看这位哥们其实也稍微实现了只是针对了.a(APP开启bitcode,生成.xcarchive文件,对.xcarchive文件做混淆加固),张总也给出了答复,我这里就再详细一点吧,给出相应的源码,就当再抛砖引玉一下吧。再次申明这是针对带Bitcode的IPA的安全解决方案底层也是基于ollvm的,在这里感谢ollvm的作者们做出这么优秀的项目,当然也感谢张总的光, 我这边的clang用的是ollvm做的示范,当然此解决方案不仅支持iPA也支持SDK(framework、.a)的安全加固。
大致思路如下:
- 1.解析iPA、.xcarchive、.a、等各种格式
- 2.提取Xar
xar -d - -f input
- 3.解析Xml
用python的ET.fromstring(xmlfile)去解析
- 4.提取所有的.o文件、提取所有的clang 的编译命令和ld的链接命令参数
- 5.给每个.o加上混淆参数生成混淆后的.o
- 6.链接生成最终的混淆后的iPA
流程图如下
6 个赞
Zhang
5
就是我跟你说的那个,自己提取llvm bitcode然后剩下的跟你用光一个原理
Zhang
7
我前面的回复听起来有点攻击性,这不是我的本意。
如果这玩意用的是纯Clang/LLVM的API的话,我还可以打10分里面的7分当辛苦分,顺便说一句这是完全做得到的,并且比你用python和一堆依赖易用性上会好很多。 可以完全使用Clang/LLVM 的API,不调用任何类似system()的函数实现这个功能,纯C++。
大概200行,你可以研究一下这部分怎么做
Zhang
13
https://github.com/HikariObfuscator
这里的所有仓库都比这堆Python脚本靠谱&专业的多得多。 But you just be you I guess
兄弟 自己调试一下不久OK了,你这个iPA 不包含bitcode啊 xar都获取不到
Zhang
16
研究注入Apple Clang比这我感觉价值高很多
xybp888
(逍遥博派)
19
张总,您的HikariObfuscator 不能编译arm64e的tweak么? 我用theos 编译的时候提示找不到 arm64e 的错误,编译arm64 没有问题。麻烦您看到的时候 抽空回复下!!万分感谢!
xybp888
(逍遥博派)
21
感谢,请您指点一下,因为我初中文化,所有东西都是自学,没有基础,现在就卡在这,因为您的这个混淆太强大了,必须要用啊!麻烦您了