最近發(fā)現(xiàn)了蘋果審核對于該方法的混淆包給予拒絕通過,解釋原因蘋果自己有自己的加密方法去保證安全性,防止反編譯不需要你去做混淆。我猜測和最近嚴打馬甲包也有關(guān)吧。?
回顧一下混淆方法晌梨,這個方法和腳本出自念茜。?
1须妻、新建confuse.sh和func.list文件?
confuse.sh就是腳本文件派任,將需要混淆的屬性名和方法名用隨機字符串替換。?
func.list文件用來羅列我們的需要進行混淆的方法和屬性名璧南。?
注意:這個兩個文件都需要在項目根目錄下掌逛。如圖?
2、Targets->Build Phases->Run Script?
在這添加$PROJECT_DIR/confuse.sh運行腳本文件司倚,如果沒有Run Script在左上角加號處添加:?
3豆混、在你的PrefixHead文件添加引用codeObfuscation.h文件?
如果不清楚PCH文件的使用篓像,請移步?iOS開發(fā)小技巧-PCH的使用?
codeObfuscation.h是腳本里面創(chuàng)建的文件,用來對應記錄方法名和對于生成的替換隨機字符串皿伺。?
4员辩、把confush.sh和func.list添加到工程下,Command+B會出現(xiàn)codeObfushcation.h文件鸵鸥,不行就直接新建好這個頭文件一樣奠滑。然后編譯運行對應的方法名就被隨機字符替換覆蓋了。編譯結(jié)果如圖:?
示例:?
需要混淆的方法名:?
- (void)openVideoChat;?
+ (void)startAudioChatByNav:(UINavigationController?)nav sessionID:(NSString?)sessionID;?
func.list添加:?
編譯運行后codeObfuscation.h如圖:?
貼上confuse.sh腳本文件內(nèi)容:
#!/usr/bin/env bashTABLENAME=symbolsSYMBOL_DB_FILE="symbols"STRING_SYMBOL_FILE="func.list"HEAD_FILE="$PROJECT_DIR/$PROJECT_NAME/codeObfuscation.h"exportLC_CTYPE=C#維護數(shù)據(jù)庫方便日后作排重createTable(){echo"create table$TABLENAME(src text, des text);"| sqlite3$SYMBOL_DB_FILE}insertValue(){echo"insert into$TABLENAMEvalues('$1' ,'$2');"| sqlite3$SYMBOL_DB_FILE}query(){echo"select * from$TABLENAMEwhere src='$1';"| sqlite3$SYMBOL_DB_FILE}ramdomString(){openssl rand -base6464| tr -cd'a-zA-Z'|head -c16}rm-f$SYMBOL_DB_FILErm-f$HEAD_FILEcreateTabletouch$HEAD_FILEecho'#ifndef Demo_codeObfuscation_h
#define Demo_codeObfuscation_h'>>$HEAD_FILEecho"http://confuse string at `date`">>$HEAD_FILEcat"$STRING_SYMBOL_FILE"|whileread-ra line;doif[[ ! -z"$line"]];thenramdom=`ramdomString`echo$line$ramdominsertValue$line$ramdomecho"#define$line$ramdom">>$HEAD_FILEfidoneecho"#endif">>$HEAD_FILEsqlite3$SYMBOL_DB_FILE.dump
原文鏈接:https://www.csdn.net/tags/MtjaQg2sMjQxMTAtYmxvZwO0O0OO0O0O.html