iOS 代码混淆

使用STCObfuscator框架可以生成Md5加密的字符串,在debug环境下运行生成混淆宏,在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 中添加环境变量 LINKMAP_FILE=$(TARGET_TEMP_DIR)/$(PRODUCT_NAME)-LinkMap-$(CURRENT_VARIANT)-$(CURRENT_ARCH).txt 和 ROOT_PATH="${SRCROOT}" 


第二步:

在 Build Settings 开启Write Link Map File, 设置成 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环境下用模拟器运行工程,在STCDefination.h头文件中生成混淆的宏。

所有的混淆符号会保留在工程目录下的confuse.json。


第六步:

把混淆后在工程目录下生成的STCDefination.h头文件加入到工程中。

混淆后,如果工程增加代码,需要再次混淆,先清空STCDefination.h里面的内容,不能留任何空格和换行,然后pod update,再次在模拟器DEBUG环境下运行。

第七步:在 RELEASE 环境下运行工程,整理或者清除报错的宏,实现代码混淆。


GitHUb地址:https://github.com/chenxiancai/STCObfuscator

你可能感兴趣的:(iOS 代码混淆)