逆向雜談
因為我大學期間開發游戲外掛,對于逆向的強大有過不小的認識。能讓別人的代碼照著自己的思路去走,感覺是蠻好玩的一件事。所以帶著好奇心去研究了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插件的開發
- 防護篇
- Theos插件的原理及防護手段
- LLDB的原理及防護手段
連載中... - 如何調用系統級別函數進行反調試
- 如何防護Monkey
- 隱私數據加密,防止被靜態分析
- 代碼混淆及淺談上架馬甲包的經驗
- 項目篇
- 微信搶紅包
- 釘釘遠程打卡
后續的文章會慢慢的分享出來,目的只是為了扎實基礎,技術分享