1. 程式人生 > >iOS逆向工程概述(轉)

iOS逆向工程概述(轉)

tails 盤古 order detail 功能 分析工具 border 還要 越獄

逆向工程一詞,對很多人來說可能很陌生,在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逆向工程概述(轉)