Android Apk反編譯系列教程(三)Android Studio調試smali代碼

教程導航

背景

代碼調試可以幫助咱們更加快速分析代碼,幫咱們驗證各類猜測。所以掌握smali代碼調試的技巧對於APK反編譯來講是必不可少的技能html

先決條件:目標進程可調試

將應用修改成可調試

應用可調試,須要app的manifest文件裏面打開debuggable=true。具體如何將apk變爲debuggable的,可參見Android Apk反編譯系列教程(二)APK重打包java

  • debug編譯的時候debuggable默認是打開的
  • release編譯的時候debuggable默認是關閉的
<application
    android:debuggable="true"
</application>
複製代碼

驗證修改是否成功

// 篩選出目標app進程
adb shell ps | grep 包名 
// 查看手機裏面可調試的進程,若是上面挑選出來的進程在adb jdwp出的列表裏面,那麼上述修改就是成功的
adb jdwp
複製代碼

JDWP調試原理

smali代碼調試方法

(一) 定位到須要調試的進程

經過ps挑選出須要調試的進程android

adb shell ps | grep 包名
複製代碼

二)新建本地進程與手機上遠端進程創建鏈接

db forward tcp:8700 jdwp:進程號
複製代碼

(三)Android Studio attch到本地進程對應端口上面

(1)將aptool反編譯項目導入ASgit

(2)新建遠程鏈接github

  • 端口與上述端口(8700)一致便可
  • android studio-> localhost:8700->手機對應進程

(3)定位到smail代碼所在位置打斷點shell

定位的技巧這裏不坐贅述,將在後面的系列教程裏面詳解介紹。這裏推薦一個輔助分析的工具bytecode-viewer。特色android-studio

  • 可以同時分析資源和代碼
  • 代碼支持java和smali代碼對比分析,這樣就能快速幫咱們定位到smali代碼所在位置

(4)點擊debug便可bash

相關輔助指令

(1)查看端口對應的進程markdown

lsof -i:端口
複製代碼

(2)查看手機裏面的進程 注意:經過adb shell進入手機終端後ps的進程不多,要經過下面的指令才能夠app

adb shell ps | grep 包名
複製代碼

相關連接

相關文章
相關標籤/搜索