iOS代码混淆初探
在没有对应用的代码做过特殊处理的情况下,一般应用的代码中的类名和方法都是明文的。在逆向分析中,通过class-dump获取MachO可执行文件中的所有类、定义的方法和属性,就能很快的从名字入手猜到这个方法是做什么用的,所以类名和方法名的混淆就特别重要了。
方法一:运用宏定义的方式进行混淆
这是一种比较简单又方便的做法,我们只需要在release打包时将现有工程里面的类名和方法名替换为一些无意义的字符串就可以了。这种全局的宏定义替换一般都是写在pch预编译文件里的,在Xcode中我们可以新建pch文件,然后在BuildSettings中设置预处理文件的地址就可以了。
因为我们对每一个类进行这样的操作会显得很麻烦,Git上有一个开源项目叫ios-class-guard也是运用这种宏定义的方式,它的原理就是把使用的所有系统库符号dump下来并过滤掉,只生成用户需要混淆的符号(https://github.com/Polidea/ios-class-guard)。