iOS開發——逆向工程OC篇&靜態分析及使用

來源:互聯網
上載者:User

標籤:

逆向工程-靜態分析及使用

 

 

看到一篇裝逼技術,有機會好好研究一下。。。。。

 

最近在學習IOS逆向工程,查看網路上的資料也不是太多,邊學邊總結一下。

首先學習資料:

  1. 念茜(大神)的部落格: http://nianxi.net

  2. 《ios應用逆向工程 分析與實戰》

----------------------------------------------------淩亂的分割線------------------------------------------

其次講講要用到的工具(ios安裝工具使用Cydia中搜尋安裝,有些需要資料來源可以自行尋找):

  1. 已經越獄的IOS裝置:這是必須的

  2. OpenSSH(資料來源:http://apt.saurik.com):用於遠程登入ssh和檔案傳輸scp

  3. class-dump-z: 用於簡單分析出工程中的類名和函數名

  4. IDA:強大的反編譯工具

  5. Hopper Disassembler:類似IDA 我比較喜歡,能簡單轉換成OC的功能

  6. Reveal:UI層解析工具

  7. iFunBox 、 iTools :兩個都是強大的ios裝置管理工具,越獄後能輕鬆讀取應用檔案等功能

 

----------------------------------------------------淩亂的分割線------------------------------------------

恩,差不多就這麼多了!上面的工具大部分都是收費的,不過都是有試用版的,接下來我們一個個分析:

  1. ios裝置越獄,這個我就不講了吧,不過我要贊@Apsara Distributed File System團隊一個,目前所有ios系統都可以越獄(包括ios8.x)

  2. 在ios裝置上下載OpenSSH (資料來源:http://apt.saurik.com),然後用電腦遠程登入ios:

 1 ACA80166:~ yuchenghai$ ssh [email protected]172.168.1.100 

然後輸入密碼,@後面是手機的IP號,越獄後預設密碼好像是123456.

傳輸檔案的命令是

scp gdbinit [email protected]172.168.1.100:/var/rootscp [email protected]172.168.1.100:/var/root/123.txt ~/

 3. class-dump-z 是一個強大的函數提取工具,非常好用,也是基礎工具

:http://stevenygard.com/projects/class-dump

                  https://code.google.com/p/networkpx/wiki/class_dump_z

可以發到手機裡調用,也可以在電腦上調用,要解析的檔案是在應用目錄下x.app(裡面還有用到的所有檔案資源)下面的x(x是你要分析的應用程式名稱)以唱吧為例,用ifunbox找到應用進入應用目錄就可以看到ktv.app了開啟包檔案就能找到ktv。

 

$ class-dump-z ktv > ktv.txt       //匯出所有內容到檔案$ class-dump-z -H ktv -o ktvdir/   //匯出所有內容目錄到檔案夾(首先要建立ktvdir檔案夾)

 

 

*這裡會有一個問題,就是從app store下載的應用解析出來會是亂碼,因為應用被加密了。解決辦法

  1. 去渠道上下應用如同步推、91

  2. 解密工具 如AppCrackr(源http://cydia.xsellize.com)、Crackulous、Clutch

  class-dump 只能解析出類名和函數名,不能看到具體的實現邏輯。但是很直觀

 4.IDA和Hopper Disassembler差不多,能看到每個函數的具體邏輯(但是-都是彙編)IDA很強大,能在後面標記的oc的函數名,但是我更喜歡Hopper Disassembler,因為他能簡單的類比出oc源碼,但是也是非常簡單的。兩者按空格鍵都能顯示出分支邏輯來。

    彙編非常難看懂,我們需要的是耐心+耐心。後面可以加上動態工具聯合分析能更有效


 5.Reveal的功能就更強大了,能表明出UI的具體結構來,告訴你每個View的類型是什麼,這通常也是我們常用的分析一個app的切入點。

:http://revealapp.com

下載完後開啟reveal在菜單目錄中help-show reveal library in finder開啟庫檔案,將兩個檔案發到手機裡

scp -r /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/Reveal.framework [email protected]192.168.0.X:/System/Library/Frameworksscp /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib [email protected]192.168.0.X:/Library/MobileSubstrate/DynamicLibraries

 

接下來編輯libReveal.plist檔案

在/Library/MobileSubstrate/DynamicLibraries/下建立檔案libReveal.plist,指定app的Bundle,可以指定多個

{       Filter = {           Bundles = ("com.changba.ktv");       };   }

 

同學們會問了,app 的bundleID怎麼查看呢,我們還是用ifunbox工具找到應用目錄,在x.app檔案夾中會有info.plist檔案,開啟就能找到。

最後重啟裝置-開啟想分析的應用-電腦開啟reveal介面,就可以點擊分析了

總結一下吧,分析一個應用的邏輯是這樣的:

  1. 拿個越獄機-下好工具

  2. 去越獄平台下個想分析的應用(或者去app store下,用解密工具解密一下)

  3. 匯入reveal分析頁面,得到想要的知道的具體視圖類或者大致範圍

  4. 分析class-dump中,找到想要的類和函數

  5. 在IDA中找到具體函數,查看邏輯

單純的靜態分析只能知道個大概,想知道架構和具體內容還需要動態分析(下面分析)的協助。不過想知道一個應用用到了什麼庫,介面是什麼結構,有什麼圖片資源,上面的絕對夠用了。總之逆向工程是比較枯燥無味的東西,資料又少,需要的是。。。。。加油

iOS開發——逆向工程OC篇&靜態分析及使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.