iOS逆向(五)應用場景、基本思路、流程、

應用場景

  • 促進正向開發,深刻理解系統原理
  • 藉助別人的設計和實現,實現本身的功能
  • 分析惡意軟件,應用安全審計
  • 從逆向的角度實現安全保護

學完逆向以後你將能夠從不一樣的角度看待和思考問題算法

逆向的你基本思路

  • 正向工程(Forward Engineering) 抽象的邏輯設計 => 具體的物理實現
    設計概念和算法 => 編寫源代碼 => 編譯成二進制機器碼

將想法和設計理念變成具體實現的過程安全

逆向工程(Reverse Engineering)

具體的物理實現 => 抽象的邏輯設計 反編譯機器碼 => 彙編代碼(相似的高級語言代碼) => 理解其算法和設計概念bash

從二進制碼中提取設計概念和算法網絡

  • 程序的編譯和反編譯 高級語言(C/C++/Oc/Java/Python/C#) -> 中間語言(如:彙編等) -> 目標代碼(exe/lib/dll/sys/dylib等二進制文件)框架

    編譯連接   
    高級語言     ========>    機器碼	
                <========     機器碼  
            反彙編/反編譯
    
    複製代碼
    編譯連接
    高級語言  ========> 機器碼  
              <========
              反彙編/反編譯
    複製代碼

逆向的具體流程大體如以下

  • 解密、導出應用程序、class-dump導出頭文件,爲後續工做作準備
  • 從界面表現入手,獲取當前頁面佈局和控制器
  • hook發現的一些相關類,記錄輸出調用順序及參數
  • 找到關鍵函數,查看調用堆棧,hook測試效果
  • 靜態分析加動態調試分析關鍵函數的實現邏輯
  • 模擬或篡改函數的調用邏輯
  • 製做插件,或則一直到非越獄機器

上述過程看似平淡無奇,但實際作的時候不會很順利,由於咱們可能須要反覆探索才能定位目標函數,探索的過程及枯燥也有趣,你會在探索中成長和強大😄,逆向是一個試錯的過程,須要不停的猜想、查找和進行驗證,既考驗耐心也考驗動手能力函數

逆向的具體思路

  • 逆向必須是有目的的、有針對性的(明確你要作的事情)
  • 先熟悉你要逆向的目標程序,從正向的思路去猜想他可能的實現方法(使用的框架、調用的系統API等)
  • 定位關鍵代碼

定位關鍵代碼的方式佈局

  • 經過監控UI事件的響應定位關鍵代碼
  • 經過監控底層API的調用定位關鍵代碼(如網絡訪問接口、文件讀寫接口等)
  • 經過觀察數據的變化來定位關鍵代碼和地址
相關文章
相關標籤/搜索