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