【轉】android安全與逆向進階路線

【轉自論壇熱帖】此篇整理了最完整的--Android逆向學習線路知識體系。希望給迷糊的入門者指出一個明確的方向。

真心建議:先正向開發幾年再搞逆向吧……正向都不會破解的是啥?不看代碼只會脫殼?只會xposed ?遠遠不夠,hook只是很小一部分技術,xposed是hook功能衆多框架中的一個而已。相對於任何程序的開發來說,逆向知識點很少很少了,關鍵是基礎知識,基礎就是正向開發經驗。

學習Android逆向之前,必備條件。【必備,出去面試正經公司的安全崗位都會問的基礎問題】

  • 從事3-5年真實的Android開發工作,熟練使用C/C++,Java,kotlin,dart等Android開發常用語言;
  • 熟悉Android NDK開發和JNI技術,熟悉Log原理。最好有幾年FrameWork開發經驗;
  • 熟悉Android虛擬機機制,打包原理,系統啓動流程,App啓動流程;
  • 瞭解ARM、Smali彙編語言,熟悉IPC原理,能夠熟練搭建IPC框架;
  • 熟練使用Fiddler和Charles抓包工具進行抓包;
  • 最好熟悉Python基礎語法,並能寫簡單的腳本和爬蟲。


第一階段:
Android 基礎知識回顧:

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


Android 逆向基礎知識:

  • 熟悉Android逆向工具的使用,如apktool,IDA,dex2jar,JEBAndroidkiller,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層簽名驗證,去除廣告和彈窗(實戰);
  • 推薦閱讀《AndroidXXXXXX……》隨便找本系統源碼講解的書看看吧;


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類和木馬類進行學習;
  • 手動脫殼《王者X耀》練習;
  • 從0開始打造自己的破解代碼庫;


第三階段:
Android 漏洞分析和挖掘:

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


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

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


大型企業級項目練手(五個項目):

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