基于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

流程图如下

最后

具体源码传送门:iPAObfuscator源码 里面有详细的使用说明

同时欢迎到我们官网进行详细的免费试用:http://www.god-shield.com

也欢迎各位加qq群进行讨论:786457705

5 Likes

好东西前几天还找呢

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

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

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

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

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

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

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

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

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


这里的所有仓库都比这堆Python脚本靠谱&专业的多得多。 But you just be you I guess

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

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

张总 you are nubmer one :smile:

技术太菜了 我也想啊