iOS逆向工程概述(轉)
逆向工程一詞,對很多人來說可能很陌生,在android領域,我們經常會聽到“反編譯某個apk”,那麽逆向工程從某種角度講也包括反編譯這項技術,這樣一對比,可能我們就更容易理解逆向工程的定義了。
我們引用百度百科對這個詞更加精準地解釋:
逆向工程(又稱逆向技術),是一種產品設計技術再現過程,即對一項目標產品進行逆向分析及研究,從而演繹並得出該產品的處理流程、組織結構、功能特性及技術規格等設計要素,以制作出功能相近,但又不完全一樣的產品。逆向工程源於商業及軍事領域中的硬件分析。其主要目的是在不能輕易獲得必要的生產信息的情況下,直接從成品分析,推導出產品的設計原理。
一、逆向工程的作用是什麽
逆向工程並不是為了破解他人的軟件為目的,在商業領域,有更加重要的作用,具體包括以下幾個方面。
安全審查:對於iOS 開發者來說,不僅僅是完成產品的業務功能,尤其對大公司,還需要非常重視安全問題。通過逆向工程,及早發現問題,修改問題,避免發布後到用戶手中引起各種輿情問題,損害公司聲譽。
分析競品:1.參考競品app的架構設計;2.參考競品app的接口設計;3.關鍵技術的實現細節。
學術研究:通過逆向,實現學術研究,主要用於學習。
突破app的使用限制:很多app對不同的用戶有使用權限的限制,比如收費,或者vip用戶才能使用的功能,通過逆向提前獲取使用權限,當然不推薦這種方式,建議大家還是支持正版。
識別侵權:主要用於調查競品或商業產品,識別侵權行為。
二、逆向分析的方法
iOS逆向分析的方法主要包括靜態和動態兩種分析方法。
靜態分析顧名思義是在app未運動的情況下,對應用本身的一種分析方法。我們都知道iOS的沙盒機制,沙盒裏會存儲app的各種信息,包括應用的文件系統結構,比如數據庫等;此外,使用一些特殊工具,如反匯編工具對app代碼進行查看等,都屬於靜態分析的範疇。
動態分析是在app運行過程中,通過在線調試,分析應用的文件結構,內存的變化,界面的展示等,同時也可以觀察網絡數據的請求,通過抓包分析業務的走向,協議的定義等。
兩種分析方法在實際的逆向過程中,應當配合使用,比如靜態分析獲取app的基本信息以及數據存儲結構,再通過動態分析的方法進一步深入app內部,研究具體實現和原理,大大提供分析效率。
三、逆向分析工具
工欲善其事必先利其器,掌握了方法之後,還要學會使用各種工具,分析app的不同功能。這些工具主要包括以下:
工具分類 | 工具名稱 |
---|---|
越獄工具 | 盤古越獄 |
UI分析工具 | Reveal和PonyDebugger等 |
文件系統查看工具 | iExplorer, iFunbox, iTool等 |
網絡分析工具 | WireShark, Charles等 |
反匯編工具 | Hopper, IDA Pro等 |
調試器 | Cycript, gdb等 |
逆向程序開發工具 | Theos |
其他 | ... |
以上工具有的是付費工具,可以使用破解版本,具體的功能我們在後續章節介紹。
四、總結
本篇對iOS逆向工程做了概述,介紹了逆向的方法以及工具,後面的章節會進行詳細的介紹。
轉自:https://blog.csdn.net/wu__di/article/details/54934683
iOS逆向工程概述(轉)