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