[入門到高級] Android逆向學習路線【完整版】

此篇整理了最完整的《Android逆向學習線路知識體系》。希望給迷糊的入門者指出一個明確的方向。

關於Android逆向、破解、脫殼、反逆向、反破解 等知識,網上沒有完整的資料,也沒有相關的課程。

完整的知識體系和學習大綱,都是過來人總結的經驗,逆向方面沒人總結,今天我來總結一下完整的知識體系框架。

講一下關於Android安全工程師需要具備的能力,以及想要從事Android逆向開發應該如何着手學習。

最近我發現一些通過培訓班出來面試的,純粹的騙子,連Android工程都不會創建,有幾個還沒聽說過RecyclerView。

搞逆向的,你連正向開發都不會,工程源碼你都看不懂,你還逆向個啥?先正向開發幾年再去搞逆向吧……

學習Android逆向之前,必備條件。【必備】

  1. 從事3-5年真實的Android開發工作,能夠跟蹤瞭解最新Android開發技術;
  2. 熟悉Android NDK開發和JNI技術,熟悉Log原理。有FrameWork開發經驗;
  3. 熟悉Android虛擬機機制,打包原理,熟練使用C/C++,Java,kotlin,dart等Android開發常用語言;
  4. 瞭解ARM、Smali彙編語言,熟悉IPC原理,能夠熟練搭建IPC框架;
  5. 熟悉Android/Linux底層框架,熟悉系統的工作原理和細節;
  6. 熟練使用Fiddler和Charles抓包工具進行抓包;
  7. 熟悉Python基礎語法,並能寫簡單的腳本和爬蟲。

贈送源碼:https://github.com/yugu88/MagicWX

《最完整的Android逆向知識體系》-- by hao_qi 2019/10/20 


第一階段:

Android 基礎知識回顧:

  • 回顧Android 開發編程,深入理解Android系統原理和層次結構,深入分析Handler源碼和原理;
  • 回顧Java,C/C++,Kotlin 在Android開發中必用的語言,瞭解幾種語言的混淆後的特性;
  • 回顧Android IPC和JNI的底層原理和熱更新技術
  • 回顧Native開發要點,使用C++結合NDK完成Android Native開發;
  • 回顧Android開發中常用的 AMS、PMS、WMS原理;
  • 回顧Android開發中 Google的MVVM框架:DataBinding+LiveData+ViewModel;
  • 回顧Android開發中 Google的MVP框架:Dagger2;
  • 回顧Android開發網絡架構:Okhttp3+RxJava2+Retrofit2+Rxdownload4+Rxcache+Glide;

Android 逆向基礎知識:

  • 熟悉Android逆向工具的使用,如apktool,IDA,dex2jar,JEB,AndroidKiller,Androguard等;
  • 深入分析APK中包含的各文件格式,分析Android系統源碼中解析APK的相關代碼;
  • 學習和熟悉smali語言(重點);
  • 仿微信寫一個APP,並利用工具逆向出apk內的代碼,並對比源碼分析。

入門知識總結和實戰(逆向入門):

  • 知識梳理,常用工具安裝,adb命令與Linux常用命令,常見登錄邏輯分析;
  • 分析ELF可執行程序,調式ELF可執行程序;
  • ARM彙編與寄存器,ARM反彙編速成,ARM指令機器碼,常用ARM指令集;
  • 反編譯ELF文件與ObjDump,ELF文件解析與readelf,ELF文件解析與010Editor,深入分析ELF文件結構;
  • IDA靜態分析,IDA動態調式;
  • 簡易計算器實現及分析(練習);
  • 字符串加密與解密,冒泡排序算法分析;
  • 關鍵android_server文件檢測,IDA調試端口檢測;
  • ELF可執行程序加載so庫,DEX解析與dexDump,DEX解析與010Editor;
  • 實現自己的Dex解析工具與GDA(練習);
  • Androidkiller動態調試smali代碼插件,AS+smalidea調式smali代碼;
  • Log注入實現免註冊,如何定位關鍵代碼,去除java層簽名驗證,去除廣告和彈窗(實戰);
  • 推薦閱讀《Android系統源代碼情景分析》;

Android 基礎算法和安全協議:

  • 密碼學,對稱加密算法,非對稱加密算法,散列函數;
  • 數字簽名,數字證書,SSL證書檢測,協議與安全協議;
  • 瞭解服務器端與客戶端通信協議分析;
  • 使用Charles抓登錄封包和驗證碼,協議構造與Java層MD5算法,動態調式smali代碼與sign字段;
  • 協議構造類與SO層DESCBC算法,協議關鍵字段SIGN與SO層MD5算法,動態調試協議字段,動態調式協議關鍵字段SIGN;
  • 協議關鍵字段pwad和sign,動態調式協議字段拼接與MD5加密,分析so層OpenSSLSHA1算法;
  • 封包加密與反編譯失敗,使用方法跟蹤分析加密;
  • java層逆向分析,分析so層TEA算法;
  • 練習:抓取驗證碼和登錄封包,分析協議關鍵字段與RSA算法,證書與RSA原理及源碼分析;
  • 對稱加密AES、PBE與CRC算法,數字簽名RSA、DSA算法;

第二階段:

Android 逆向進階學習:

  • Android 系統結構深入分析,自定義 ClassLoader,自定義註解和元註解原理分析;
  • 瞭解AndroidNDK,靜態註冊,動態註冊,SO加載分析,App保護策略
  • 去除霸哥磁力搜素APK簽名驗證,一鍵去除簽名驗證,靜態代理,動態代理
  • Hook Activity啓動函數,Hook簽名驗證函數
  • 介紹xposed框架:
  • Xposed框架:繞過驗證碼註冊
  • Xposed框架:登陸劫持
  • Xposed框架:篡改IMEI信息
  • 介紹CydiaSubstrate框架:
  • Java層Hook:篡改系統文字顏色
  • Java層Hook:修改方法返回值繞過登錄
  • Java層Hook:篡改遊戲金幣
  • Java層Hook:篡改主機名和端口號
  • Native層Hook:
  • ADBI框架:
  • ELFARMHOOK框架
  • 內存摳取Dex文件
  • 過反調試技巧
  • C++遊戲逆向
  • 練習:動態調試2048純算法遊戲,Zygote+Hook使2048遊戲秒過關;

Android NDK與JNI全面剖析:

  • so動態庫的介紹
  • JNI動態註冊和靜態註冊
  • NDK Build 工具介紹
  • Cmake工具介紹
  • JNI.h 介紹
  • Android 源碼工具和技巧
  • ijkplayer 源碼分析及原理講解
  • AndFix 源碼分析及原理講解
  • Java調用so庫的動態流程解析
  • NDK實現增量更新案例
  • NDK實現換臉等工業級圖像識別案例
  • NDK文件實現拆分和加密處理

Android 加固防護和脫殼簡介:

  • DEX文件、ODEX文件與OAT文件;
  • XML文件與ARSC文件;
  • 分析App加固的產生及背景,最初加固方式,加固技術的發展;
  • HOOK製作脫殼機,定製自己的脫殼系統;
  • DexClassLoader動態加載分析,DEX自解析重構技術;
  • 三代梆梆加固原理分析;
  • 愛加密加固原理分析;
  • 360加固與脫殼機,360加固VM與置換表;
  • 輔助脫殼機,IDA動態調式脫愛加密殼;
  • IDA動態調式脫360殼,IDA動態調式脫SO殼;
  • 脫360殼-dex2oat,脫360殼-drizzleDumper;
  • 百度加固DD大法,百度加固VM與置換表;
  • 阿里加固與脫殼機,騰訊樂固;
  • ARSC資源保護與註解;
  • 脫殼神器ZjDroid:捕魚達3
  • 加固技術總結;

Android 脫殼與反脫殼分析:

  • Android脫殼中的思路,技巧
  • elf結構詳解:動態運行庫so文件的文件組成結構
  • elf結構詳解:加載so文件的流程
  • elf文件變形與保護,elf文件修復分析,so加殼文件修復
  • 常用調試檢測方法與過檢測方法
  • Android源碼定製添加反反調試機制
  • Android dvm 脫殼,Dalvik dex處理分析
  • IDA脫殼腳本編寫,Odex修復方法,IDAOdex修復腳本編寫

進階知識總結和企業級實戰(逆向進階):

  • 病毒分析與脫殼學習,用Ransomware類和木馬類進行學習;
  • 手動脫殼《王者榮耀》練習;
  • 從0開始打造自己的破解代碼庫;

第三階段:

Android 漏洞分析和挖掘:

  • 學習常見的漏洞類型和原理。例如堆溢出,棧溢出,UAF等,可以參考漏洞分析相關書籍;
  • 關注Android Security Bulletin,根據提供的diff分析漏洞成因;
  • 學習並調試以前的經典漏洞;
  • 學習漏洞挖掘fuzzing思路,參考書籍推薦《Android安全攻防權威指南》;
  • 病毒分析與病毒脫殼實戰;

Android 虛擬機技術、系統源碼分析、刷機機制介紹、製作ROM刷機包:

  • ASP代碼注入式寫法;
  • Android 免root進行hook;
  • Android虛擬機原理,Android多開原理講解;
  • 在apk內部寫一個虛擬機,在apk內安裝apk;虛擬機適配Android 10和64位系統;
  • 從0開始開發自己的虛擬機庫;
  • 最完善的刷機工具 :魔趣 ROM:www.mokeedev.com
  • 最完善的刷機工具 :Devices - TWRP:https://twrp.me/Devices/
  • 略…………

大型企業級項目講解(五個項目):

  • ……

第四階段:

………………



 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章