iOS混淆代码(方式一)

之所以混淆代码是为了防止别人反编译代码后,根据方法名称来窥探你的APP。从而了解APP内部实现或者破解APP。

混淆代码之前class-dump下代码。如图,发现方法名称完美的暴露了。

iOS混淆代码(方式一)_第1张图片
混淆之前

混淆之后,发现syn_loginWithName:password:方法名变成了毫无意义的名称。

iOS混淆代码(方式一)_第2张图片
混淆之后

好,混淆的作用已经演示清楚。那么接下来就说说如何实现混淆。


方式一

第一步:建立测试项目,同时新建一个confuse.sh、一个func.list文件。如图:

iOS混淆代码(方式一)_第3张图片

第二步:将新建的两个文件拖到项目中。如图:

iOS混淆代码(方式一)_第4张图片

第三步:将iOS安全攻防(二十三):Objective-C代码混淆 - 博客频道 - CSDN.NET 这篇文章中的脚本代码拷贝到confuse.sh文件中。如图:

iOS混淆代码(方式一)_第5张图片
拷贝代码

第四步:建立一个.pch文件,并添加代码。(现在的项目都不会自动创建这个文件了)

一:新建一个Header File文件,如图:

iOS混淆代码(方式一)_第6张图片
新建TestConfusion-Prefix.pch文件

二:在项目中配置一下:

iOS混淆代码(方式一)_第7张图片
配置.pch文件

三:在.pch文件中添加如下代码:(这个头文件的引入要写在最上面)

iOS混淆代码(方式一)_第8张图片

第五步:配置 Build Phase,并添加 Run Script

iOS混淆代码(方式一)_第9张图片
添加Run Script

添加完成后要赋予该文件权限。打开终端,cd到项目根目录并执行该命令:

chmod 755 confuse.sh

好了,回到项目command + b 编译一下,会发现报错。

iOS混淆代码(方式一)_第10张图片
报错

这时要注释.pch文件中 刚刚添加的那句话:

iOS混淆代码(方式一)_第11张图片
注释

再编译一下,会发现编译成功。编译成功后,在把刚刚注释的地方打开,再次编译,提示编译成功。

大功告成,混淆代码要做的准备工作已经完成。接下来就是配置你要混淆的函数名和变量名了。

第六步:混淆

假设我们要混淆图中的两个地方,那么我们就要在func.list文件中配置好。

iOS混淆代码(方式一)_第12张图片
iOS混淆代码(方式一)_第13张图片
配置func.list

编译项目,如图:

iOS混淆代码(方式一)_第14张图片
混淆代码成功

接着验证一下是否真的混淆成功了。

将项目打包,并class-dump下,发现方法名和属性名变了。

iOS混淆代码(方式一)_第15张图片
验证

Demo地址:

github.com/LarkNan/TestConfusion.git 

参考文章:

iOS 对源代码进行混淆 -  

iOS安全攻防(二十三):Objective-C代码混淆 - 博客频道 - CSDN.NET 


你可能感兴趣的:(iOS混淆代码(方式一))