iOS混淆代码(方式一)
之所以混淆代码是为了防止别人反编译代码后,根据方法名称来窥探你的APP。从而了解APP内部实现或者破解APP。
混淆代码之前class-dump下代码。如图,发现方法名称完美的暴露了。
![](https://img.haomeiwen.com/i2324526/a889aede6b2a4273.png)
混淆之后,发现syn_loginWithName:password:方法名变成了毫无意义的名称。
![](https://img.haomeiwen.com/i2324526/29de30c06b5dc1e0.png)
好,混淆的作用已经演示清楚。那么接下来就说说如何实现混淆。
方式一
第一步:建立测试项目,同时新建一个confuse.sh、一个func.list文件。如图:
![](https://img.haomeiwen.com/i2324526/70e64d6b38a446f3.jpeg)
第二步:将新建的两个文件拖到项目中。如图:
![](https://img.haomeiwen.com/i2324526/da4114766ae4fbb5.png)
第三步:将iOS安全攻防(二十三):Objective-C代码混淆 - 博客频道 - CSDN.NET 这篇文章中的脚本代码拷贝到confuse.sh文件中。如图:
![](https://img.haomeiwen.com/i2324526/746675b1887b12e3.png)
第四步:建立一个.pch文件,并添加代码。(现在的项目都不会自动创建这个文件了)
一:新建一个Header File文件,如图:
![](https://img.haomeiwen.com/i2324526/1be9218648669fcc.png)
二:在项目中配置一下:
![](https://img.haomeiwen.com/i2324526/9127bbb6323cb74d.png)
三:在.pch文件中添加如下代码:(这个头文件的引入要写在最上面)
![](https://img.haomeiwen.com/i2324526/c438370e87654694.png)
第五步:配置 Build Phase,并添加 Run Script
![](https://img.haomeiwen.com/i2324526/f57bb62aaa8593d5.png)
添加完成后要赋予该文件权限。打开终端,cd到项目根目录并执行该命令:
chmod 755 confuse.sh
好了,回到项目command + b 编译一下,会发现报错。
![](https://img.haomeiwen.com/i2324526/c1f1856a669dc457.png)
这时要注释.pch文件中 刚刚添加的那句话:
![](https://img.haomeiwen.com/i2324526/7157faa3abb36750.png)
再编译一下,会发现编译成功。编译成功后,在把刚刚注释的地方打开,再次编译,提示编译成功。
大功告成,混淆代码要做的准备工作已经完成。接下来就是配置你要混淆的函数名和变量名了。
第六步:混淆
假设我们要混淆图中的两个地方,那么我们就要在func.list文件中配置好。
![](https://img.haomeiwen.com/i2324526/29f30b0e4214a365.png)
![](https://img.haomeiwen.com/i2324526/496e6e957a6db301.png)
编译项目,如图:
![](https://img.haomeiwen.com/i2324526/7caf0a02de2b547b.png)
接着验证一下是否真的混淆成功了。
将项目打包,并class-dump下,发现方法名和属性名变了。
![](https://img.haomeiwen.com/i2324526/47a99703d3b01616.png)
Demo地址:
github.com/LarkNan/TestConfusion.git
参考文章:
iOS安全攻防(二十三):Objective-C代码混淆 - 博客频道 - CSDN.NET