逆向雜談
因為我大學期間開發遊戲外掛,對於逆向的強大有過不小的認識。能讓別人的程式碼照著自己的思路去走,感覺是蠻好玩的一件事。所以帶著好奇心去研究了iOS逆向。對於iOS逆向,很多人只聽過《IOS應用逆向工程》,單純通過書籍還有雜亂的博文,想要入門還是挺難的。其實iOS逆向沒想象中那麼難,只要我們找到方法。你想想【遊戲外掛】只是單純憑藉C++基礎/資料結構去逆向一個大型網遊,而現在我們有過正向iOS開發經驗,逆向蘋果App,難度可想而知降了多少。
我們正常的開發是從程式碼->UI/功能,逆向就是從UI/功能反推回程式碼。這段時間斷斷續續學了不少iOS逆向的知識,準備好好整理一遍,分享出來,如有錯誤歡迎指正!
學習iOS逆向的用處
我簡單梳理了一下,iOS逆向能做的事~~
- 瞭解iOS的底層實現
- 破解別人的軟體,實現各種變態的功能(獲取隱私資料、微信搶紅包、釘釘打卡等等...)
- 保護自己的程式碼,隱藏隱私資料,隱藏函式
- 上馬甲包
- 分析別人的程式碼架構 - 這個需要你有一定的架構知識
聽起來好像很屌樣子
學習路線
- 基礎篇
-
彙編 (這塊比較枯燥但很重要,如果你只是想簡單瞭解逆向的話,可以先跳過後面覺得需要再看)
-
基礎知識掌握(Macho檔案基礎、ASLR、App的簽名機制)
-
- 進階篇
- 對第三方App重簽名的方法
- 如何向第三方App注入自己的程式碼
- 如何HOOK別人的程式碼(Method Swizzling、FishHook、Logos)
- 常用工具的使用(Class-Dump、Restore-Symbol、LLDB)
- 越獄篇
- 越獄環境下的配置SSH,並支援USB除錯
- Cycript的使用
- 砸殼
- Theos外掛的開發
- LLDB除錯
- 防護篇
- Theos外掛的原理及防護手段
- LLDB的原理及防護手段
- 如何呼叫系統級別函式進行反除錯
- 如何防護Monkey
- 隱私資料加密,防止被靜態分析
- 程式碼混淆及淺談上架馬甲包的經驗
- 專案篇
- 微信搶紅包
- 釘釘遠端打卡
後續的文章會慢慢的分享出來,目的只是為了紮實基礎,技術分享