一.目的:
1.通過審核
原因是規避代碼相似度極高而過不了機審.增加代碼.代碼混淆
2.安全需要
對安全性能要求較高的產品.防止別人通過class-dump反編譯你的應用得到源碼
文章主要講解方法名混淆的問題。如有問題,還請大神指點! OK let do it
二.執行:
1.打開終端 先cd到工程的目錄下 創建兩個腳本文件
confuse.sh
func.list
*****$ cd /Users/king/Desktop/test
*****$ touch confuse.sh
*****$ touch func.list
屏幕快照 2018-11-22 下午2.36.35.png
接下來把這兩個文件加到工程中
屏幕快照 2018-11-22 下午3.08.38.png
在confuse.sh 中加入腳本代碼.腳本代碼來自念茜姐姐(博客:)如下
https://blog.csdn.net/yiyaaixuexi/article/details/29201699
#!/usr/bin/env bash
TABLENAME=symbols
SYMBOL_DB_FILE="symbols"
//下邊這三個要行需要根據自己文件路徑
STRING_SYMBOL_FILE="$PROJECT_DIR/BaseFrame/func.list"
CONFUSE_FILE="$PROJECT_DIR/BaseFrame/"
HEAD_FILE="$PROJECT_DIR/BaseFrame/Supporting Files/codeObfuscation.h"
export LC_CTYPE=C
#取以.m或.h結尾的文件以+號或-號開頭的行 |去掉所有+號或-號|用空格代替符號|n個空格跟著<號 替換成 <號|開頭不能是IBAction|用空格split字串取第二部分|排序|去重復|刪除空行|刪掉以init開頭的行>寫進func.list
grep -h -r -I "^[-+]" $CONFUSE_FILE --include '*.[mh]' |sed "s/[+-]//g"|sed "s/[();,: *\^\/\{]/ /g"|sed "s/[ ]*</</"| sed "/^[ ]*IBAction/d"|awk '{split($0,b," "); print b[2]; }'| sort|uniq |sed "/^$/d"|sed -n "/^HYF_/p" >$STRING_SYMBOL_FILE
#維護數據庫方便日后作排重,一下代碼來自念茜的微博
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
然后在func.list 中加入需要混淆的方法名 (隨意寫兩個方法名)
HYF_Function1
HYF_Function2
另再創建一個.h文件 codeObfuscation.h 并加入方法名
#ifndef Demo_codeObfuscation_h
#define Demo_codeObfuscation_h
#define HYF_Function1 JIUHkoTUOpodkHJK
#define HYF_Function2 BpfFGCqvmxHVCtct
#endif
再把codeObfuscation.h 的頭文件加入到.pch 文件 配置pch文件這里不再闡述了哈
屏幕快照 2018-11-22 下午3.28.03.png
[圖片上傳中...(WechatIMG1.jpeg-103601-1542872148151-0)]
這時在配置一下路徑就差不多啦
WechatIMG1.jpeg
第四步點擊加號 new run script phase 就會出現第五步啦
屏幕快照 2018-11-22 下午3.37.19.png
設置好confuse.sh路徑就好了
接下來直接調用一下該方法就行了
-(void)HYF_Function1
{
//打印方法名
NSLog(@"Current method: %@",NSStringFromSelector(_cmd));
}
到這里就收工了.中途有可能會出現報小紅點點.有可能的情況
1.路徑配置問題
處理.仔細檢查路徑的問題.修改好正確的就OK
2.沒有權限問題
回到終端執行代碼.開放權限
chmod 755 coufuse.sh
大功告成.有啥問題歡迎評論哦
demo URL :
https://github.com/kingiiyy/Confuseshell
更新時間: 2018-11-25
Oh no 剛剛收到個不好的消息.現在iOS的審核機制越來越嚴格了.添加這個腳本會直接導致審核被拒絕了..代碼混淆是為了過機審那一關..可還是被拒絕了
屏幕快照 2018-11-22 下午5.08.25.png
WechatIMG3.jpeg
同志們需要混淆代碼用到腳本的慎重使用了