基于IPA的加固混淆方案的实现

背景:

鉴于目前市面上大部分的加固方案都是基于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 个赞

好东西前几天还找呢

就是我跟你说的那个,自己提取llvm bitcode然后剩下的跟你用光一个原理

我前面的回复听起来有点攻击性,这不是我的本意。

如果这玩意用的是纯Clang/LLVM的API的话,我还可以打10分里面的7分当辛苦分,顺便说一句这是完全做得到的,并且比你用python和一堆依赖易用性上会好很多。 可以完全使用Clang/LLVM 的API,不调用任何类似system()的函数实现这个功能,纯C++。

大概200行,你可以研究一下这部分怎么做

en 换了个头像差点没认出来~~~

我在原仓库下开了个issue提了点意见,请查收

好的 谢谢你的建议 我回去尝试的。

你好 我下载了你的报错编译,请问要怎样修改啊

这玩意问题多了去了。根本没法实际使用

https://github.com/HikariObfuscator
这里的所有仓库都比这堆Python脚本靠谱&专业的多得多。 But you just be you I guess

兄弟 自己调试一下不久OK了,你这个iPA 不包含bitcode啊 xar都获取不到

研究注入Apple Clang比这我感觉价值高很多

张总 you are nubmer one :smile:

技术太菜了 我也想啊

张总,您的HikariObfuscator 不能编译arm64e的tweak么? 我用theos 编译的时候提示找不到 arm64e 的错误,编译arm64 没有问题。麻烦您看到的时候 抽空回复下!!万分感谢!

又一个不看文档的

感谢:pray:,请您指点一下,因为我初中文化,所有东西都是自学,没有基础,现在就卡在这,因为您的这个混淆太强大了,必须要用啊!麻烦您了

百度翻译/谷歌翻译

哈哈:smiley:,我下载的是您编译好的那个pkg

您的建议在mac上使用 Hanabi对么?

1 个赞