代码混淆选择性混淆步骤
代码混淆
选择性混淆
步骤
1、创建 和 func.list 文件
—— 就是脚本文件,将需要混淆的 属性名 和 方法名 用随机字符串换
func.list —— 用来罗列需要混淆的 方法名 和 属性名 。
$ touch confuse.sh$ touch func.list复制代码
2、添加进项目
3、添加运行脚本
4、设置脚本相对路径
这里设置的是 根路径;可以根据情况,放置到文件夹下
5、编写 脚本文件 内容
在 Xcode 中,对 文件,进行编写
#!/usr/bin/env bashTABLENAME=symbolsSYMBOL_DB_FILE="symbols"STRING_SYMBOL_FILE="func.list"HEAD_FILE="$PROJECT_DIR/$PROJECT_NAME/codeObfuscation.h"export LC_CTYPE=C #维护数据库方便日后作排重createTable(){ echo "create table $TABLENAME(src text, des text);" | sqlite3 $SYMBOL_DB_FILE} insertValue(){ echo "insert into $TABLENAME values('$1' ,'$2');" | sqlite3 $SYMBOL_DB_FILE} query(){ echo "select * from $TABLENAME where src='$1';" | sqlite3 $SYMBOL_DB_FILE} ramdomString(){ openssl rand -base64 64 | tr -cd 'a-zA-Z' |head -c 16} rm -f $SYMBOL_DB_FILErm -f $HEAD_FILEcreateTable touch $HEAD_FILEecho '#ifndef Demo_codeObfuscation_h#define Demo_codeObfuscation_h' >> $HEAD_FILEecho "//confuse string at `date`" >> $HEAD_FILEcat "$STRING_SYMBOL_FILE" | while read -ra line; do if [[ ! -z "$line" ]]; then ramdom=`ramdomString` echo $line $ramdom insertValue $line $ramdom echo "#define $line $ramdom" >> $HEAD_FILE fidoneecho "#endif" >> $HEAD_FILE sqlite3 $SYMBOL_DB_FILE .dump复制代码
6、设置权限 —— Permission denied
如果直接进行 command + B 编译
/Users/Company/Library/Developer/Xcode/DerivedData/lottery-dwewlqubikmoxoejkcmvvcncfvcg/Build/Intermediates.noindex/lottery.build/Debug-iphoneos/lottery.build/Script-68BE413C21073C8B0059B160.sh: line 2: /Users/Company/Desktop/GiteeRepository/cp55new/lottery_new/confuse.sh: Permission denied复制代码
这时候,要进行 脚本权限设置
进入项目目录下$ chmod 755 confuse.sh复制代码
7、进行编译
进行 command + B 编译之后,在项目目录下,会有一个 codeObfuscation 文件;将它拖进项目中
8、pch文件内,添加头文件
#import "codeObfuscation.h"复制代码
9、添加要混淆的方法名,属性名
1. 类方法2. 实例方法 2.1 实例方法,如果是多个参数;把冒号之前的 <方法字段> 都复制进去3. 属性复制代码 方法字段>
10、运行程序 —— 成功检验