1.在工程中添加两个文件confuse.sh和func.listhtml
2.将如下代码复制到confuse.shlinux
#!/bin/bash # 这是Shell脚本,若是不懂shell,自行修炼:http://www.runoob.com/linux/linux-shell.html # 如下使用sqlite3进行增长数据,若是不了解sqlite3命令,自行修炼:http://www.runoob.com/sqlite/sqlite-tutorial.html #数据表名 TABLENAME="CodeObfuscationOC" #数据库名 SYMBOL_DB_FILE="CodeObfuscation.db" #要被替换的方法列表文件 STRING_SYMBOL_FILE="$PROJECT_DIR/$PROJECT_NAME/func.list" #被替换后的宏定义在此文件里 HEAD_FILE="$PROJECT_DIR/$PROJECT_NAME/CodeObfuscation.h" #维护数据库方便往后作bug排查 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 } #生成随机16位名称 randomString() { openssl rand -base64 64 | tr -cd 'a-zA-Z' | head -c 16 } #删除旧数据库文件 rm -f $SYMBOL_DB_FILE #删除就宏定义文件 rm -f $HEAD_FILE #建立数据表 createTable #touch命令建立空文件,根据指定的路径 touch $HEAD_FILE echo '#ifndef CodeObfuscation_h #define CodeObfuscation_h' >> $HEAD_FILE echo "//confuse string at `date`" >> $HEAD_FILE #使用cat将方法列表文件里的内容所有读取出来,造成数组,而后逐行读取,并进行替换 cat "$STRING_SYMBOL_FILE" | while read -ra line; do if [[ ! -z "$line" ]] then random=`randomString` echo $line $random #将生成的随机字符串插入到表格中 insertValue $line $random #将生成的字符串写入到宏定义文件中,变量是$HEAD_FILE echo "#define $line $random" >> $HEAD_FILE fi done echo "#endif" >> $HEAD_FILE sqlite3 $SYMBOL_DB_FILE .dump
3.在build phases 中添加 run script,输入confuse.sh的路径sql
4.在func.list中加入须要混淆的代码名,build一下,把生成的CodeObfuscation.h添加到工程,并把CodeObfuscation.h引入到工程的pch文件中便可。shell
5.此方法混淆多参数的方法时,须要将每一个参数的名字添加到func.list数据库