使用STCObfuscator框架可以生成Md5加密的字符串,在debug環(huán)境下運行生成混淆宏扮宠,在release打包后生成對應的混淆后的二進制文件狐榔。
如果你的工程支持cocoapod,你可以直接添加!pod "STCObfuscator"?
使用:
在Appdelegate中 #import "STCObfuscator.h"
把下面的代碼加入到Appdelegate didFinishLaunchingWithOptions方法里收捣,
#import "STCObfuscator.h"
#if (DEBUG == 1)? ??
[[STCObfuscator obfuscatorManager] confuseWithRootPath:[NSString stringWithFormat:@"%s", STRING(ROOT_PATH)] resultFilePath:[NSString stringWithFormat:@"%@/STCDefination.h", [NSString stringWithFormat:@"%s", STRING(ROOT_PATH)]] linkmapPath:[NSString stringWithFormat:@"%s", STRING(LINKMAP_FILE)]];
#endif
你也可以配置一些類或者方法不進行混淆:
第一步:
在 Build Settings->Preprocessor Macros->DEBUG 中添加環(huán)境變量 LINKMAP_FILE=$(TARGET_TEMP_DIR)/$(PRODUCT_NAME)-LinkMap-$(CURRENT_VARIANT)-$(CURRENT_ARCH).txt 和 ROOT_PATH="${SRCROOT}"?
第二步:
在 Build Settings 開啟Write Link Map File, 設(shè)置成 YES
第三步:將下面的腳本添加到 Build Phases
dir=${SRCROOT}
file_count=0
file_list=`ls -R $dir 2> /dev/null | grep -v '^$'`
for file_name in $file_list
do
temp=`echo $file_name | sed 's/:.*$//g'`
if [ "$file_name" != "$temp" ]; then
cur_dir=$temp
else if [ ${file_name##*.} = a ]; then
find -P $dir -name $file_name > tmp.txt
var=$(cat tmp.txt)
nm $var > ${file_name}.txt
rm tmp.txt
fi
if [ ${file_name##*.} = framework ]; then
find -P $dir -name ${file_name%%.*} > tmp.txt
var=$(cat tmp.txt)
nm $var > ${file_name}.txt
rm tmp.txt
fi
fi
done
第四步:
在預編譯文件最前面中添加以下代碼
#if (DEBUG != 1)
#import "STCDefination.h"
#endif
第五步:
在DEBUG環(huán)境下用模擬器運行工程嫁乘,在STCDefination.h頭文件中生成混淆的宏。
所有的混淆符號會保留在工程目錄下的confuse.json蜓斧。
第六步:
把混淆后在工程目錄下生成的STCDefination.h頭文件加入到工程中挎春。
混淆后豆拨,如果工程增加代碼能庆,需要再次混淆,先清空STCDefination.h里面的內(nèi)容搁胆,不能留任何空格和換行,然后pod update攀例,再次在模擬器DEBUG環(huán)境下運行顾腊。
第七步:在 RELEASE 環(huán)境下運行工程,整理或者清除報錯的宏梆惯,實現(xiàn)代碼混淆吗垮。
GitHUb地址:https://github.com/chenxiancai/STCObfuscator