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數據庫