Objective-C代码混淆之宏替换
来源:互联网 发布:如何注册淘宝联盟 编辑:程序博客网 时间:2024/05/27 20:21
我是安照念茜大婶的方法来混淆的。感谢
混淆之前你要会class-dump出.app来查看混淆结果
https://cnbin.github.io/blog/2015/05/21/objective-c-class-dump-an-zhuang-he-shi-yong-fang-fa/
这个是class-dump的安装与使用的git;
在class-dump 安装有个问题要注意:当 把 放到/usr/local/bin
目录下,在终端输入class-dump
,显示class-dump的版本后,就可以正常使用class-dump命令了。 时可能没有权限移动。要重启mac commod+r进入关闭权限。
/usr/local/bin这个目录没用,要放到/usr/bin/目录下
混淆的方法
方法名混淆其实就是字符串替换,是#define,宏替换利用#define的方法有一个好处,就是可以把混淆结果合并在一个.h中,在工程Prefix.pch的最前面#import这个.h。不导入也可以编译、导入则实现混淆。
使用脚本替换方法名(很简单也有一点点low) 第一、新建一个工程,在工程项目路径中建立一个confuse.sh、一个func.list文件先打开终端,然后 cd 到你的项目工程路径下: cd 到项目工程路径下然后创建两个文件,一个 confuse.sh,一个 func.list: 注意点,不按照下面两个操作,运行脚本会报错:
创建两个文件这时候我们打开这个工程文件夹,可以看到,这两个文件已经创建好了: 我们创建的两个文件打开工程,把刚才创建的两个文件加进去,右键你的项目蓝色标志,然后选择 Add Files to...: 添加到工程中
添加进去了: 成功添加点击 confuse.sh**(confuse.sh,和func.list必须添加到NSUTest目录下)**发现还是空白的,什么都没有,现在要在这上面加上代码了: 需要添加的代码原脚本代码出自:http://blog.csdn.net/yiyaaixuexi/article/details/29201699 第二、在 .pch 文件中添加代码不要跟我说你的工程没有 .pch 文件,如果真没有,自行百度,这应该算是标配,常识来的。
重点讲下.pch文件: 记得配置路径 (我就是在这没配置一直dump都是没混淆)
.pch文件
#import "codeObfuscation.h"
这个是全局引用宏定义 ,其实也可以你混淆那个文件的就在那个文件导入这个头文件配置PCH :
1.创建pch
2.在building settings 中 设置 Apple LLVM 7.1 language
3.Precompile Prefix Header 设置为YES 下一行
Prefix Heaser 设置内容为: $(SRCROOT)/网易新闻/pchFile.pch
#ifdef __OBJC__ #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> //添加混淆作用的头文件(这个文件名是脚本confuse.sh中定义的)
#endif#import "codeObfuscation.h"
写到这里,编译的时候是不是发现报错啦?刚才的 .pch 文件里面的添加的代码居然报错了: 报错了!不要慌,先把那句报错的先给注释掉: 先注释掉报错的这一行代码然后我们继续往下走! 第三、配置 Build Phase1:添加 Run Script 添加 Run Script
2:配置好 Run Script 配置好 Run Script然后再回到终端,同样先 cd 到工程目录下,接着我们要打开刚才 .sh 这个脚本文件的运行权限,因为默认是没有这个权限的,在终端输入以下指令: 打开运行权限回车,搞定,回到我们的工程,先 command + b 编译一下工程,然后再把我们刚刚注释掉的那句代码解开: 打开刚刚被我们注释掉的代码再次 command + b 编译,现在是不是编译通过啦?刚刚报错的,现在解决了! 基本上就搞定了,剩下的就是添加上我们想要混淆的变量名或函数名 第四、在 func.list 文件里,写入待混淆的函数名如果像下面这几个属性跟函数: 需要混淆的属性跟函数名那么就这在 fun.list 就这么列出来就好了: 列出需要混淆的,大功告成!现在 command + b 运行一下,然后在哪里看结果呢,请看这里: 运行结果可能这么看有点麻烦,那来个简单一点的: 查看哈哈,你会发现,多了好多宏定义,其实就是我们刚才的字段来的: 结果当然,这也只是最简单的代码混淆而已,APP安全还是有很多需要注意的。一步一步来吧! **最后需要说明,出现下图所示的这里并不一定说明代码混淆成功,只能说明你的脚本运行成功,.pch文件中一定要导入#import "codeObfuscation.h"
**最好对自己混淆的代码 打包成ipa进行dump,查看你混淆的头文件的函数名是不是随机的字符串了.
你要亲自.app calss-dump 才能够看到混淆没混淆
这是其他大神的混淆
这个 ZM大神的我没看懂,但也是混淆的一个办法,这个很厉害
https://github.com/kongcup/ZMConfuse
- Objective-C代码混淆之宏替换
- Objective-C代码混淆
- Objective-C代码混淆
- Objective - C 进行代码混淆
- C代码混淆之旅
- iOS安全攻防(二十三):Objective-C代码混淆
- iOS安全攻防(二十三):Objective-C代码混淆
- iOS安全攻防(二十三):Objective-C代码混淆
- iOS安全攻防(二十三):Objective-C代码混淆
- iOS安全攻防(二十三):Objective-C代码混淆
- 安全攻防——Objective-C代码混淆
- Objective-C的方法替换
- Objective-C的方法替换
- Objective-C的方法替换
- Objective-C的方法替换
- Objective-C的方法替换
- Objective-C - 里氏替换原则
- iOS之代码混淆
- hdu6165 (缩点+拓扑排序)
- WiFi通信上位机实现
- HTML非主体结构元素
- 过滤器(Filter)
- SpringMVC @RequestBody接收Json对象字符串
- Objective-C代码混淆之宏替换
- Flash(ActionScript,AS) & JavaScript通信浅谈
- Java 同步函数
- SDUT:找朋友 BFS&&DFS
- 基于websocket和swoole的简易聊天室
- linux编辑文件时显示行号
- 【JavaSE学习笔记】网络编程_UDP协议,TCP协议
- [排序] 归并排序(Python)
- (UDP)循环输入聊天