iOS项目混淆实战

前段时间,根据公司安排,研究了移动应用的加固与安全方面的知识,为了避免忘记,本篇文章主要记载使用步骤。

如果只是想在项目里进行代码混淆,阅读OLLVM代码混淆移植与使用这篇博客就行了。如果想实战操作,多理解一些原理和过程,推荐《iOS应用逆向与安全》这本书


代码混淆的大概流程是了解LLVM的架构,下载并编译LLVM,开发和调试Pass,LLVM Pass的源代码分析,替换Xcode编译器,大概研究了若干星期。。。。


终于在Xcode上集成了Toolchains,正常的Xcode上应该是没有这个选项的。我们首先用系统默认的Toolchains编译一下,并且把编译包另存一个地方。

然后我们再选择我们自己添加的Toolchains,并且设置Build Setting-->Build Options-->Enable Index-While-Building Functionality设置为No

设置混淆方式Apple Clang - Custom Compiler Flags -->Other C Flag 设置为-mllvm -sub -mllvm -sobf -mllvm -fla -mllvm -bcf

好了,打开Hopper或IDA ,把两个包放进去,找到ViewController.m文件的viewDidLoad方法观察

观察上面两张图,差距很明显。未混淆的代码,使用逆向工具,里面的业务逻辑基本能看懂,而混淆后的代码,通过增加一些无用的代码,拆分代码块,并使代码扁平化。提高了静态分析的难度。

静态库混淆以上同样适用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容