iOS 代碼混淆 2

iOS 代碼混淆

轉(zhuǎn)載:https://blog.csdn.net/olsQ93038o99S/article/details/81417166

創(chuàng)建準(zhǔn)備文件

這里生成混淆代碼的方法我們通過shell腳本來實(shí)現(xiàn)败富,同時(shí)我們需要一個(gè)文檔來寫入我們需要進(jìn)行混淆的方法名或是變量名鲸伴。

打開終端执隧,cd到文件所在目錄设易,使用

touch confuse.sh touch func.list

然后將這兩個(gè)文件加入到項(xiàng)目中巢墅。


image.png

寫入shell腳本

接下來我們?cè)赾onfuse.sh中寫入腳本

#!/bin/bash # 這是Shell腳本迁酸,如果不懂shell,自行修煉:http://www.runoob.com/linux/linux-shell.html # 
以下使用sqlite3進(jìn)行增加數(shù)據(jù)瓜客,如果不了解sqlite3命令胎挎,自行修煉:http://www.runoob.com/sqlite/sqlite-tutorial.html 
#數(shù)據(jù)表名 TABLENAME="CodeObfuscationOC" #數(shù)據(jù)庫名 SYMBOL_DB_FILE="CodeObfuscation.db" #要被替換的方法列表文件 STRING_SYMBOL_FILE="$PROJECT_DIR/ConfusionDemo/func.list" #被替換后的宏定義在此文件里 HEAD_FILE="$PROJECT_DIR/$PROJECT_NAME/CodeObfuscation.h" #維護(hù)數(shù)據(jù)庫方便日后做bug排查 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 } #生成隨機(jī)16位名稱 randomString() { openssl rand -base64 64 | tr -cd 'a-zA-Z' | head -c 16 } #刪除舊數(shù)據(jù)庫文件 rm -f $SYMBOL_DB_FILE #刪除就宏定義文件 rm -f $HEAD_FILE #創(chuàng)建數(shù)據(jù)表 createTable #touch命令創(chuàng)建空文件,根據(jù)指定的路徑 touch $HEAD_FILE echo '#ifndef CodeObfuscation_h#define CodeObfuscation_h' >> $HEAD_FILE echo "http://confuse string at `date`" >> $HEAD_FILE #使用cat將方法列表文件里的內(nèi)容全部讀取出來忆家,形成數(shù)組,然后逐行讀取德迹,并進(jìn)行替換 cat "$STRING_SYMBOL_FILE" | while read -ra line; do if [[ ! -z "$line" ]] then random=`randomString` echo $line $random #將生成的隨機(jī)字符串插入到表格中 insertValue $line $random #將生成的字符串寫入到宏定義文件中芽卿,變量是$HEAD_FILE echo "#define $line $random" >> $HEAD_FILE fi done echo "#endif" >> $HEAD_FILE sqlite3 $SYMBOL_DB_FILE .dump

添加run script命令

接下來打開Targets -> Bulid Phases -> + -> New Run Script Phase

image.png

然后添加$PROJECT_DIR/ConfusionDemo/confuse.sh,讓應(yīng)用每次啟動(dòng)時(shí)去跑一下我們的腳本胳搞。

給腳本授權(quán)

接下來還是在我們項(xiàng)目的文件夾下卸例,給我們的腳本賦予最高權(quán)限

chmod 777 confuse.sh

這里有人說用 755 称杨,但是用755好像還是不行,干脆給最高權(quán)限筷转,用777姑原。

添加預(yù)編譯文件PCH

接下來再添加一個(gè)PCH文件,實(shí)現(xiàn)整個(gè)項(xiàng)目的替換呜舒。

image.png

然后配置一下PCH文件锭汛。

image.png

添加$PROJECT_DIR/ConfusionDemo/PrefixHeader.pch

生成CodeObfuscation.h文件

這時(shí)候我們編譯一下代碼,會(huì)發(fā)現(xiàn)項(xiàng)目中多出了一個(gè)CodeObfuscation.h文件袭蝗。這個(gè)文件就是替換方法名的文件唤殴,我們?cè)赑CH文件中引入他。

func中添加準(zhǔn)備替換的方法名

ok到腥,到了最后一步了朵逝,這時(shí)候我們只需要打開func.list文件,寫入我們想要混淆的方法名乡范。就大功告成了配名。

viewControllerTestMethodA viewControllerTestMethodB viewControllerTestMethodC viewControllerMethodWithParameter testString testArray testMutDic

結(jié)果

OK,該做的已經(jīng)做完了晋辆,接下來我們?cè)俅蛞粋€(gè)包渠脉,看一下結(jié)果。

編譯之后我們就可以看到栈拖,CodeObfuscation.h文件中就發(fā)生了變化连舍。

#ifndef CodeObfuscation_h #define CodeObfuscation_h //confuse string at Tue Jun 12 22:28:04 CST 2018 #define viewControllerTestMethodA CTBxmOXAbJYekhnH #define viewControllerTestMethodB RnPEjnXygFXLdikO #define viewControllerTestMethodC IzHlDYOpaAFYFTXa #define viewControllerMethodWithParameter nWqyalBcfoUSRVpc #define testString MNPoVYdmCcklAnCO #define testArray kHMRxPlGXGeqekxL #define testMutDic hphPSODIvbBFSTHX #endif

可以看到,原來的代碼都變成了一些亂七八糟的代碼涩哟,混淆成功了索赏。

最后

到此,今天的內(nèi)容就基本結(jié)束了贴彼,這只是iOS安防的最基本最初級(jí)的工作潜腻,而且用的方法也是念茜女神很久以前提出的一個(gè)方案。并且這里有幾點(diǎn)需要注意!!!

  • 1.不可以混淆iOS中的系統(tǒng)方法器仗;

  • 2.不可以混淆iOS中init等初始化方法融涣;

  • 3.不可以混淆xib的文件,會(huì)導(dǎo)致找不到對(duì)應(yīng)文件精钮;

  • 4.不可以混淆storyboard中用到的類名威鹿;

  • 5.混淆有風(fēng)險(xiǎn),有可能會(huì)被App Store以2.1大禮包拒掉轨香。

以上文章有什么不對(duì)的地方還請(qǐng)大佬多多指教和批評(píng)忽你。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市臂容,隨后出現(xiàn)的幾起案子科雳,更是在濱河造成了極大的恐慌根蟹,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件糟秘,死亡現(xiàn)場(chǎng)離奇詭異简逮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)尿赚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門散庶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吼畏,你說我怎么就攤上這事督赤。” “怎么了泻蚊?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵躲舌,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我性雄,道長(zhǎng)没卸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任秒旋,我火速辦了婚禮约计,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘迁筛。我一直安慰自己煤蚌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布细卧。 她就那樣靜靜地躺著尉桩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贪庙。 梳的紋絲不亂的頭發(fā)上蜘犁,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音止邮,去河邊找鬼这橙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛导披,可吹牛的內(nèi)容都是我干的屈扎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼撩匕,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼助隧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤并村,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后滓技,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哩牍,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年令漂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了膝昆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡叠必,死狀恐怖荚孵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纬朝,我是刑警寧澤收叶,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站共苛,受9級(jí)特大地震影響判没,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜隅茎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一澄峰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧辟犀,春花似錦俏竞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至跃捣,卻和暖如春漱牵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疚漆。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國打工酣胀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人娶聘。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓闻镶,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親丸升。 傳聞我的和親對(duì)象是個(gè)殘疾皇子铆农,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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

  • 代碼易讀字符串混淆 混淆分許多思路,比如: 1)花代碼花指令狡耻,即隨意往程序中加入迷惑人的代碼指令 2)易讀字符替換...
    Mikayla321閱讀 7,502評(píng)論 5 13
  • 前言:該方法只能針對(duì)有.m.h的類進(jìn)行混淆墩剖,靜態(tài)庫等只有.h文件的沒法進(jìn)行混淆 正文: 代碼混淆猴凹,剛剛看到是不是有...
    SmallWhiteMouse閱讀 767評(píng)論 3 2
  • 前言 什么!我們的代碼拿去安全掃描啦岭皂?什么郊霎!還掃描出來問題啦?什么爷绘!源碼都別看到啦书劝? 居于上一篇文章iOS簡(jiǎn)單逆向...
    甘邦閱讀 18,112評(píng)論 24 40
  • 在 iOS APP 開發(fā)過程中,可能以為疏忽或者是工程時(shí)間趕,安全性這一方面往往會(huì)被忽視 只需要拿到 ipa 文件...
    yks慷閱讀 11,349評(píng)論 8 10
  • 最近發(fā)現(xiàn)了蘋果審核對(duì)于該方法的混淆包給予拒絕通過,解釋原因蘋果自己有自己的加密方法去保證安全性土至,防止反編譯不需要你...
    kakaLP閱讀 1,938評(píng)論 0 1