第一次寫Tweak,走進(jìn)iOS逆向的世界

第一次寫Tweak酵熙,走進(jìn)iOS逆向的世界

起因:公司的一產(chǎn)品由于是外包做的轧简,代碼不知道在哪,今天老板臨時(shí)說要加個(gè)功能匾二,但是現(xiàn)在沒有代碼哮独,問我能搞不拳芙,當(dāng)時(shí)說試試看,然后就開始了逆向之旅皮璧,最終很簡(jiǎn)單解決了問題舟扎,菜鳥第一次上手,勿見笑恶导,(其實(shí)以前我就有看逆向,只是沒時(shí)間去試驗(yàn)浸须,今天剛好有機(jī)會(huì)惨寿,接下來開始正文)


先說一下需要實(shí)現(xiàn)的功能,老板說要在登錄頁面加個(gè)按鈕來實(shí)現(xiàn)一個(gè)跳轉(zhuǎn)功能

第一步:上AppStore下載軟件

下載好了之后首先打開軟件看了一下,是原生删窒,不是H5(不然真不會(huì)加),然后習(xí)慣性的用Reveal查看了一下App結(jié)構(gòu),這不看不知道裂垦,一看就給了我一個(gè)驚喜,原來別人已經(jīng)把那個(gè)功能寫出來了肌索,按鈕都寫在那了蕉拢,只是Hidden掉了,那我的目的就成了把這個(gè)按鈕給顯示出來就行了.

第二步:砸殼(破解)

因?yàn)槲覀兇虬鰜淼膇pa上傳到AppStroe后都是被經(jīng)過加密的诚亚,被套了個(gè)殼(不知這樣表達(dá)是否準(zhǔn)確),用class dump是導(dǎo)不出頭文件的(只能導(dǎo)出一個(gè)空的.h文件),砸殼工具是dumpdecrypted,下載后解壓(只有3個(gè)文件),放到一個(gè)好找的文件夾中,我的位置為/Users/jj/Movies/iOSRE/dumpdecrypted-master

然后cd進(jìn)這個(gè)目錄執(zhí)行make晕换,結(jié)束后會(huì)多出2個(gè)文件,一個(gè).dylib一個(gè).o


dylib就是我們用來砸殼的錘子

  • ssh連接手機(jī)(由于我的手機(jī)是10.2版本,用yalu越獄的時(shí)候自己手賤裝了openSSH站宗,導(dǎo)致無法用wifi連接闸准,經(jīng)過多種方式,找到了個(gè)用USB連接的方式,大家可以用wifi或者USB,都可以),我介紹一下用USB連接的方法

打開終端輸入

brew install usbmuxd

如果你電腦上沒有安裝brew梢灭,也很簡(jiǎn)單夷家,也是一句話

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然后再安裝usbmuxd庫就行了
安裝成功如圖


然后新開個(gè)終端輸入

iproxy 4567 22

以上命令是把當(dāng)前連接設(shè)備的22端口映射到電腦的4567端口上,繼而來連接SSH

插上手機(jī)后另開終端輸入

ssh -p 4567 root@127.0.0.1

127.0.0.1也可以換成localhost,如果是直接用wifi連接的話敏释,命令是

ssh root@xxx.xxx.xxx.xxx

xxx.xxx.xxx.xxx是你手機(jī)的IP地址(要保證與電腦在同一局域網(wǎng))

如果是第一次連接库快,會(huì)如下圖


輸入yes,按回車后會(huì)要求你輸入密碼,默認(rèn)密碼是:alpine,注意這里輸入密碼是不會(huì)顯示星號(hào)的钥顽,輸入完成后自己按回車即可(建議把默認(rèn)的密碼修改了)

出現(xiàn)這樣就代表ssh已經(jīng)連接成功了义屏,可以開始下一步了

打開你需要砸殼的軟件,然后在終端輸入

ps -e

圖左邊紅框是進(jìn)程PID蜂大,右邊畫橫線的就是我要砸殼的app路徑,可以看上面新浪微博的app湿蛔,直接看名字就能看出自己要找的app

先用scp命令把我們的錘子傳到設(shè)備上(app路徑就是紅線畫的那里)

scp 路徑/dumpdecrypted.dylib root@xxx.xxx.xxx.xxx:/app路徑

這里是把錘子傳到要砸殼的app的Document目錄下(好像不一定非是這個(gè)目錄),網(wǎng)上大多數(shù)都這樣說县爬。

然后cd到Document目錄輸入

DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /path/to/executable

執(zhí)行完成后會(huì)在當(dāng)前目錄生成XXX.decrypted 可執(zhí)行文件;
然后用scp再傳回電腦即可

  • 這里再說一種方式阳啥,使用Clutch來破解,我寫這篇文章的時(shí)候就用的這種方式

先下載最新版的Clutch然后將其導(dǎo)入到手機(jī)中,可以用scp财喳,我用pp助手直接拖拽的察迟,比較方便斩狱,路徑是/usr/bin

然后cd到/usr/bin目錄下執(zhí)行

Clutch-2.0.4 -i

如果顯示Permisson Deny,輸入chmod a+x Clutch-2.0.4提升權(quán)限然后再執(zhí)行-i就可以了

然后輸入

Clutch-2.0.4 -d 43

我這里輸入43是因?yàn)槲乙平獾腶pp前面的數(shù)字是43,如果百度糯米是1就輸1


如圖就是已經(jīng)破解完成了扎瓶,DONE后面就是破解后ipa的路徑所踊,可以用pp助手等工具或者scp導(dǎo)出到電腦,至此第二步砸殼算是完成了概荷。

第三步:導(dǎo)出頭文件

導(dǎo)出頭文件的工具是Class-dump,下載后點(diǎn)擊安裝把

拖到

/usr/local/bin

目錄下

然后終端輸入

class-dump

得到下圖則是安裝成功


如果上面你是用dumpdecrypted砸殼的秕岛,那么最后得到的是xxx.decrypted文件,導(dǎo)出頭文件的命令為

class-dump -H XXX.decrypted -o OUTPUT_PATH

OUTPUT_PATH是輸出路徑误证,就是你導(dǎo)出的頭文件放哪里!xxx.decrypted是路徑而不是名字

如果用的是Clutch破解的話继薛,最后導(dǎo)出的是ipa文件,這里需要右鍵ipa選擇歸檔打開愈捅,然后解壓出個(gè)文件夾遏考,點(diǎn)擊進(jìn)去進(jìn)入Payload文件夾,會(huì)看到一個(gè)與.app文件蓝谨,與app同名灌具,然后選擇右鍵顯示包內(nèi)容咖楣,在里面找到一個(gè)執(zhí)行文件芦昔,與app同名

然后終端執(zhí)行導(dǎo)出頭文件命令


劃紅線的2個(gè)地方分別是執(zhí)行文件的絕對(duì)路徑和輸入文件夾的絕對(duì)路徑瘪松,直接拖拽進(jìn)終端就會(huì)自動(dòng)填寫

這就是我們導(dǎo)出來的頭文件

第四步:寫Tweak了

  • 先安裝dpkg和ldid,終端執(zhí)行
brew install dpkg ldid

如果沒有安裝brew的宵睦,去上面復(fù)制命令安裝

  • 安裝Thoes 終端執(zhí)行
sudo git clone --recursive https://github.com/theos/theos.git /opt/theos

/opt/theos是安裝路徑墅诡,可以自己改

然后修改/opt/theos的權(quán)限(位置不一樣的要記得改成自己的路徑)
sudo chown $(id -u):$(id -g) /opt/theos

很重要的一步,配置環(huán)境變量,在~./目錄下有個(gè)隱藏文件(開啟隱藏文件的命令請(qǐng)自行搜索)名字叫.bash_profile烟馅,如果你沒有這個(gè)文件然磷,可以自己手動(dòng)建立一個(gè),在終端分別執(zhí)行
cd ~ touch .bash_profile
然后在其中加上
export THEOS=/opt/theos export PATH=/opt/theos/bin/:$PATH
這里有個(gè)注意點(diǎn)姿搜,如果說你本身沒有.bash_profile文件捆憎,是自己新建的,要注意在終端執(zhí)行
source ~/.bash_profile
這樣環(huán)境變量才會(huì)立即生效梭纹,不然輸入
nic.pl
會(huì)提示
-bash: nic.pl: command not found
安裝成功的效果是


建立Tweak,一般選擇11的iphone/tweak躲惰,有的人可能不是11,按后面的選
建立的時(shí)候cd到個(gè)空文件夾里变抽,到時(shí)候生成文件的時(shí)候才好找

Project Name:為你的tweak名
Package Name:包名,可以直接回車
Author/Maintainer Name:也可以直接回車础拨,會(huì)取你當(dāng)前的Mac登錄用戶名
obileSubstrate Bundle filter:你的Tweak想給特定的app使用就寫那個(gè)app的Bundle id,我就直接寫com.apple.UIKit代表所有app都能調(diào)用這個(gè)Tweak
List of applications to terminate upon installation:直接回車
出現(xiàn)done就ok了
目錄下會(huì)出現(xiàn)4個(gè)文件

####想思路绍载,怎么寫這個(gè)Tweak
* 因?yàn)榘粹o其實(shí)都有了诡宗,我只需要把按鈕的hidden = NO就行了!,而這個(gè)按鈕所在的控制器我們需要
通過Reveal或者用Cycript(以后說這個(gè))來找,先說簡(jiǎn)單的逛钻,直接用reveal查看頁面

如圖僚焦,這就是我要找的控制器锰提,直接去剛剛導(dǎo)出的頭文件里找這個(gè)控制器文件曙痘,文件內(nèi)容如圖

其中的scanBtn就是被隱藏的按鈕,我要把它顯示出來立肘,方法就很簡(jiǎn)單了边坤,直接在ViewDidLoad里調(diào)用一下這個(gè)btn.hidden = NO即可,我們開始寫Tweak
雙擊打開Tweak.xm文件谅年,刪除其中所有的東西輸入

     %hook XXLoginViewController

     - (void)viewDidLoad {

          %orig;
      }

     %end  
    

其中%hook后面的就是我們要修改的控制器類
下面的就是我們要修改的函數(shù),%orig是代表執(zhí)行函數(shù)本身的功能,我們只是在其基礎(chǔ)上添加功能茧痒,所以不能影響程序本身的功能,不調(diào)用%orig的話相當(dāng)于viewDidLoad里就沒有任何東西了,只會(huì)運(yùn)行我們自己tweak里寫的方法!

由于這個(gè)類使用了synthesize旺订,所以我用self獲取不到btn的屬性区拳,直接寫也獲取不到btn屬性,我就將這個(gè)類給改動(dòng)了一下



由于我改動(dòng)了這個(gè)類笆凌,所以我需要將我改動(dòng)過的這個(gè)類導(dǎo)入到tweak里去來保證tweak不會(huì)編譯報(bào)錯(cuò)
方法是把改動(dòng)的類放到和tweak.xm同一目錄下,然后在tweak.xm里導(dǎo)入
所以tweak.xm變成下面這樣了

    #import “XXLoginViewController.h”
   %hook XXLoginViewController

   - (void)viewDidLoad {
          self.scanBtn.hidden = NO;
          %orig;
     }

    %end
    

現(xiàn)在Tweak目錄下是這樣的

cd進(jìn)這個(gè)目錄執(zhí)行
make package


如果遇到我這種報(bào)錯(cuò)的話,使用sudo命令編輯這個(gè)文件(路徑不同的自己修改)
sudo vi /opt/theos/makefiles/package/deb.mk

然后重新回來打包

這次就直接打包成功了,左邊那個(gè)就是我們打包出來的deb跪妥,用pp助手等軟件傳到手機(jī)任何位置
然后用ifile這類管理軟件點(diǎn)擊打開安裝,然后打開我們的軟件就能看到效果了纽疟!
至此污朽,結(jié)束蟆肆!
文中如有錯(cuò)誤,還望指出!
這次的東西比較淺蛇损,以后慢慢深入學(xué)習(xí)淤齐!
后面有空我會(huì)寫一下怎么將dylib打包到ipa中然后重簽名安裝到未越獄的手機(jī)上

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市锈死,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缨该,老刑警劉巖贰拿,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妙真,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡锈候,警方通過查閱死者的電腦和手機(jī)泵琳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蛛倦,“玉大人,你說我怎么就攤上這事甫男。” “怎么了若治?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)婆跑。 經(jīng)常有香客問我滑进,道長(zhǎng)扶关,這世上最難降的妖魔是什么鲫寄? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮未斑,結(jié)果婚禮上蜡秽,老公的妹妹穿的比我還像新娘。我一直安慰自己寞蚌,他們只是感情好挟秤,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著攀甚,像睡著了一般秋度。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鲸拥,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天捏浊,我揣著相機(jī)與錄音金踪,去河邊找鬼胡岔。 笑死靶瘸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的润匙。 我是一名探鬼主播孕讳,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼典徘,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了帜平?” 一聲冷哼從身側(cè)響起裆甩,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎叨叙,沒想到半個(gè)月后擂错,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钮呀,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年子房,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片解愤。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖哼鬓,靈堂內(nèi)的尸體忽然破棺而出异希,到底是詐尸還是另有隱情称簿,我是刑警寧澤憨降,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站悔叽,受9級(jí)特大地震影響骄蝇,放射性物質(zhì)發(fā)生泄漏赚窃。R本人自食惡果不足惜勒极,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望炫彩。 院中可真熱鬧昨忆,春花似錦邑贴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至诺舔,卻和暖如春低飒,著一層夾襖步出監(jiān)牢的瞬間糕档,已是汗流浹背速那。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留荔烧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像烁涌,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子舷丹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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