1. 程式人生 > 實用技巧 >學習iOS逆向有什麼用?

學習iOS逆向有什麼用?

學習iOS逆向有什麼用?

我們一般都是正向開發,那逆向開發有什麼用呢?

  • 有助於深入理解iOS內部原理
    • 這個應該是很容易懂的,因為不懂內部原理的話,如何來逆向App呢。
  • 檢視競品,分析競品
    • 例如你想做一款IM產品,就可以看下微信的資料庫如何設計,各種型別的訊息如何定義,收到不同型別的訊息如何處理,有時候產品經理的一句參考微信,那你是不是無從下手了,其實都可以通過逆向進行了解的。
  • 修改已有APP的功能
    • 例如看個視訊去廣告、增加抖音自動翻頁功能、增加微信一鍵轉發功能,總之很多別的App,你覺得設計不合理,或者缺少的功能,都可以動手實現。
  • 學習優秀APP的設計
  • 增加安全防護,增強客戶端的安全性
    • 所謂攻防兼備,逆向了別人的App。是不是覺得安全防護很重要,那知道了如何攻,自己的產品就可以針對性的守了。
  • 通用性極強(越底層,通用性越強)
  • 簡歷上可以增加亮點

作為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:413038000,不管你是大牛還是小白都歡迎入駐 ,分享BAT,阿里面試題、面試經驗,討論技術, 大家一起交流學習成長!

推薦閱讀

iOS開發——最新 BAT面試題合集(持續更新中)

需要用到的工具

逆向的時候,需要用到挺多工具的,這裡先列舉幾個必備的主流工具

  • [Reveal](Download - Reveal)

    • 動態除錯程式UI介面的工具,用來分析介面的神器
  • charles

    • 抓包修改工具
  • IDA

    • 是目前最棒的一個靜態反編譯軟體之一,為眾多0day
      世界的成員和ShellCode安全分析人士不可缺少的利器。
  • Hopper Disassembler

    • 逆向工程工具,可讓反彙編,反編譯和除錯應用程式,也是一款優秀的利器
  • gdb

    • GNU Project偵錯程式,可以檢視另一個程式在執行過程中正在執行的操作–或該程式崩潰時正在執行的操作
  • lldb

    • 是一個命令列除錯環境,其功能類似於GDB,LLDB為Xcode提供了底層除錯環境,該除錯環境在除錯區域中包含一個控制檯窗格,用於在Xcode IDE環境中直接訪問LLDB命令。
  • MachOView

    • 可Mac平臺中可檢視MachO檔案格式資訊
  • [Alfred](Productivity App for macOS)

    • 快速開啟軟體,可以自定義指令碼來執行
  • jtool

    • 二進位制搜尋,符號注入,檢視檔案結構等
  • radare2

    • 類似於UNIX的逆向工程框架和命令列工具集
  • keystone

    • 一個輕量級的多平臺,多體系結構的彙編器框架。

還有其他很多工具用到的時候再說。

逆向的流程

一般來說,我們逆向有如下步驟:

  • 砸殼,匯出目標App,匯出標頭檔案
  • 介面分析,獲取到當前的控制器或者檢視
  • 對Mach-O檔案的靜態分析MachOView、class-dump、Hopper Disassembler、ida等
  • 動態除錯 對執行中的APP進行程式碼除錯
  • 模擬或者篡改實現邏輯
  • 注入程式碼到APP中
  • 必要時還可能需要重新簽名、打包ipa

iOS系統檔案

  • 我們知道,每個App都有自己的沙盒,自己是訪問不了其他App的沙盒的,那麼越獄之後就可以訪問其他應用的沙盒。

系統檔案的作用如下:

  • /Applications
    • 存放系統App和Cydia下載的app ,但是不包括AppStore下載的App
  • /Library
    • 系統App的資源,使用者設定,例如系統自帶鈴聲,系統日誌等,
    • /Library/MobileSubstrate 存放所有基於Cydia Substrate的外掛
  • /System
    • 包含大量系統元件和庫
    • /System /Library/Carrier Bundles 儲存運營商的配置
    • /System /Library/Frameworks 和/System /Library/PrivateFrameworks 存放系統的動態庫
  • /User
    • 實際指向 /var/mobile
    • /User/Meida 存放相簿等資訊
    • /User/Library 存放簡訊,郵件等
  • /usr
    • 使用者工具和程式
    • /usr/include 存放C標頭檔案
    • /usr/lib 存放庫檔案
  • /bin
    • 存放提供系統功能的二進位制檔案
  • /var
    • 臨時檔案、使用者資料,日誌,從AppStore下載的應用等

補充

  • Cydia Substrate 是一個可以修改系統和應用程式的框架

  • MobileHooker 第三方應用,系統的函式hook,執行我們自己的程式碼

  • MobileLoader 可以讓第三方應用啟動的時候載入我們自己的動態庫

  • safe mode 安全模式,安裝外掛系統崩潰,這時候所有外掛都不會載入

  • 最近準備把逆向知識,整理成系列,地址:https://xiaozhuanlan.com/cydia

  • 包括內容有:

    • 從砸殼,SSH認證,環境搭建,逆向工具介紹和使用,到靜態分析,動態除錯。
    • 從簽名原理,重簽名,破解,反破解,彙編分析,到遊戲安全,遊戲分析,專案實戰等。

作為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:413038000,不管你是大牛還是小白都歡迎入駐 ,分享BAT,阿里面試題、面試經驗,討論技術, 大家一起交流學習成長!

推薦閱讀

iOS開發——最新 BAT面試題合集(持續更新中)

作者:eagleyz
連結:https://www.jianshu.com/p/2f3c65bc93ef