代碼混淆

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

相關文章
相關標籤/搜索