iOS 初探代码混淆(OC)
2018-06-12 18:32
323 查看
iOS 初探代码混淆(OC)
前言
自己做iOS开发也有几年的时间了,平时做完项目基本就直接打包上传到Appstore上,然后做上架操作了。但是最近,客户方面提出了代码安全的要求。说是要做代码混淆,这方面的工作之前从来没有接触过。然后就上网查了一下,原来有很多应用程序都做了代码混淆。看来是我固步自封了......
起因
使用classdump对原程序进行dump,可以dump出所有源程序的函数所有信息:源程序所有函数类型,变量全部泄露。这样的话,让攻击者,也就是黑客们了解了程序结构方便逆向。因为在工程中,我们这些变量或函数命名都是有一定可读性的,例如跟用户名相关的,那一般里面会有 userName,跟密码相关的一般会有passWord,这样定义也是为了我们自己代码可读性更强,我们修改的时候才更加的方便。但是我们相信,这么个定义法,我们只是希望方便我们自己,我们可不希望方便黑客们去破解我们的APP。 总结出来就是一句话:“会把你项目中的所有方法和变量都罗列出来”。
开始混淆:
1.
在进行代码混淆之前,我们需要在我们的项目中增加两个文件:
confuse.sh&
func.list
我们打开我们的终端命令行
先cd到你项目的路径下,然后回车
然后在终端中分别输入
touch confuse.sh和
func.list然后回车
这个时候打开我们的项目文件夹,就能看到多了两个文件。这个时候我们打开我们的工程,把我们创建的这两个文件添加到项目中去
2
这个时候我们点击我们的
confuse.sh文件可以看到里面的内容是空的,我们要填一些代码进去,点这个链接地址iOS安全攻防(二十三):Objective-C代码混淆可以把这位大神的代码粘贴到自己的
confuse.sh文件中
3
在项目中添加一个
.PCH文件。如果你说你不知道怎么添加
.pch,没关系。这里有个链接地址能帮到你ios中pch文件的创建与配置
成功添加
.pch文件之后,我们就要在
.pch文件中添加这么一句代码
#import"codeObfuscation.h然后我们编译一下,是不是报错了?是不是这样的?
Build Phases中的左上角的
+号,选中那个
New Run Script Phase,然后如下图所示,把你的
confuse.sh文件的地址写进去
4
然后接下来的就是如何进行代码混淆了。
这个时候你就找到一个你想要混淆的类(.h .m)文件都可以。把你想混淆的代码复制一下,然后粘贴到我们的
func.list文件中去。然后编译一下,然后把切换到这个界面
5
打完收工,Over!!!!!
6
注意:该方法只能针对有.m.h的类进行混淆,静态库等只有.h文件的没法进行混淆
7
传送门:Objective-C代码混淆
作者:c4ibd3
链接:https://juejin.im/post/5b06578f51882538c150744b
相关文章推荐
- iOS每日一记之———————————————OC代码混淆
- ios--网页js调用oc代码+传递参数+避免中文参数乱码的解决方案(实例)
- iOS 使用UIWebView把oc代码和javascript相关联
- iOS应用安全之代码混淆设计篇
- iOS安全攻防(二十三):Objective-C代码混淆
- iOS安全攻防:static和被裁的符号表,Objective-C代码混淆,敏感逻辑的保护方案(1)
- 搞Android用java偏偏要去看iOS的oc代码
- IOS之UICollectionView初探(代码实现)
- ProGuard进行混淆代码原理初探
- [iOS Hybrid实践:UIWebView中Html中用JS调用OC方法,OC执行JS代码]
- iOS代码混淆总结
- iOS代码混淆总结
- iOS安全攻防(二十三):Objective-C代码混淆
- iOS开发/App安全/代码自动混淆笔记
- 搞Android用java偏偏要去看iOS的oc代码
- iOS安全–浅谈关于iOS加固的几种方法,代码混淆,类名方法名混淆等
- 工作备忘-ios应用安全防护oc源代码混淆,防止class-dump攻击
- 搞Android用java偏偏要去看iOS的oc代码
- ios--网页js调用oc代码+传递参数+避免中文参数乱码的解决方案(实例)
- ios--网页js调用oc代码+传递参数+避免中文参数乱码的解决方案(实例+demo)