iOS 對(duì)源代碼進(jìn)行混淆

該方法只能針對(duì)有.m.h的類進(jìn)行混淆鹰霍,靜態(tài)庫(kù)等只有.h文件的沒法進(jìn)行混淆

代碼混淆豹休,剛剛看到是不是有點(diǎn)懵逼镜沽,反正我是最近才接觸到這么個(gè)東西敏晤,因?yàn)橹皩?duì)于代碼和APP,只需要實(shí)現(xiàn)功能就好了缅茉,根本沒有考慮什么安全問(wèn)題嘴脾。

而這一次應(yīng)用交付時(shí),客戶進(jìn)行安全評(píng)估提出一個(gè)問(wèn)題:
使用classdump對(duì)原程序進(jìn)行dump蔬墩,可以dump出所有源程序的函數(shù)所有信息:源程序所有函數(shù)類型译打,變量全部泄露。這樣的話拇颅,讓攻擊者奏司,也就是黑客們了解了程序結(jié)構(gòu)方便逆向。
因?yàn)樵诠こ讨姓敛澹覀冞@些變量或函數(shù)命名都是有一定可讀性的韵洋,例如跟用戶名相關(guān)的,那一般里面會(huì)有 userName黄锤,跟密碼相關(guān)的一般會(huì)有 passWord搪缨,這樣定義也是為了我們自己代碼可讀性更強(qiáng),我們修改的時(shí)候才更加的方便鸵熟。但是我們相信副编,這么個(gè)定義法,我們只是希望方便我們自己流强,我們可不希望方便黑客們?nèi)テ平馕覀兊腁PP齿桃。
那我們先來(lái)看看用這個(gè)所謂的 classdump 對(duì)原程序進(jìn)行 dump惑惶,究竟用 dump 出些什么東西來(lái):


所有的 .h 文件
.h 文件全暴露了,那點(diǎn)開的話短纵,你里面的函數(shù)名带污,屬性名也一樣清清楚楚:


屬性、函數(shù)
驚了個(gè)呆香到,那為了防止這樣全裸鱼冀,這時(shí)候我們就需要用到代碼混淆了。
大概什么個(gè)意思呢悠就?簡(jiǎn)單點(diǎn)講千绪,就是把你的這些個(gè)用戶名和函數(shù)名弄得沒有可讀性,比如你的用戶名的變量名定義為 userName梗脾,那你自己用肯定是正常的荸型,如果黑客們 dump 出來(lái)的這個(gè)變量名會(huì)變成 abcd 或 1234 ,這樣他也就不清楚你這是用來(lái)干嗎的了炸茧。
第一瑞妇、在工程項(xiàng)目路徑中建立一個(gè)confuse.sh、一個(gè)func.list文件
先打開終端梭冠,然后 cd 到你的項(xiàng)目工程路徑下:


cd 到項(xiàng)目工程路徑下
然后創(chuàng)建兩個(gè)文件辕狰,一個(gè) confuse.sh,一個(gè) func.list:


創(chuàng)建兩個(gè)文件
這時(shí)候我們打開這個(gè)工程文件夾控漠,可以看到蔓倍,這兩個(gè)文件已經(jīng)創(chuàng)建好了:


我們創(chuàng)建的兩個(gè)文件
打開工程,把剛才創(chuàng)建的兩個(gè)文件加進(jìn)去盐捷,右鍵你的項(xiàng)目藍(lán)色標(biāo)志偶翅,然后選擇 Add Files to...:


添加到工程中
添加進(jìn)去了:


成功添加
點(diǎn)擊 confuse.sh ,發(fā)現(xiàn)還是空白的碉渡,什么都沒有倒堕,現(xiàn)在要在這上面加上代碼了:


需要添加的代碼
原腳本代碼出自:http://blog.csdn.net/yiyaaixuexi/article/details/29201699
第二、在 .pch 文件中添加代碼
不要跟我說(shuō)你的工程沒有 .pch 文件爆价,如果真沒有,自行百度媳搪,這應(yīng)該算是標(biāo)配铭段,常識(shí)來(lái)的。

ifdef OBJC#import#import//添加混淆作用的頭文件(這個(gè)文件名是腳本confuse.sh中定義的)#import"codeObfuscation.h"#endif

寫到這里秦爆,編譯的時(shí)候是不是發(fā)現(xiàn)報(bào)錯(cuò)啦序愚?剛才的 .pch 文件里面的添加的代碼居然報(bào)錯(cuò)了:


報(bào)錯(cuò)了!
不要慌等限,先把那句報(bào)錯(cuò)的先給注釋掉:


先注釋掉報(bào)錯(cuò)的這一行代碼
然后我們繼續(xù)往下走爸吮!
第三芬膝、配置 Build Phase
1:添加 Run Script


添加 Run Script
2:配置好 Run Script


配置好 Run Script
然后再回到終端,同樣先 cd 到工程目錄下形娇,接著我們要打開剛才 .sh 這個(gè)腳本文件的運(yùn)行權(quán)限锰霜,因?yàn)槟J(rèn)是沒有這個(gè)權(quán)限的,在終端輸入以下指令:


打開運(yùn)行權(quán)限
回車桐早,搞定癣缅,回到我們的工程,先 command + b 編譯一下工程哄酝,然后再把我們剛剛注釋掉的那句代碼解開:


打開剛剛被我們注釋掉的代碼
再次 command + b 編譯友存,現(xiàn)在是不是編譯通過(guò)啦?剛剛報(bào)錯(cuò)的陶衅,現(xiàn)在解決了屡立!
基本上就搞定了,剩下的就是添加上我們想要混淆的變量名或函數(shù)名
第四搀军、在 func.list 文件里膨俐,寫入待混淆的函數(shù)名
如果像下面這幾個(gè)屬性跟函數(shù):


需要混淆的屬性跟函數(shù)名
那么就這在 fun.list 就這么列出來(lái)就好了:


列出需要混淆的
大功告成!現(xiàn)在 command + b 運(yùn)行一下奕巍,然后在哪里看結(jié)果呢吟策,請(qǐng)看這里:


運(yùn)行結(jié)果
可能這么看有點(diǎn)麻煩,那來(lái)個(gè)簡(jiǎn)單一點(diǎn)的:


查看
哈哈的止,你會(huì)發(fā)現(xiàn)檩坚,多了好多宏定義,其實(shí)就是我們剛才的字段來(lái)的:


結(jié)果
當(dāng)然诅福,這也只是最簡(jiǎn)單的代碼混淆而已匾委,APP安全還是有很多需要注意的。一步一步來(lái)吧氓润!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赂乐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子咖气,更是在濱河造成了極大的恐慌挨措,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件崩溪,死亡現(xiàn)場(chǎng)離奇詭異浅役,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)伶唯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門觉既,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事瞪讼【” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵符欠,是天一觀的道長(zhǎng)嫡霞。 經(jīng)常有香客問(wèn)我,道長(zhǎng)背亥,這世上最難降的妖魔是什么秒际? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮狡汉,結(jié)果婚禮上娄徊,老公的妹妹穿的比我還像新娘。我一直安慰自己盾戴,他們只是感情好寄锐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著尖啡,像睡著了一般橄仆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上衅斩,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天盆顾,我揣著相機(jī)與錄音,去河邊找鬼畏梆。 笑死您宪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的奠涌。 我是一名探鬼主播宪巨,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼溜畅!你這毒婦竟也來(lái)了捏卓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤慈格,失蹤者是張志新(化名)和其女友劉穎怠晴,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浴捆,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蒜田,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了汤功。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡溜哮,死狀恐怖滔金,靈堂內(nèi)的尸體忽然破棺而出色解,到底是詐尸還是另有隱情,我是刑警寧澤餐茵,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布科阎,位于F島的核電站,受9級(jí)特大地震影響忿族,放射性物質(zhì)發(fā)生泄漏锣笨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一道批、第九天 我趴在偏房一處隱蔽的房頂上張望错英。 院中可真熱鬧,春花似錦隆豹、人聲如沸椭岩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)判哥。三九已至,卻和暖如春碉考,著一層夾襖步出監(jiān)牢的瞬間塌计,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工侯谁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锌仅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓良蒸,卻偏偏與公主長(zhǎng)得像技扼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嫩痰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

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

  • 該方法只能針對(duì)有.m.h的類進(jìn)行混淆剿吻,靜態(tài)庫(kù)等只有.h文件的沒法進(jìn)行混淆 代碼混淆,剛剛看到是不是有點(diǎn)懵逼串纺,反正我...
    freesan44閱讀 12,976評(píng)論 12 25
  • ??本文內(nèi)容 一)為什么要進(jìn)行代碼混淆 二)代碼混淆的兩種方法(①宏替換 ②腳本實(shí)現(xiàn)替換)本文github地址,敬請(qǐng)...
    wg689閱讀 5,137評(píng)論 17 65
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,072評(píng)論 25 707
  • 前言 什么丽旅!我們的代碼拿去安全掃描啦?什么纺棺!還掃描出來(lái)問(wèn)題啦榄笙?什么!源碼都別看到啦祷蝌? 居于上一篇文章iOS簡(jiǎn)單逆向...
    甘邦閱讀 18,112評(píng)論 24 40
  • 兒子讀小學(xué)之后茅撞,一直為他寫作業(yè)速度發(fā)愁,欣慰的是,隨著兒子年齡的增長(zhǎng)米丘,一直都在進(jìn)步剑令,最近兩天進(jìn)步尤為明顯,每天下午...
    樂樂呵呵_閱讀 308評(píng)論 0 0