iOS程序安全-代码混淆

作者: 洲洲哥 | 来源:发表于2016-07-15 14:17 被阅读4508次

    本文首发地址

    最近第三方测试机构给了一份测试报告。罗罗列列的给了将近有20条的问题。
    我就选出其中两条给大家说一下解决办法。

    1:代码混淆
    为什么要搞代码混淆:就是把关键函数混淆,如果有反编译的工具,编译出来之后,看不到主要函数的名字。保证程序安全,当然就要搞混淆了。

    推荐一个比较笨的方法:宏定义

    我们在工程里创建一个.pch文件。
    关于这个文件,大家都知道。在整个app中他贯通整个程序。就是宏吗!!!

    1:创建一个.pch文件(关于配置pch文件的方法自行搜索)
    2:创建一个头部文件。命名为Fuscation.h(注意)
    3:在pch文件中引入

    #import "Fuscation.h"
    

    4:使用
    这次在混淆的时候,主要把登陆、注册、关键的一些函数都给混淆了
    比如我们的登陆函数叫做

    - (void)loginRequest:(NSString *)Name {}
    

    这个时候我们要对这个函数混淆,我们只需要在我们刚刚创建的“Fuscation.h”头文件里只需要写上下面的函数

    #define loginRequest eqxvXUDIReajGjoF
    

    NOTICE: loginRequest后面的一些字符,就是我们要给他混淆的结果。这个结果,我们可以对他MD5、或者你乱写都没问题。

    如果你搞得没错,这时候看看你的函数名字都已经变色了。

    有的时候可能函数有多个参数如下

    -(void)chengUserName:(NSString *)names withPwd:(NSString *)pwd {}
    

    我们混淆的时候可以在“Fuscation.h”这样写:

    #define chengUserName YwJTjEspxeLAPlbq
    #define withPwd IyJapptwJNuhKrnO
    

    如有问题可添加我的QQ:1290925041
    还可添加QQ群:234812704(洲洲哥学院)
    欢迎各位一块学习,提高逼格!
    也可以添加洲洲哥的微信公众号

    更多消息

    更多信iOS开发信息 请以关注洲洲哥 的微信公众号,不定期有干货推送:

    这里写图片描述

    相关文章

      网友评论

      • 青春偶遇夕阳:这样做只是增加可读性难度,但是如果关键方法被混淆,是不是会让反编译出来的代码有种此地无银三百两的感觉~ 请问有没有什么别的方式能够让对手不能反编译出来函数名
      • EmptyWalker:敢问这样的混淆有点在哪里
        洲洲哥:@EmptyWalker
        宏 作为一个预处理命令,第一他不分配内存,他只是 “引用、替换”类似的作用。
        宏在编译时候就处理完了,生成的可执行文件里面再没有宏
        C程序编译时将宏名替换成字符串,这个过程的过程称为“宏展开”。

        在“宏展开”后,宏所定义的内容是否需要分配内存,就看宏的替换的结果了。
        但这个就不算宏所占用的内存了。

        总结来一句话:宏不占用内存! 不在内存中,还能扫描到吗? 亲
        EmptyWalker:@洲洲哥 也就是说,用这样的宏去混淆之后, 反编译出来的代码,显示出来就是宏设置的乱码了。那他还能不能根据这个乱码找到这个宏呢 :smile:
        洲洲哥:@EmptyWalker 优点 就是在把你的app逆向的时候,让他看不清你的函数名字。不做这样的混淆,人解析一看都和源代码 没啥区别咯

      本文标题:iOS程序安全-代码混淆

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