Swift實現(xiàn)代碼混淆詳解
1. 新建相關(guān)文件
新建文件confuse.sh和func.list
創(chuàng)建文件方式如下:
$ cd ~/Desktop/ceshi $ touch confuse.sh $ touch func.list
最終結(jié)果如下:

2. 導入文件至項目
將創(chuàng)建的confuse.sh文件以及func.list文件導入項目
最終結(jié)果如下

3. 修改項目配置
3.1 修改TARGETS配置
如果沒有RunScript。請點擊紅框內(nèi)+進行新增

RunScript內(nèi)輸入的文本
$PROJECT_DIR/confuse.sh
3.2 修改指令文件
3.2.1 打開confuse.sh文件,復制并粘貼一下文本
#!/usr/bin/env bash
TABLENAME=symbols
SYMBOL_DB_FILE="symbols"
STRING_SYMBOL_FILE="func.list"
HEAD_FILE="$PROJECT_DIR/$PROJECT_NAME/codeObfuscation.h"
export LC_CTYPE=C
#維護數(shù)據(jù)庫方便日后作排重
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_FILE
rm -f $HEAD_FILE
createTable
touch $HEAD_FILE
echo '#ifndef Demo_codeObfuscation_h
#define Demo_codeObfuscation_h' >> $HEAD_FILE
echo "http://confuse string at `date`" >> $HEAD_FILE
cat "$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
fi
done
echo "#endif" >> $HEAD_FILE
sqlite3 $SYMBOL_DB_FILE .dump
3.2.2 修改指令文件權(quán)限
$ cd ~/Desktop/ceshi $ chmod 755 confuse.sh
3.3 修改需要混淆的方法名文件
打開func.list文件,在文件內(nèi)輸入需要進行方法名混淆的方法名
示例如下:
imageCompress blurImage viewDidLoad
3.4 修改pch文件配置
1、如果沒有PrefixHeader.pch這種文件,則需要新建一個
2、打開PrefixHeader.pch文件
#ifndef PrefixHeader_pch #define PrefixHeader_pch // Include any system framework and library headers here that should be included in all compilation units. #import "CodeObfuscation.h" #endif /* PrefixHeader_pch */
4. 運行效果
運行com+B

希望本文所述對大家的Swift開發(fā)和學習有所幫助。
相關(guān)文章
Swift中的條件切換語句switch...case學習教程
這篇文章主要介紹了Swift中的條件切換語句switch...case學習教程,Swift中的switch...case支持的數(shù)據(jù)類型很多,非常之強大,需要的朋友可以參考下2016-04-04
使用Swift實現(xiàn)iOS App中解析XML格式數(shù)據(jù)的教程
這篇文章主要介紹了使用Swift實現(xiàn)iOS App中解析XML格式數(shù)據(jù)的教程,講到了iOS中提供的NSXMLParser和NSXMLParserDelegate兩個API的用法,需要的朋友可以參考下2016-04-04
如何在Swift?中使用?async?let?并發(fā)運行后臺任務(wù)
Swift?異步編程是一種編寫允許某些任務(wù)并發(fā)運行而不是按順序運行的代碼的方法,這篇文章主要介紹了在Swift中使用async?let并發(fā)運行后臺任務(wù),需要的朋友可以參考下2023-06-06
詳解Swift中的數(shù)據(jù)類型類型轉(zhuǎn)換
Swift中的類型轉(zhuǎn)換可以結(jié)合類的繼承等面向?qū)ο蟮木幊烫匦詠磉M行,本文中我們就來詳解Swift中的數(shù)據(jù)類型類型轉(zhuǎn)換,需要的朋友可以參考下2016-07-07
詳解Swift中的Characters字符類型與String字符串類型
Swift中的字符串操作相當便捷,下面我們來詳解Swift中的Characters字符類型與String字符串類型,需要的朋友可以參考下2016-06-06

