iOS-代碼簡(jiǎn)單混淆

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

  • 打開(kāi)終端煮甥,cd到文件所在目錄鬓照,使用
touch confuse.sh
touch func.list
  • 寫(xiě)入shell腳本
#!/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ù)庫(kù)名
SYMBOL_DB_FILE="CodeObfuscation.db"

#要被替換的方法列表文件 Demo是項(xiàng)目名稱
STRING_SYMBOL_FILE="$PROJECT_DIR/recorder/func.list"

#被替換后的宏定義在此文件里
HEAD_FILE="$PROJECT_DIR/$PROJECT_NAME/CodeObfuscation.h"

#維護(hù)數(shù)據(jù)庫(kù)方便日后做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ù)庫(kù)文件
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)容全部讀取出來(lá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

#將生成的字符串寫(xiě)入到宏定義文件中冀惭,變量是$HEAD_FILE
echo "#define $line $random" >> $HEAD_FILE
fi
done
echo "#endif" >> $HEAD_FILE
sqlite3 $SYMBOL_DB_FILE .dump
  • 添加run script命令
    js.png

    然后添加$PROJECT_DIR/recorder/confuse.sh

  • 給腳本授權(quán)

接下來(lái)還是在我們項(xiàng)目的文件夾下,通過(guò)終端給我們的腳本賦予最高權(quán)限

chmod 777 confuse.sh
  • 添加預(yù)編譯文件pch并配置好pch文件路徑(不再贅述)
  • 生成CodeObfuscation.h文件

這時(shí)候我們編譯一下代碼掀鹅,會(huì)發(fā)現(xiàn)項(xiàng)目中多出了一個(gè)CodeObfuscation.h文件(如果沒(méi)有散休,可到項(xiàng)目文件夾中找,我的就是在文件夾里找到的- -淫半,然后拖進(jìn)項(xiàng)目)溃槐。這個(gè)文件就是替換方法名的文件,我們?cè)赑CH文件中引入他科吭。

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

在項(xiàng)目中點(diǎn)開(kāi)之前拖進(jìn)來(lái)的func.list文件昏滴,然后在里面加入自己想要混淆的方法名或者變量名,\color{red}{注意:方法名和系統(tǒng)方法名不要相同}

add_Timer
removeTimer
testName
  • 結(jié)果

編譯之后

#ifndef CodeObfuscation_h
#define CodeObfuscation_h
//confuse string at Thu Feb  6 10:15:57 CST 2020
#define add_Timer JgljUNExphlljzLU
#define removeTimer twZJFmYFQxcUaXFU
#define testName UGxeiEiyWEpdbgTa
#endif

看到 CodeObfuscation有這種變化对人,恭喜你谣殊,已經(jīng)代碼混淆成功。即使通過(guò)class-dump反編出來(lái)的牺弄,也只是一堆亂碼姻几。

  • 需要注意的幾點(diǎn)

\color{red}{不可以混淆iOS中的系統(tǒng)方法;}
\color{red}{不可以混淆iOS中init等初始化方法;}
\color{red}{不可以混淆xib的文件蛇捌,會(huì)導(dǎo)致找不到對(duì)應(yīng)文件抚恒;}
\color{red}{不可以混淆storyboard中用到的類名;}
\color{red}{混淆有風(fēng)險(xiǎn)络拌,有可能會(huì)被App Store以2.1大禮包拒掉俭驮。}

雖然比較繁瑣,但是親測(cè)有效春贸,有問(wèn)題可以寫(xiě)留言混萝,對(duì)諸位有幫助的話我心甚慰!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末萍恕,一起剝皮案震驚了整個(gè)濱河市逸嘀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌允粤,老刑警劉巖崭倘,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異维哈,居然都是意外死亡绳姨,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)阔挠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)飘庄,“玉大人,你說(shuō)我怎么就攤上這事购撼」蛳鳎” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵迂求,是天一觀的道長(zhǎng)碾盐。 經(jīng)常有香客問(wèn)我,道長(zhǎng)揩局,這世上最難降的妖魔是什么毫玖? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮凌盯,結(jié)果婚禮上付枫,老公的妹妹穿的比我還像新娘。我一直安慰自己驰怎,他們只是感情好阐滩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著县忌,像睡著了一般掂榔。 火紅的嫁衣襯著肌膚如雪继效。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,182評(píng)論 1 299
  • 那天装获,我揣著相機(jī)與錄音瑞信,去河邊找鬼。 笑死饱溢,一個(gè)胖子當(dāng)著我的面吹牛喧伞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绩郎,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼翁逞!你這毒婦竟也來(lái)了肋杖?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤挖函,失蹤者是張志新(化名)和其女友劉穎状植,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體怨喘,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡津畸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了必怜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肉拓。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖梳庆,靈堂內(nèi)的尸體忽然破棺而出暖途,到底是詐尸還是另有隱情,我是刑警寧澤膏执,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布驻售,位于F島的核電站,受9級(jí)特大地震影響更米,放射性物質(zhì)發(fā)生泄漏欺栗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一征峦、第九天 我趴在偏房一處隱蔽的房頂上張望迟几。 院中可真熱鬧,春花似錦眶痰、人聲如沸瘤旨。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)存哲。三九已至因宇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間祟偷,已是汗流浹背察滑。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留修肠,地道東北人贺辰。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像嵌施,于是被迫代替她去往敵國(guó)和親饲化。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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

  • 混淆原理 代碼編譯階段將符號(hào)(方法名吗伤、屬性名等)替換成隨機(jī)生成的字符串 長(zhǎng)話短說(shuō)吃靠,直接上步驟。 混淆步...
    開(kāi)心的小嬌閱讀 530評(píng)論 2 2
  • iOS表面上看來(lái)是比android安全的多的足淆,在網(wǎng)絡(luò)上針對(duì)android的加密保護(hù)也比iOS多得多巢块,但是這并不意味...
    張囧瑞閱讀 6,214評(píng)論 7 30
  • 目的 為了進(jìn)一步增加應(yīng)用的安全性,防止我們的應(yīng)用程序很容易的被攻擊者分析巧号、破解族奢、重打包,提高攻擊者逆向分析應(yīng)用的難...
    miracle洛洛閱讀 4,357評(píng)論 3 21
  • 混淆原理 代碼編譯階段將符號(hào)(方法名丹鸿、屬性名等)替換成隨機(jī)生成的字符串 長(zhǎng)話短說(shuō)越走,直接上步驟。 混淆集成步驟 步驟...
    權(quán)宜平和閱讀 41,078評(píng)論 68 110
  • 最近在聽(tīng)徐文兵老師的《中醫(yī)太美之黃帝內(nèi)經(jīng)》卜高,講述了很多的行醫(yī)經(jīng)歷和對(duì)黃帝內(nèi)經(jīng)的解釋弥姻。其中老師聊到有一次為病人看病,...
    秋秋小Q閱讀 83評(píng)論 0 0