ios 代码混淆

来源:互联网 发布:汽配个性淘宝店名大全 编辑:程序博客网 时间:2024/05/29 07:29

代码混淆,刚刚看到是不是有点懵逼,反正我是最近才接触到这么个东西,因为之前对于代码和APP,只需要实现功能就好了,根本没有考虑什么安全问题。
而这一次应用交付时,客户进行安全评估提出一个问题:
使用classdump对原程序进行dump,可以dump出所有源程序的函数所有信息:源程序所有函数类型,变量全部泄露。这样的话,让攻击者,也就是黑客们了解了程序结构方便逆向。
因为在工程中,我们这些变量或函数命名都是有一定可读性的,例如跟用户名相关的,那一般里面会有 userName,跟密码相关的一般会有 passWord,这样定义也是为了我们自己代码可读性更强,我们修改的时候才更加的方便。但是我们相信,这么个定义法,我们只是希望方便我们自己,我们可不希望方便黑客们去破解我们的APP。

那我们先来看看用这个所谓的 classdump 对原程序进行 dump,究竟用 dump 出些什么东西来:


所有的 .h 文件

.h 文件全暴露了,那点开的话,你里面的函数名,属性名也一样清清楚楚:


属性、函数

惊了个呆,那为了防止这样全裸,这时候我们就需要用到代码混淆了。
大概什么个意思呢?简单点讲,就是把你的这些个用户名和函数名弄得没有可读性,比如你的用户名的变量名定义为 userName,那你自己用肯定是正常的,如果黑客们 dump 出来的这个变量名会变成 abcd 或 1234 ,这样他也就不清楚你这是用来干吗的了。

第一、在工程项目路径中建立一个confuse.sh、一个func.list文件
先打开终端,然后 cd 到你的项目工程路径下:


cd 到项目工程路径下

然后创建两个文件,一个 confuse.sh,一个 func.list:


创建两个文件

这时候我们打开这个工程文件夹,可以看到,这两个文件已经创建好了:


我们创建的两个文件

打开工程,把刚才创建的两个文件加进去,右键你的项目蓝色标志,然后选择 Add Files to...:


添加到工程中

添加进去了:


成功添加

点击 confuse.sh ,发现还是空白的,什么都没有,现在要在这上面加上代码了:


需要添加的代码

原脚本代码出自:http://blog.csdn.net/yiyaaixuexi/article/details/29201699

第二、在 .pch 文件中添加代码
不要跟我说你的工程没有 .pch 文件,如果真没有,自行百度,这应该算是标配,常识来的。

#ifdef __OBJC__      #import <UIKit/UIKit.h>      #import <Foundation/Foundation.h>      //添加混淆作用的头文件(这个文件名是脚本confuse.sh中定义的)      #import "codeObfuscation.h"  #endif

写到这里,编译的时候是不是发现报错啦?刚才的 .pch 文件里面的添加的代码居然报错了:


报错了!

不要慌,先把那句报错的先给注释掉:


先注释掉报错的这一行代码

然后我们继续往下走!

第三、配置 Build Phase
1:添加 Run Script


添加 Run Script

2:配置好 Run Script


配置好 Run Script

然后再回到终端,同样先 cd 到工程目录下,接着我们要打开刚才 .sh 这个脚本文件的运行权限,因为默认是没有这个权限的,在终端输入以下指令:


打开运行权限

回车,搞定,回到我们的工程,先 command + b 编译一下工程,然后再把我们刚刚注释掉的那句代码解开:


打开刚刚被我们注释掉的代码

再次 command + b 编译,现在是不是编译通过啦?刚刚报错的,现在解决了!

基本上就搞定了,剩下的就是添加上我们想要混淆的变量名或函数名

第四、在 func.list 文件里,写入待混淆的函数名
如果像下面这几个属性跟函数:


需要混淆的属性跟函数名

那么就这在 fun.list 就这么列出来就好了:


列出需要混淆的

大功告成!现在 command + b 运行一下,然后在哪里看结果呢,请看这里:


运行结果

可能这么看有点麻烦,那来个简单一点的:


查看

哈哈,你会发现,多了好多宏定义,其实就是我们刚才的字段来的:


结果

当然,这也只是最简单的代码混淆而已,APP安全还是有很多需要注意的。一步一步来吧!


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 店铺访客被拒怎么办 steam锁支付后怎么办 芦荟茎太长了怎么办 网店加盟被骗怎么办 分期乐忘记账号怎么办 贴墙纸遇到插头怎么办 用了屈臣氏过敏怎么办 商品房内电箱不符合标准怎么办 淘宝上恶意退货怎么办 退货率高了怎么办 淘宝店被关了钱怎么办 买家不申请退款怎么办 被买家恶意投诉怎么办 淘宝投诉后退款怎么办 天猫投诉不成功怎么办 苹果手机打不开流量怎么办 苹果6流量打不开怎么办 苹果笔记本电脑打不开软件怎么办 苹果软件蜂窝打不开怎么办 苹果手机wifi打不开怎么办 苹果app变成韩语怎么办 ipad键盘变成英文怎么办 苹果8商店打不开怎么办 苹果手机不能下载怎么办 天猫魔盒遥控器丢了怎么办 电视盒子声音小怎么办 宽带los亮红灯怎么办 猫的lan灯不亮怎么办 光猫los灯不亮怎么办 移动宽带红灯亮怎么办 ie打不开网页怎么办win10 win10系统ie打不开怎么办 笔记本电脑玩lol卡怎么办 火狐浏览器电脑版打不开怎么办 手机淘宝没密码怎么办 实体店不让退货怎么办 出生公证双认证怎么办 手机淘宝网速慢怎么办 淘宝开店认证不通过怎么办 开网店不会做图怎么办 库乐队上传错误怎么办