點擊上方「鹹魚學Python」,選擇「加爲星標」html
第一時間關注Python技術乾貨!java
此篇整理了最完整的--Android逆向學習線路知識體系。但願給迷糊的入門者指出一個明確的方向。python
真心建議:先正向開發幾年再搞逆向吧……正向都不會破解的是啥?不看代碼只會脫殼?只會xposed ?遠遠不夠,hook只是很小一部分技術,xposed是hook功能衆多框架中的一個而已。相對於任何程序的開發來講,逆向知識點不多不多了,關鍵是基礎知識,基礎就是正向開發經驗。android
學習Android逆向以前,必備條件。【必備,出去面試正經公司的安全崗位都會問的基礎問題】web
-
從事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,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層簽名驗證,去除廣告和彈窗(實戰); -
推薦閱讀《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;
大型企業級項目練手(五個項目):
-
略……
Love & Share
[ 完 ]
朕已閱
本文分享自微信公衆號 - 鹹魚學Python(xianyuxuepython)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。