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