"切磋技藝:iOS逆向工具精選"

如果你渴望成為一名精通iOS逆向開發(fā)的工程師湿故,但卻缺乏自己的工具集柠偶,那么在著手實戰(zhàn)開發(fā)之前莹规,提前準(zhǔn)備好逆向開發(fā)工具是必不可少的请梢。接下來正歼,我們將逐一介紹這些工具的安裝和使用方法辐马。

1.工具盛宴:從pp助手到MonkeyDev,全面解析

  • pp助手
  • go2shell
  • iTerm2
  • Alfred+32
  • XtraFinder
  • iFunBox
  • IDA Pro
  • app-signer
  • MachOView
  • Cycript
  • theos
  • MonkeyDev

12款工具局义,帶來意想不到的驚喜喜爷。接下來,逐一細(xì)細(xì)品味萄唇。

絕對沒錯檩帐。擁有這些工具能讓你深入了解應(yīng)用的內(nèi)部結(jié)構(gòu),甚至能夠修改其行為另萤。但是湃密,正因為如此,加強(qiáng)應(yīng)用的安全防護(hù)變得尤為重要四敞。通過采取適當(dāng)?shù)陌踩胧┓涸矗热缂用堋⒋a混淆忿危、權(quán)限控制等达箍,可以有效地防止應(yīng)用攻擊。在逆向開發(fā)的過程中铺厨,保護(hù)用戶數(shù)據(jù)和隱私始終是首要任務(wù)缎玫。

2.匯編逆向工具安裝

1.pp助手

  • 1.你可以從官方網(wǎng)站下載軟件,下載后解滓,只需簡單安裝即可赃磨。
  • 2.安裝pp助手的目的是為了方便下載已經(jīng)砸殼的應(yīng)用程序。在這里不詳細(xì)介紹洼裤,我們將在后續(xù)實戰(zhàn)階段進(jìn)行詳細(xì)講解邻辉。
  • 3.下載IPA包


  • 這些IPA包已經(jīng)是越獄過的,無需再進(jìn)行砸殼操作逸邦。
  • 我們將在MonkeyDev項目開發(fā)中使用這些IPA包(先進(jìn)行了解)恩沛。
  • 同時,也可以通過終端程序進(jìn)行安裝和調(diào)試(也是先進(jìn)行了解)缕减。

2.go2shell-一款懶人命令行必備神器

go2shell.png
  • 下載地址:http://zipzapmac.com/go2shell

  • 1.打開軟件,把Go2Shell拖入Applications中

  • 2.打開Go2Shell


    go2shell啟動頁面.png
  • 3.點擊install Go2Shell,然后會在Finder中出現(xiàn),如下圖


    go2shell安裝完成.png
  • 4.這樣的工具讓命令行操作更加高效和便捷雷客,無需頻繁地切換目錄,大大提升了工作效率桥狡。

  • 5.使用


    使用.png

使用這些工具可以直接進(jìn)入所在目錄搅裙,無需使用cd命令皱卓,是懶人命令行的必備神器。
點擊go2shell快捷工具后部逮,直接打開終端娜汁,并且自動跳轉(zhuǎn)到指定目錄。
通過ls命令兄朋,我們可以立即查看目錄下的內(nèi)容掐禁,非常方便。
這種操作方式確實很方便颅和,讓人意外而驚喜傅事!

3. iTerm2

下載地址:https://www.iterm2.com/downloads.html

  • 1.下載好應(yīng)用后,只需將其拖到應(yīng)用文件夾即可開始使用峡扩。

  • 2.iTerm2是一款基于OS X平臺的開源免費(fèi)終端工具蹭越,許多人使用它替代了原生的Terminal,因為它功能更強(qiáng)大教届、更靈活响鹃。

  • 重點:(在這里,我們將介紹如何使用終端連接越獄設(shè)備案训。)

重點無線連接:

安裝OpenSSH
  • 1.打開WiFi設(shè)置买置,找到你的IP地址。

  • 2.使用終端執(zhí)行命令:ssh root@你的IP地址(默認(rèn)密碼是alpine)萤衰。

  • 3.進(jìn)行終端連接堕义,愉快地開始使用吧!


  • 我配置了公鑰脆栋,所以只需輸入連接命令ssh root@192.168.3.46倦卖,即可直接連接。如果你沒有配置公鑰椿争,則需要輸入默認(rèn)密碼怕膛。

重點有線連接:
我們要用到的工具是一個python腳本工具和2個shell腳本:

  • iPhone的22端口映射到Mac本地的10000端口


  • 是否繼續(xù)連接? yes
  • 連接成功,拿到root權(quán)限.(如果第一次連接是需要默認(rèn)密碼)


重點免密登錄:

  • 在mac下-找到.ssh下的公鑰


  • 將客戶端/.ssh/id_rsa.pub中的內(nèi)容自動添加到服務(wù)器的/.ssh/authorized_keys文件末尾,并將其上傳到手機(jī)的~/.ssh目錄中秦踪。

  • 下次連接手機(jī)時褐捻,即可實現(xiàn)免密登錄。

4. Alfred+32

Alfred+32.png
  • 1.將Alfred 3 拖入應(yīng)用程序文件夾中椅邓。

  • 2.打開圖中的Alfred 3 KG柠逞,點擊Patch,彈出對話框景馁,找到Alfred 3.app并打開板壮。

  • 3.點擊Save,提示“License information saved successfully”合住。


  • 4.完成后绰精,你就可以愉快地使用了撒璧。

  • 5.使用快捷鍵 command + 空格 可以啟動Alfred 3。

  • 6.開始享受Alfred 3帶來的便利吧笨使!



以上兩個例子只是冰山一角卿樱,還有許多功能等待你去探索!

5. XtraFinder

下載地址: http://www.trankynam.com/xtrafinder/
(讓你的 Mac 資源管理器變得更加強(qiáng)大)

  • 根據(jù)個人需求硫椰,進(jìn)行個性化配置繁调。

6.iFunBox

1.介紹

  • iFunBox是一款小巧的iPhone文件管理軟件
  • 界面類似于Windows資源管理器,以簡練時尚的窗口方式瀏覽和管理iPhone最爬、iPad涉馁、iPod touch上的文件和目錄门岔。
  • 既可以在手機(jī)與電腦之間同步傳遞數(shù)據(jù)爱致,使你輕松上傳電影、音樂寒随、電子書糠悯、桌面、照片以及應(yīng)用程序妻往。
  • 還能夠把你的iPhone變成一個U盤互艾,大量信息隨身攜帶,但也需要iTunes支持讯泣。

2.iFunBox是一款老牌iOS文件管理工具,可以非常方便地操作iOS中的文件.

  • 這是我的越獄設(shè)備:iPhone 5s纫普,運(yùn)行iOS 7.1.1。 (建議大家準(zhǔn)備iOS 8.3.3的越獄設(shè)備)
  • 在紅色箭頭下好渠,可以查看到iPhone的系統(tǒng)文件昨稼。
  • 注意: 越獄iOS設(shè)備必須安裝“Apple File Conduit 2”,這樣iFunBox才能瀏覽iOS的全系統(tǒng)文件拳锚。

7. IDA Pro--匯編程序員的生命

  • 交互式反匯編器專業(yè)版(Interactive Disassembler Professional)假栓,人們常稱其為IDA Pro,或簡稱為IDA霍掺。

  • 是目前最棒的一個靜態(tài)反編譯軟件匾荆,為眾多[0day]世界的成員和[ShellCode]安全分析人士不可缺少的利器!

  • IDA Pro是一款交互式的杆烁,可編程的牙丽,可擴(kuò)展的,多處理器的兔魂,交叉[Windows]或[Linux] [WinCE] [MacOS]平臺主機(jī)來分析程序烤芦, 被公認(rèn)為最好的逆向工程利器。

  • 只需要next進(jìn)行安裝,然后啟動,就可以分析自己的匯編程序了.

  • 使用:

  • 1.創(chuàng)建項目


  • 2.找到可執(zhí)行文件 Mach-O

  • 3.IDA打開可執(zhí)行文件


  • 4.找到main編譯的匯編代碼


  • 5.分析匯編代碼

; int __cdecl main(int argc, const char **argv, const char **envp)
public _main
_main proc near
var_1C= dword ptr -1Ch
var_18= dword ptr -18h
var_14= dword ptr -14h
var_10= qword ptr -10h
var_4= dword ptr -4

push    rbp
mov     rbp, rsp
sub     rsp, 20h
lea     rax, cfstr_D    ; "%d"
mov     [rbp+var_4], edi
mov     [rbp+var_10], rsi
mov     [rbp+var_14], 1
mov     [rbp+var_18], 2
mov     edi, [rbp+var_14]
add     edi, [rbp+var_18]
mov     [rbp+var_1C], edi
mov     esi, [rbp+var_1C]
mov     rdi, rax
mov     al, 0
call    _NSLog
xor     eax, eax
add     rsp, 20h
pop     rbp
retn
_main endp
  • 6.可以通過偽代碼分析,恢復(fù)main函數(shù)下代碼的實現(xiàn)入热。這樣可以了解代碼的執(zhí)行流程和結(jié)構(gòu)拍棕。


8.ios-app-signer-master--ipa文件重簽名

下載地址:http://dantheman827.github.io/ios-app-signer/

app簽名.png

1.介紹

  • 一般情況下晓铆,我們上線的應(yīng)用都需要打包生成IPA文件。
  • (在這里只作為了解绰播,值得注意的是骄噪,如果你想要對從App Store下載的IPA進(jìn)行重簽名,必須進(jìn)行砸殼操作蠢箩,這個實戰(zhàn)會在后面詳細(xì)介紹链蕊。)
  • 從圖中可以看到,我們可以導(dǎo)入IPA文件谬泌,選擇你的配置文件滔韵,然后點擊Start即可。
  • 接著會生成一個新的IPA文件掌实,這就表示重簽名成功了陪蜻。
  • 有了IPA文件,我們就可以通過終端將應(yīng)用安裝到設(shè)備上贱鼻。

2.使用

以上以QQ音樂.iPA為例:

  • 1.選擇下載好的QQ音樂.iPA文件宴卖,并進(jìn)行信息配置。
  • 2.點擊Start按鈕邻悬,選擇保存目錄症昏。
  • 3.將重簽名后的IPA文件保存到指定目錄進(jìn)行查看。

通過以上三步父丰,我們完成了對iPA文件的重簽名操作肝谭。

有兩種方法可以安裝重簽名后的應(yīng)用:

  • 1.我們可以使用MonkeyDev安裝項目進(jìn)行嘗試。(MonkeyDev的使用介紹在第12個工具處)
  • 2.我們可以使用終端進(jìn)行安裝蛾扇。(具體操作會在后續(xù)進(jìn)行詳細(xì)講解)

9.MachOView

MachOView源碼地址:https://github.com/gdbinit/MachOView

  • Mach-O格式全稱為Mach Object文件格式的縮寫攘烛,是mac上可執(zhí)行文件的格式.

  • mach-o文件類型分為:
    1、Executable:應(yīng)用的主要二進(jìn)制
    2屁桑、Dylib Library:動態(tài)鏈接庫(又稱DSO或DLL)
    3医寿、Static Library:靜態(tài)鏈接庫
    4、Bundle:不能被鏈接的Dylib蘑斧,只能在運(yùn)行時使用dlopen( )加載靖秩,可當(dāng)做macOS的插件
    5、Relocatable Object File :可重定向文件類型

  • 使用:
    在iDA中導(dǎo)出的可執(zhí)行文件,依然可以用MachOView進(jìn)行打開.


    BEA3DD5D1CA0FB08179B5DF16530C12D.png

如圖,Mach64 Header(64位架構(gòu)),選中mach header 可以看到每個類的cpu架構(gòu)信息竖瘾、load commands數(shù)量 沟突、load commandssize 、file type等信息

  • 64位和32位架構(gòu)有哪些不同?
32位架構(gòu):

struct mach_header {
    uint32_t    magic;      /* mach magic number identifier */
    cpu_type_t  cputype;    /* cpu specifier */
    cpu_subtype_t   cpusubtype; /* machine specifier */
    uint32_t    filetype;   /* type of file */
    uint32_t    ncmds;      /* number of load commands */
    uint32_t    sizeofcmds; /* the size of all the load commands */
    uint32_t    flags;      /* flags */
};
64位架構(gòu):

struct mach_header_64 {
    uint32_t    magic;      /* mach magic number identifier */
    cpu_type_t  cputype;    /* cpu specifier */
    cpu_subtype_t   cpusubtype; /* machine specifier */
    uint32_t    filetype;   /* type of file */
    uint32_t    ncmds;      /* number of load commands */
    uint32_t    sizeofcmds; /* the size of all the load commands */
    uint32_t    flags;      /* flags */
    uint32_t    reserved;   /* reserved */
};
  • 32位和64位架構(gòu)的頭文件區(qū)別是64位多了一個保留字段(reserved)
  • magic:魔數(shù)捕传,用于快速確認(rèn)該文件用于64位還是32位
  • cputype:CPU類型惠拭,比如 arm
  • cpusubtype:對應(yīng)的具體類型,比如arm64、armv7
  • filetype:文件類型职辅,比如可執(zhí)行文件棒呛、庫文件、Dsym文件

10.Cycript

地址:http://www.cycript.org

Cycript是由saurik推出的一款腳本語言,可以看作是Objective-JavaScript.

  • 我們首先下載sdk

  • 下載后的SDK文件應(yīng)該放在/opt目錄下域携,與theos和MonkeyDev同級目錄簇秒。


  • 切換到/opt/cycript目錄下,執(zhí)行cycript命令秀鞭,即可進(jìn)入Cycript環(huán)境趋观。(在圖中,可以進(jìn)行加法計算锋边、輸出等操作)
    注意:進(jìn)入Cycript環(huán)境后皱坛,需要連接越獄設(shè)備才能進(jìn)行操作。

  • 在進(jìn)入Cycript環(huán)境之前豆巨,請確保已配置了環(huán)境變量剩辟,否則無法進(jìn)入。


  • 配置環(huán)境變量


  • 只需在任何地方啟動終端搀矫,即可進(jìn)入Cycript環(huán)境抹沪。


在這里,你已經(jīng)成功配置了Mac系統(tǒng)下的Cycript環(huán)境瓤球。

  • 接下來我們將安裝iOS上的Cycript。
  • 我們遠(yuǎn)程連接iOS終端

以百度外賣為例

11.theos

github地址:https://github.com/theos/theos

  • 安裝最新的theos
sudo git clone --recursive https://github.com/theos/theos.git /opt/theos
  • 安裝ldid(如安裝theos過程安裝了ldid敏弃,跳過)
brew install ldid
  • theos使用



    在終端模式下卦羡,使用nic.pl可以創(chuàng)建tweak工程文件。

  • 如果希望在任意地方使用nic.pl命令麦到,需要配置環(huán)境變量绿饵。

  • 一旦配置好環(huán)境變量,以后使用起來會非常方便瓶颠。
  • 使用:


在你配置好環(huán)境變量的情況下拟赊,在終端中輸入nic.pl命令,就會出現(xiàn)上面這個界面粹淋,然后你就可以創(chuàng)建tweak項目工程了吸祟。

12.MonkeyDev

(注意:monkeyDev環(huán)境配置前,需要把theos環(huán)境配置好)

  • 1.你可以通過以下命令選擇指定的Xcode進(jìn)行安裝:
sudo xcode-select -s /Applications/Xcode.app
  • 2.默認(rèn)安裝的Xcode為:
xcode-select -p
  • 3.執(zhí)行安裝命令
sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-install)"
  • 4.卸載
sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-uninstall)"
  • 5.更新
sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-update)"

安裝/更新之后重啟下Xcode再新建項目。

  • 6.使用
    安裝成功后桃移,打開Xcode創(chuàng)建項目屋匕,你會發(fā)現(xiàn)多了MonkeyApp選項。



    這樣你就可以創(chuàng)建項目了借杰。

3.總結(jié)

工具的安裝和配置確實考驗大家的動手能力过吻,但一旦配置好,它們就是你最好的朋友蔗衡。

這12款軟件對于逆向開發(fā)來說是必不可少的纤虽,它們就像一把銳利的工具乳绕,能夠打開應(yīng)用的另一個世界。

還有許多其他幫助性的工具需要介紹逼纸,今天先介紹到這里刷袍。文章會持續(xù)更新,更多的軟件使用方法也會寫入文章中樊展,請持續(xù)關(guān)注呻纹。

現(xiàn)在是該睡覺的時間了,希望這篇文章能夠幫助到你专缠。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末雷酪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子涝婉,更是在濱河造成了極大的恐慌哥力,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件墩弯,死亡現(xiàn)場離奇詭異吩跋,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)渔工,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門锌钮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人引矩,你說我怎么就攤上這事梁丘。” “怎么了旺韭?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵氛谜,是天一觀的道長。 經(jīng)常有香客問我区端,道長值漫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任织盼,我火速辦了婚禮杨何,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘悔政。我一直安慰自己晚吞,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布谋国。 她就那樣靜靜地躺著槽地,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捌蚊,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天集畅,我揣著相機(jī)與錄音,去河邊找鬼缅糟。 笑死挺智,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的窗宦。 我是一名探鬼主播赦颇,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赴涵!你這毒婦竟也來了媒怯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤髓窜,失蹤者是張志新(化名)和其女友劉穎扇苞,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寄纵,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鳖敷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了程拭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片定踱。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖哺壶,靈堂內(nèi)的尸體忽然破棺而出屋吨,到底是詐尸還是另有隱情,我是刑警寧澤山宾,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站鳍徽,受9級特大地震影響资锰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜阶祭,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一绷杜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧濒募,春花似錦鞭盟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春粤剧,著一層夾襖步出監(jiān)牢的瞬間歇竟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工抵恋, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留焕议,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓弧关,卻偏偏與公主長得像盅安,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子世囊,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

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