日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

010 Android之逆向入门

發布時間:2025/3/21 Android 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 010 Android之逆向入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • Android APK文件結構
      • META-INF
      • res
      • AndroidManifest.xml
      • classes.dex
      • resources.arsc
      • lib
      • Assets
    • Android APK的入口函數
    • SDK工具
      • adb
      • monitor
    • Andriod逆向工具
      • AXMLPrinter2.jar->Manifest.xml清單文件解密工具
      • Dex文件反匯編 匯編工具
      • apk簽名工具
      • apk反編譯工具->apktool
      • Dex2jar工具(轉換文件格式)
      • jd-gui
      • AndroidKiller

Android APK文件結構

在編譯生成APK之后,會產生如上的幾個文件

META-INF

該目錄存放簽名信息,包括公司信息,文件哈希值。這就意味著如果想要破解這個APK,一旦修改之后文件哈希值也會發生改變,簽名就會無效

res

資源信息,包括圖片,xml(布局文件 字符串 風格樣式等)

AndroidManifest.xml

清單文件,包括包名,四大組件的一些聲明定義以及權限和程序的入口。這個文件不能直接看到內容,需要進行一定的解析

classes.dex

可執行文件,包含JAVA的類信息,方法信息,字段信息,虛擬機指令。dex的生成流程是從JAVA源碼->class文件->dex文件

resources.arsc

資源序號文件,包括資源里的所有ID和名稱。資源ID對應文件是R.class

lib

動態庫,擴展名是.so,包括C++代碼,有各種平臺,比如x86,arm

Assets

自定義資源,比如txt,mp4等等

Android APK的入口函數

一般是自己定義的MainActivity中的onCreate函數。還有第二種情況,

清單文件中appliction節點可以添加android:name屬性,指定繼承自appliction的類,用于初始化整個app的全局信息。繼承自appliction的類有兩個重寫函數會執行,是程序最早的執行函數

  • attachBaseContext
  • onCreate
  • 所以一個app最早的執行函數是application類中的attachBaseContext函數。一般apk加固以后,都會自定義appliction類,并重寫attachBaseContext或onCreate函數,并聲明為native類型的函數

    SDK工具

    adb

    adb的使用

    需要在SDK文件中找到adb,設置目錄到path環境變量中

    D:\Android\sdk\platform-tools

    adb命令

  • 列舉設備:adb devices

  • 將adb上傳到設備,下載到PC:adb push adb pull

  • 安裝apk:adb install apk文件名

  • 啟動apk:adb shell am start -n <包名/activity名稱>

  • shell命令:使用adb shell進入安卓命令行,可以在命令行使用linux命令

  • monitor

    這個工具主界面分為三大塊,分別是設備列表,文件列表和日志列表

    點擊加號可以新建一個日志過濾器

    可以給過濾器命名,通過日志標簽或者進程ID進行過濾等等

    Andriod逆向工具

    AXMLPrinter2.jar->Manifest.xml清單文件解密工具

    隨意打開一個apk中的清單文件,在不解密的情況下里面的內容是亂碼的。調用下面這條命令對xml進行解密

    java -jar .\AXMLPrinter2.jar .\AndroidManifest.xml

    解密完成之后,xml就是明文的了,如果不想將結果顯示到命令行,則可以輸出到文件

    java -jar .\AXMLPrinter2.jar .\AndroidManifest.xml > out.xml

    一樣可以獲取解密后的內容

    Dex文件反匯編 匯編工具

    Dex文件是Android java代碼編譯生成的二進制文件,包含了虛擬機指令。

    baksmali.jar 反匯編工具,將虛擬機指令反匯編成smali代碼

    java -jar baksmali.jar classes.dex -o <輸出目錄>

    反匯編生成的目錄中,包括所有dex文件中的類代碼,每一個類就是一個smali文件。

    Java中有三種類,外部類 內部類 匿名類。

    外部類:MainActivity.java->MainActivity.smali

    內部類:MainActivity類中的OnClickListener類–>MainActivity$MyOnClickListener.smali

    匿名內部類:MainActivity類中的OnClickListener對象–>MainActivity$1.smali

    smali.jar 匯編工具,將smali代碼匯編生成dex文件

    java -jar smali.jar out_dir(目錄) -o out.dex(文件名)

    apk簽名工具

    簽名工具,使用android系統源碼編譯時用到的一個工具

    java -jar signapk.jar testkey.x509.pem testkey.pk8 update.apk update_signed.apk

    apk反編譯工具->apktool

    這個工具將上面的命令行工具做了一個集成和優化,可以將apk中的所有文件進行解密和反匯編

    反編譯apk

    java -jar apktool.jar d hello.apk

    解密apk時,進行了下面幾步操作

  • 將清單文件以及其他xml文件進行解密
  • 將資源序號文件(resources.arsc)與資源名稱做了一個對應關系表,生成在了res/values/public.xml
  • 將dex文件反編譯成了smali代碼
  • 執行完成之后回將所有的文件都放在同目錄下,相當于是一鍵解密所有apk文件了,著實是強!

    回編譯apk目錄

    java -jar apktool.jar b hello

    生成的apk在<hello>/dist目錄中

    Dex2jar工具(轉換文件格式)

    將dex文件轉為jar文件

    d2j-dex2jar.bat classes.dex

    jd-gui

    JAVA代碼反編譯工具,可以將jar文件反編譯成JAVA代碼

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-EYH6oC2e-1623813489915)(010 Android之逆向入門.assets/1623480039139.png)]

    AndroidKiller

    第一次使用需要配置JDK路徑

    AndroidKiller中集成了好幾個工具:

    • apktool
    • dex2jar
    • adb
    • jd-gui

    總結

    以上是生活随笔為你收集整理的010 Android之逆向入门的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。