iOS混淆代码(方式一)

作者: 申铭 | 来源:发表于2016-12-11 14:33 被阅读1815次

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

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

混淆之前

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

混淆之后

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


方式一

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

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

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

拷贝代码

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

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

新建TestConfusion-Prefix.pch文件

二:在项目中配置一下:

配置.pch文件

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

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

添加Run Script

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

chmod 755 confuse.sh

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

报错

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

注释

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

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

第六步:混淆

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

配置func.list

编译项目,如图:

混淆代码成功

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

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

验证

Demo地址:

github.com/LarkNan/TestConfusion.git 

参考文章:

iOS 对源代码进行混淆 - 简书 

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


相关文章

网友评论

  • Jody526:这种可以过审吗?
    申铭:@桀杉 我也不太清楚,少量的应该可以吧。
  • zhao先生_89:你好,请问下,为啥按照这个方法混淆了代码,用IDA还是能够反编译出来原方法名?
  • GJCode:请教下,使用class_dump 反编译自己开发的静态库framework吗?
    GJCode:我查下了下,好像不行吗?会提示报错,不知道你遇到过没有
    申铭:对的,反编译自己的头文件.

本文标题:iOS混淆代码(方式一)

本文链接:https://www.haomeiwen.com/subject/afhpmttx.html