首頁>Club>
5
回覆列表
  • 1 # 牆頭說安全

    逆向學習是一個動手動腦的過程、在學習的過程中要多動腦多動手靈活運用學習的知識。

    語言基礎知識

    Java語言基礎

    Android程式是用java語言開發的,所以學好Java基礎是非常必要的。

    Android基礎

    既然是安卓逆向分析,那麼一定學要學習好安卓知識。熟練使用安卓的開發語言如Java、C/C++、kotlin,dart等,同時還要掌握安卓虛擬機器原理執行機制、app打包過程、系統啟動流程、App啟動詳細過程。只有懂得正向過程,才能在逆向分析的時候進行還原分析。

    C/C++

    在很多公司不再是純粹的Java層開發,更多的會與C++結合,把一些重要的方法和行為以及一些私密性質的東西放在C++中。

    ARM組合語言

    安卓CPU主要是ARM。

    能寫簡單的指令碼和爬蟲

    安卓逆向基礎知識

    1、工具的使用如apktool,IDA,dex2jar,JEB,Androidkiller,Androguard等。

    1)、apktool主要用於逆向apk檔案。

    2)、IDA非常好用的互動式反彙編的軟體。

    3)、dex2jar用於將dex檔案轉為jar檔案。

    4)、JEB安卓動態除錯工具。

    5)、Androidkiller 強大的apk反編譯工具,支援修改檢視smail檔案及二次編譯打包。

    2、Smali組合語言學習

    smali語言是安卓虛擬機器的執行語言,apk編譯後的可執行dex檔案裡面就是smail語言。

    3、熟練使用抓包工具進行抓包如burpsuit、Fiddler和Charles。

    4、瞭解ARM,熟悉IPC原理,能夠熟練搭建IPC框架。

    5、Android 基礎演算法和安全協議--如密碼學、數字簽名、服務端與客戶端通訊協議。

    安卓逆向進階知識

    hook技術-xposed框架fridaADBI框架

    Android NDK--快速開發C、 C++的動態庫,並自動將so和應用一起打包成 APK即可透過 NDK在 Android中 使用 JNI與原生代碼(如C、C++)互動。

    JNI--是一種在Java虛擬機器控制下執行程式碼的標準機制。程式碼被編寫成彙編程式或者C/C++程式,並組裝為動態庫。也就允許了非靜態繫結用法。這提供了一個在Java平臺上呼叫C/C++的一種途徑。

    Android 加固防護--”知己知彼,百戰百勝“,只有瞭解加殼的過程及原理才能更好進行脫殼,所以要掌握市面上的app加殼技術原理如梆梆加固原理、愛加密加固原理、百度加固DD大法、阿里加固原理、360加固原理等。

    Android 脫殼技術--掌握安卓脫殼思路、勤加練習。

  • 中秋節和大豐收的關聯?
  • 蘋果釋出iphone se升級版的可能性有多大?