iOS代碼混淆教程

混淆原理

代碼編譯階段將符號(hào)(方法名、屬性名等)替換成隨機(jī)生成的字符串

長(zhǎng)話(huà)短說(shuō)缩筛,直接上步驟爵卒。

混淆集成步驟

步驟一导帝、創(chuàng)建shell文件(confuse.sh)并配置相應(yīng)的運(yùn)行環(huán)境守谓。

  • 在項(xiàng)目根目錄下新建一個(gè)文件夾

    新建文件夾

    我這里取文件夾名稱(chēng)為CodeObfuscation,如下圖所示
    文件夾

    **注意** 這里的文件夾必須在目錄中真實(shí)存在(Xcode9 New Group會(huì)自動(dòng)創(chuàng)建對(duì)應(yīng)的真實(shí)文件夾)您单。

  • 在上一步的文件下新建一個(gè)shell文件(.sh文件)

    shell文件創(chuàng)建步驟1

    輸入文件名:confuse.sh斋荞,點(diǎn)擊Create按鈕
    shell文件創(chuàng)建步驟2

    shell文件創(chuàng)建步驟3

  • 給.sh文件添加運(yùn)行環(huán)境

    運(yùn)行環(huán)境步驟1

    添加.sh文件的讀取路徑$PROJECT_DIR/CodeObfuscation/confuse.sh,如下圖
    運(yùn)行環(huán)境步驟2

  • 給.sh文件添加運(yùn)行內(nèi)容(運(yùn)行代碼)
    將下面的代碼復(fù)制粘貼到confuse.sh文件中

TABLENAME=symbols
SYMBOL_DB_FILE="$PROJECT_DIR/CodeObfuscation/symbols"
STRING_SYMBOL_FILE="$PROJECT_DIR/CodeObfuscation/func.list"
HEAD_FILE="$PROJECT_DIR/CodeObfuscation/codeObfuscation.h"
export LC_CTYPE=C

#維護(hù)數(shù)據(jù)庫(kù)方便日后作排重
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

步驟二虐秦、創(chuàng)建func.list文件

創(chuàng)建func.list文件步驟1

輸入文件名:func.list平酿,點(diǎn)擊Create按鈕
創(chuàng)建func.list文件步驟2

創(chuàng)建func.list文件步驟3

步驟三、創(chuàng)建codeObfuscation.h文件

創(chuàng)建codeObfuscation.h文件步驟1

輸入codeObfuscation.h悦陋,點(diǎn)擊Create按鈕
創(chuàng)建codeObfuscation.h文件步驟2

創(chuàng)建codeObfuscation.h文件步驟3

步驟四蜈彼、包含codeObfuscation.h到pch文件中,添加要混淆的方法名或?qū)傩悦?code>func.list

  • 包含codeObfuscation.h到pch文件中

    pch文件配置

  • func.list文件中添加要混淆的方法名或?qū)傩悦?br>

    需要混淆的方法名

command + R運(yùn)行項(xiàng)目俺驶,此時(shí)你會(huì)發(fā)現(xiàn)報(bào)錯(cuò)幸逆。

報(bào)錯(cuò)查看

點(diǎn)擊具體錯(cuò)誤后下拉到最下面查看具體內(nèi)容
錯(cuò)誤信息

Permission denied翻譯成中文就是.sh文件沒(méi)有運(yùn)行權(quán)限

如何更改confuse.sh文件的運(yùn)行權(quán)限呢,如下步驟暮现。

  • 打開(kāi)終端秉颗,cd到CodeObfuscation文件夾(不會(huì)cd到這個(gè)文件夾的可以私聊我)
  • 在終端輸入ls命令并回車(chē)查看文件夾內(nèi)的文件內(nèi)容如下
    CodeObfuscation文件夾內(nèi)容
  • 輸入sudo chmod 777 confuse.sh命令并回車(chē)如下圖
    更改文件權(quán)限為可讀可寫(xiě)可運(yùn)行

    此時(shí)需要鍵入開(kāi)機(jī)密碼,mac下不顯示輸入的內(nèi)容送矩,輸入完畢直接回車(chē)即可。
  • 更改confuse.sh文件運(yùn)行權(quán)限完成

重新回到xcode項(xiàng)目哪替,command + R運(yùn)行項(xiàng)目栋荸,運(yùn)行成功。

步驟五凭舶、查看結(jié)果

查看codeObfuscation.h文件內(nèi)容變化晌块,如下圖

替換結(jié)果

步驟六、確認(rèn)結(jié)果

如何知道替換成功了呢帅霜?我們找到替換的方法名或?qū)傩悦冶常c(diǎn)擊跳轉(zhuǎn)到定義,會(huì)跳轉(zhuǎn)到codeObfuscation.h中身冀,說(shuō)明替換成功钝尸。

查看替換結(jié)果

功夫不負(fù)有心人,祝大家工作順利

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末搂根,一起剝皮案震驚了整個(gè)濱河市珍促,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌剩愧,老刑警劉巖猪叙,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡穴翩,警方通過(guò)查閱死者的電腦和手機(jī)犬第,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)芒帕,“玉大人歉嗓,你說(shuō)我怎么就攤上這事「鼻” “怎么了遥椿?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)淆储。 經(jīng)常有香客問(wèn)我冠场,道長(zhǎng),這世上最難降的妖魔是什么本砰? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任碴裙,我火速辦了婚禮,結(jié)果婚禮上点额,老公的妹妹穿的比我還像新娘舔株。我一直安慰自己,他們只是感情好还棱,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布载慈。 她就那樣靜靜地躺著,像睡著了一般珍手。 火紅的嫁衣襯著肌膚如雪办铡。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天琳要,我揣著相機(jī)與錄音寡具,去河邊找鬼。 笑死稚补,一個(gè)胖子當(dāng)著我的面吹牛童叠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播课幕,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼厦坛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了乍惊?” 一聲冷哼從身側(cè)響起粪般,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎污桦,沒(méi)想到半個(gè)月后亩歹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體匙监,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年小作,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了亭姥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡顾稀,死狀恐怖达罗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情静秆,我是刑警寧澤粮揉,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站抚笔,受9級(jí)特大地震影響扶认,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜殊橙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一辐宾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧膨蛮,春花似錦叠纹、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至惹谐,卻和暖如春持偏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背豺鼻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留款慨,地道東北人儒飒。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像檩奠,于是被迫代替她去往敵國(guó)和親桩了。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 前言 什么埠戳!我們的代碼拿去安全掃描啦井誉?什么!還掃描出來(lái)問(wèn)題啦整胃?什么颗圣!源碼都別看到啦? 居于上一篇文章iOS簡(jiǎn)單逆向...
    甘邦閱讀 18,117評(píng)論 24 40
  • app風(fēng)靡的時(shí)代,總有一些奇葩的需求在岂。為了刷量奔则,刷排名,制作殼包蔽午,為了通過(guò)蘋(píng)果爸爸審核易茬,想到代碼混淆,垃圾代碼等策...
    二斤寂寞閱讀 22,932評(píng)論 11 52
  • 代碼易讀字符串混淆 混淆分許多思路及老,比如: 1)花代碼花指令抽莱,即隨意往程序中加入迷惑人的代碼指令 2)易讀字符替換...
    Mikayla321閱讀 7,517評(píng)論 5 13
  • iOS表面上看來(lái)是比android安全的多的,在網(wǎng)絡(luò)上針對(duì)android的加密保護(hù)也比iOS多得多骄恶,但是這并不意味...
    張囧瑞閱讀 6,224評(píng)論 7 30
  • 2018年3月8日星期四天氣晴 今天下午學(xué)校里舉行猜燈謎活動(dòng)食铐。開(kāi)學(xué)前我們也報(bào)名參加的,也做了燈籠叠蝇,可是開(kāi)學(xué)的那天早...
    周魯玲閱讀 93評(píng)論 0 0