安卓逆向_13 --- AndroidStudio + Smalidea 动态调试 smali 代码【APK可调试】、gradle 配置
教我兄弟學(xué)Android逆向04 動(dòng)態(tài)調(diào)試smali代碼:https://www.52pojie.cn/thread-658865-1-1.html
From:Android Studio 3.6 調(diào)試 smali:https://blog.csdn.net/jha334201553/article/details/104494732
From:Smalidea+IntelliJ IDEA/Android Studio無(wú)源碼調(diào)試:https://bbs.pediy.com/thread-220743.htm
From:反編譯之利用AndroidStudio動(dòng)態(tài)調(diào)試smali源碼:https://juejin.im/post/5c14622be51d4556c90be796
From:Android Studio動(dòng)態(tài)調(diào)試smail源碼:https://blog.csdn.net/hp910315/article/details/52790740
smalidea?插件?github?地址:https://github.com/JesusFreke/smalidea
Android Studio Smali 調(diào)試:https://www.jianshu.com/p/b9312b056d15
Android調(diào)試系列—使用android studio調(diào)試smali代碼:https://www.cnblogs.com/gordon0918/p/5570811.html
Android Studio動(dòng)態(tài)調(diào)試smali:https://zhuanlan.zhihu.com/p/85469186
AndroidStudio+ideasmali動(dòng)態(tài)調(diào)試smali匯編:https://www.cnblogs.com/lanrenxinxin/p/4891424.html
Android Studio + smalidea進(jìn)行smail動(dòng)態(tài)調(diào)試:https://blog.csdn.net/u013736724/article/details/53292855
微信 APP 調(diào)試方法 AndroidStudio3.2 + smalidea + Xposed + BDOpen:http://www.bloguan.com/?id=518
前言
Android studio 配置
- Android Studio 配置(一):https://www.cnblogs.com/qianguyihao/p/4390905.html
- Android Studio 配置(二):https://www.cnblogs.com/qianguyihao/p/4392611.html
- Android Studio 配置(三):gradle項(xiàng)目構(gòu)建:https://www.cnblogs.com/xiaofengfeng/p/9133043.html
在安裝 Android Studio之前,建議先提前準(zhǔn)備好單獨(dú)的 Android SDK,這個(gè)可以在http://www.androiddevtools.cn/?網(wǎng)站下載。Android Studio 安裝完成后,第一次啟動(dòng) AS 前,為了避免重新下載新版本的SDK,需要做如下操作:AS啟動(dòng)前,打開安裝目錄,請(qǐng)先將bin目錄的idea.properties 文件中增加一行:disable.android.first.run=true 就行了,避免第一次打開AS時(shí)自動(dòng)重新下載 SDK。mac 平臺(tái)的右鍵安裝包->Show Package Contents 就找到bin目錄了。
第一次打開 Android Studio 時(shí),需要配置JDK和SDK:
上圖中,選擇“Project Structure”,彈出如下界面:(選擇JDK和Android SDK的路徑)?
在使用 Android Studio 的時(shí)候,也可以隨時(shí)修改JDK和Android SDK的路徑。選擇「File-->Other Settings-->Default Sructure」,即可進(jìn)行同樣的修改。?
AndroidStudio 安裝的時(shí)候 Gradle 的配置
將如圖路徑改成你自定義的。這時(shí)候你會(huì)發(fā)現(xiàn)以后下載的Gradle都會(huì)進(jìn)入這個(gè)文件里面。?但是當(dāng)在 Android 里面執(zhí)行 gradlew 命令的時(shí)候你會(huì)發(fā)現(xiàn),他又去下載對(duì)應(yīng)的 gradle 版本了,而且保存路徑在默認(rèn)的 c://[用戶]//.gradle 里面。這時(shí)候問(wèn)題來(lái)了,打開?gradle-wrapper.properties?文件仔細(xì)研究下文件里面寫的東西:
指定一個(gè)默認(rèn)路徑 GRADLE_USER_HOME 這個(gè)路徑就是c盤。既然發(fā)現(xiàn)問(wèn)題的根源,現(xiàn)在來(lái)修改 GRADLE_USER_HOME 的值。在系統(tǒng)環(huán)境變量里面添加 GRADLE_USER_HOME 變量,值為指定的位置,然后一定要重啟計(jì)算機(jī)。
From :[Android Studio系列(五)] Android Studio手動(dòng)配置Gradle的方法:https://blog.csdn.net/u010142437/article/details/109119501
(1) android sutdio第一次打開一個(gè)工程巨慢怎么辦??
(2) 手動(dòng)配置Gradle?Home為什么總是無(wú)效??
(3) 明明已經(jīng)下載了Gradle,配置了gradle home,為什么打開工程還是去自動(dòng)下載Gradle?
Gradle 構(gòu)建配置詳解:https://www.knowledgedict.com/tutorial/gradle-build-script-config.html
史上最全 Android build.gradle 配置詳解:https://www.jianshu.com/p/c11862136abf
在開發(fā)過(guò)程中,
- debug 版本我們可以跟蹤調(diào)試,查看 bug 等信息,
- 但是 release 版本中只能去打 log 進(jìn)行代碼進(jìn)行猜測(cè),還有就是 dump 堆棧等無(wú)法與代碼直接交互的方法。無(wú)源碼調(diào)試 指的是在沒(méi)有源代碼的情況下可以對(duì) app 進(jìn)行代碼調(diào)試,逆向 smali 代碼,然后查看其運(yùn)行邏輯。對(duì)發(fā)現(xiàn) release 版本問(wèn)題的過(guò)程中可以讓我們更塊的定位錯(cuò)誤。
工具及下載地址:
- ①、apktool.jar 用于反編譯 smali,下載地址:https://github.com/iBotPeaches/Apktool?。
? ? ? ? 可以使用 AndroidKiller,更新 AK 的 apktool,然后使用 AK 進(jìn)行反編譯。。。 - ②、Android Studio 下載地址:?https://developer.android.google.cn/studio/
- ③、smalidea-0.05.zip?(目前最新版 0.05),AS 插件,用來(lái)給 smali 下斷點(diǎn),單步調(diào)試,
? ? ? ? 下載地址:https://github.com/JesusFreke/smalidea?。解決新版 IDEA 或者 AndroidStudio 不能調(diào)試 smali 工程的問(wèn)題( 不能下斷點(diǎn) ):https://blog.csdn.net/binbin594738977/article/details/106571844/
1. AndroidStudio?安裝?smalidea 插件:
從 github 下載 smalidea.zip,然后在 Android 中依次選擇: File? ?-->? Setting? ?將會(huì)彈出設(shè)置對(duì)話框
然后在設(shè)置對(duì)話框依次選擇:? Plugins? ?-->? <設(shè)置圖標(biāo)>? --> Install Plugin from Disk...
在彈出選擇對(duì)話框中,找到下載好的 smalidea 壓縮包,選擇ok即可
點(diǎn)擊?OK ,會(huì)重新啟動(dòng)?Android?Studio ,至此,插件安裝就完成了。
2. 反編譯
目前常用的 Android 反編譯工具有:
- Baksmali:https://github.com/JesusFreke/smali
- Apktool:https://ibotpeaches.github.io/Apktool/
- dex2jar:https://sourceforge.net/projects/dex2jar/
步驟:
- 第一步:拿到想要 debug 的 apk。
- 第二步:反編譯?apk 得到 smali 代碼。可以使用 baksmali 進(jìn)行反編譯,也可以使用 apktool 進(jìn)行反編譯。這里使用 AndroidKiller ( AK 其實(shí)調(diào)用?apktool)。
使用?Baksmali?反編譯?apk?
baksmail 反編譯命令:java?-jar?baksmali-2.2.1.jar??d?myapp.apk?-o?~/projects/myapp/src
$java -jar baksmali-2.0.5.jar debug.apk -o debug/src使用 apktool 反編譯 apk?
apktool?反編譯命令:java?-jar?apktool.jar?d?myapp.apk?-o?~/projects/myapp/src
使用命令 :?java.exe -jar? apktool.jar d -f? <xxxx.apk>? -o <xxxx目錄>
也可以直接使用 ApkTool 集成環(huán)境(如果反編譯失敗可以替換其中的 apktool.jar 至最新版):
這是使用?AndroidKiller?進(jìn)行反編譯(?AK?下載地址:https://down.52pojie.cn/Tools/Android_Tools/ )
讓 apk 可調(diào)式
參考:簡(jiǎn)單實(shí)現(xiàn)Android手機(jī)“全局可調(diào)試”(ro.debuggable = 1)的方法:http://www.mamicode.com/info-detail-2915184.html
在 Android 真機(jī)上調(diào)試程序有一個(gè)前提,就是這個(gè)apk包必須有 debuggable=true 的屬性才行。而除了自己開發(fā)的apk能夠控制打包屬性之外,其他的程序發(fā)行之后顯然不會(huì)設(shè)這個(gè)值為 true 的(不然隨隨便便就能被Debug ,豈不是很沒(méi)安全感 )。為了調(diào)試這些第三方的apk,我們可以從整個(gè)手機(jī)系統(tǒng)入手 —— 因?yàn)槌嗣總€(gè)apk中的 debuggable 標(biāo)志以外,這個(gè)標(biāo)志還可以在系統(tǒng)中全局指定,換句話說(shuō),只要把系統(tǒng)里的 debuggable 值設(shè)為true,那么不管apk的這個(gè)屬性是什么值 都可以被調(diào)試了。
? ? ? Android手機(jī)系統(tǒng)的?ro.debuggable 這一配置位于 /default.prop 文件中,而 /default.prop 又來(lái)源于手機(jī)每次啟動(dòng)時(shí) boot.img 中 ramdisk 的掛載,所以想要直接通過(guò)修改 /default.prop 是不可行的,但是系統(tǒng)文件是只讀的,改了也沒(méi)用。網(wǎng)上流傳較廣的是改 boot.img ,然而錘子并沒(méi)有解鎖 bootloader ,改了的話會(huì)變磚的。好在Magisk 有一個(gè)模塊能夠助我們實(shí)現(xiàn)這個(gè)修改,且看操作(默認(rèn)手機(jī)已經(jīng) root 且安裝了 Magisk ):
這一步很關(guān)鍵,就是讓運(yùn)行在設(shè)備中的程序支持 debug。方法有幾種:
- 把設(shè)備 root 掉
- 修改測(cè)試機(jī)的 /default.prop 文件的 ro.debuggable=1,目測(cè)這一步也可能需要 root。
- 使用模擬器
- 修改 apk 的 Manifest application 屬性 android:debuggable="true",可以用 apktool 解出 Manifest 然后修改,接著重新打包回去。(?反編譯 apk,修改 AndroidManifest.xml 的 debug 屬性并在程序的入口處添加?waitForDebugger代碼進(jìn)行調(diào)試等待。 )
- 打開系統(tǒng)調(diào)試總開關(guān),使用 am 命令,以調(diào)試模式啟動(dòng)應(yīng)用。
- 終極辦法,自己編譯一個(gè) debug 版的 rom,這個(gè)稍微麻煩一點(diǎn),自己編一個(gè),想怎么玩就怎么玩。
下面只說(shuō)明兩種方法,
- 一種是?修改 "?AndroidManifest.xml "?實(shí)現(xiàn)可調(diào)試 ,
- 另一種是?打開系統(tǒng)調(diào)試總開關(guān)
修改 "?AndroidManifest.xml "?實(shí)現(xiàn)可調(diào)試
使用?AndroidKiller?進(jìn)行反編譯,然后在反編譯出的?AndroidManifest.xml?添加?debug 屬性
如果沒(méi)有這個(gè)屬性的話,需要自己添加?android:debuggable="true" 然后編譯安裝修改后的 apk 即可。。。
不添加代碼的方法:
修改?AndroidManifest.xml 之后不用在程序的啟動(dòng)界面添加代碼也行,只要以 am 命令運(yùn)行程序就行了。
以調(diào)試狀態(tài)啟動(dòng) app ,命令:adb shell am start -D -n com.wizardev.testjar/.MainActivity
轉(zhuǎn)發(fā) 8700 端口 到安卓 對(duì)應(yīng)進(jìn)程 [app_pid]。命令:adb forward tcp:8700 jdwp:446
記住這時(shí)候需要將 DDMS 關(guān)掉,不然會(huì)出現(xiàn)錯(cuò)誤
添加代碼方法:
- 找到啟動(dòng) apk 的啟動(dòng)界面,然后在啟動(dòng)界面的?onCreate?方法的第一行添加?invoke-static {}, Landroid/os/Debug;->waitForDebugger()V?這句代碼。
那么問(wèn)題來(lái)了,我們?cè)趺粗莱绦虻膯?dòng)界面呢?
其實(shí)可以通過(guò)以下幾種方式:
方法 1:
觀察 “AndroidManifest.xml” 文件中的代碼,看下圖
如果圖中 “1” 處的代碼,那么程序啟動(dòng)界面的 smail 文件就是 “2” 處的名稱。如上圖啟動(dòng)界面的 smali 文件就是“MainActivity.smali”。然后在 “MainActivity.smali” 文件中的?onCreate?方法中添加等待調(diào)試的代碼即可。用 am 命令,使目標(biāo)程序以調(diào)試模式運(yùn)行。
方法 2:
通過(guò) adb 命令來(lái)發(fā)現(xiàn) apk 的啟動(dòng)界面,命令:adb shell dumpsys activity top
運(yùn)行命令后會(huì)出現(xiàn)以下界面
圖中用紅框標(biāo)記的就是啟動(dòng)界面的 smali 文件名。注:這種方式找到的啟動(dòng)界面可能不準(zhǔn)確,因?yàn)橛械?app 會(huì)有歡迎頁(yè),因此推薦用第一種方法來(lái)找 app 的啟動(dòng)界面。
主 Activity 中加入??invoke-static {},Landroid/os/Debug;->waitForDebugger()V
回編譯 apk 并簽名安裝到手機(jī),如果啟動(dòng) app 出現(xiàn)以下界面,則說(shuō)明以啟動(dòng)模式運(yùn)行app成功。
(這步如果重新打包失敗,可以安裝原始包,把手機(jī) root 配置/default.prop 的 ro.debuggable=1 開啟全局調(diào)試。
然后用命令啟動(dòng) Activiry : adb shell am start -D -n package屬性的值/android:name屬性的值??)
打開系統(tǒng)調(diào)試總開關(guān)(?不用修改 "?AndroidManifest.xml "?)
??這種方法不用修改 “AndroidManifest.xml”,而且當(dāng)你打開這個(gè)開關(guān)后手機(jī)中的所有 App 都是可以調(diào)試的了。但是這種方法操作起來(lái)比較復(fù)雜,而且手機(jī)必須是已經(jīng) root 過(guò)的,下面會(huì)詳細(xì)描述怎么打開系統(tǒng)調(diào)試的總開關(guān)。
??這里會(huì)介紹兩種方法,第一種方法是大家普遍采用的,但是我使用采用第一種方法沒(méi)有成功,于是查找資料找到了第二種方法,如果你使用第一種方法不成功,那么可以試下第二種方法。
第一種方法
-
1.?點(diǎn)擊這里下載“mprop”文件。
-
2. 依次運(yùn)行一下命令設(shè)置 “ro.debuggable”
-
3. 運(yùn)行?getprop ro.debuggable?命令可以查看 debuggable 的狀態(tài),顯示為 1,表示更改成功。
注:這種方法在開機(jī)后設(shè)置的“debuggable”將會(huì)失效,需要重新設(shè)置
第二種方法
這種方法其實(shí)說(shuō)復(fù)雜也不復(fù)雜,說(shuō)不復(fù)雜呢!還是有一點(diǎn)復(fù)雜的。具體操作方法如下:
- 需要手機(jī)刷入“Magisk”,刷入方法就想卡刷手機(jī)系統(tǒng)一樣,可以到https://github.com/topjohnwu/Magisk/releases。
- 通過(guò)Magisk安裝“MagiskHide Props Config”模塊,安裝的方法可以看下面的動(dòng)圖。
安裝完成之后需要重啟,才能生效。
打開終端,輸入以下命令
adb shell props會(huì)出現(xiàn)這個(gè)界面
然后,輸入3,回車,會(huì)出現(xiàn)這個(gè)界面
然后,輸入1,回車,出現(xiàn)這個(gè)界面
可以看到圖中顯示當(dāng)前的 “ro.debuggable” 的值為0,如果要修改為1的話輸入“y”,回車即可修改完成。
接著終端會(huì)彈出是否重啟,這時(shí)繼續(xù)輸入“y”重啟,重啟后修改的“ro.debuggable”才會(huì)生效。
經(jīng)過(guò)以上5步,就可以打開系統(tǒng)調(diào)試的總開關(guān),這時(shí)我們打開“Monitor”工具就可以看見當(dāng)前運(yùn)行的所有的所有進(jìn)程了。
注:通過(guò)這種方式修改的 “ro.debuggable” 值,重啟手機(jī)后不會(huì)還原,就是設(shè)置過(guò)后,手機(jī)重啟后不需要再次設(shè)置。
打開系統(tǒng)調(diào)試的總開關(guān)后,這時(shí)通過(guò) am 命令以調(diào)試模式啟動(dòng)應(yīng)用,即可讓目標(biāo)應(yīng)用處于可調(diào)式狀態(tài)。
adb shell am start -D -n xxx這里的 “xxx” 為我們要調(diào)試應(yīng)用的啟動(dòng)界面,如我們要調(diào)試應(yīng)用的啟動(dòng)界面為?com.wizardev.testjar/.MainActivity?則輸入以下命令
adb shell am start -D -n com.wizardev.testjar/.MainActivity這是目標(biāo)應(yīng)用就會(huì)以調(diào)試模式運(yùn)行,處于等待調(diào)試的狀態(tài)。
3. 將?反編譯后的smali??導(dǎo)入到 Android Studio?
將目標(biāo)應(yīng)用的 smali 源碼導(dǎo)入 AndroidStudio。將 smali 源碼導(dǎo)入AndroidStudio 挺簡(jiǎn)單的,只需要將反編譯出來(lái)的 smali 文件夾放在工程項(xiàng)目中的模塊的 src 目錄下即可。
3.1?導(dǎo)入?smali?代碼
簡(jiǎn)單的說(shuō)一下操作方法吧。有兩種方法導(dǎo)入:?
方法 1:新建工程導(dǎo)入?smali?代碼
這樣,就將反編譯的 smali 文件導(dǎo)入到 AndroidStudio 目中了。操作后的目錄界面大致如下。
方法 2:不新建工程導(dǎo)入?smali?代碼
步驟總覽:
- Import Project... -> Create project from existing sources
- 將 Project(ALT+1)里面默認(rèn)的 Android 視圖切換為 Project 視圖,將 src 設(shè)置為?Sources Root.
- Project Structure(Ctrl+Shift+ALT+S),Project SDK設(shè)置為?Android API 10 Platform
- 遠(yuǎn)程調(diào)試配置,Run -> Edit Configuration進(jìn)入Run/Dubug Configurations;Add New Configuration(+符號(hào)) -> Remote,將 5005 端口,修改為 8700 端口。
圖示說(shuō)明:
默認(rèn)選擇 Create project from existing sources ,一路 next ,最后點(diǎn)擊 Finish 即可
3.2 導(dǎo)入工程后設(shè)置?Sources root
用 Project 視圖,在項(xiàng)目目錄右鍵? --> Mark Directory as ... --> Sources root
3.3 設(shè)置 Project 的 sdk:
如果是通過(guò) "新建項(xiàng)目" 導(dǎo)入的?smali ,則不需要設(shè)置?sdk,因?yàn)?新建工程 時(shí)已經(jīng)有默認(rèn)的?sdk
如果是通過(guò) "?導(dǎo)入已經(jīng)存在的 "?方式導(dǎo)入?smali ,則需要設(shè)置?sdk :
選擇?sdk ,這里選擇?sdk? 1.8
3.4 配置?遠(yuǎn)程調(diào)試?(?遠(yuǎn)程 debug 配置 )
添加一個(gè) remote 調(diào)試,
或者:
修改調(diào)試的端口:8701?( 未占用端口均可 )
安裝設(shè)置 debug=true 的 APK,在需要的地方打好斷點(diǎn),通過(guò)以下命令行啟動(dòng)進(jìn)程調(diào)試等待模式:
啟動(dòng)第一個(gè) Activity 然后等待 debug,命令:adb shell am start -D -S -W 包名/MainActivity(帶路徑)
命令行啟動(dòng)調(diào)試模式,adb shell am start -D -n packagename/ MainActivity
packagename 為進(jìn)程名,MainActivity 為首頁(yè) Activity
啟動(dòng)調(diào)試 app,通過(guò)?adb shell dumpsys activity top | grep --color=always ACTIVITY?在終端獲取包名和頁(yè)面信息。
進(jìn)入等待調(diào)試
獲取運(yùn)行 apk 的進(jìn)程(pid):adb shell ps | grep 包名 。
- 示例:adb shell ps | findstr "zhuceji" ,如下圖所示,可以看到?pid?是 3170
端口映射: adb forward tcp:8701 jdwp:<pid>
-
執(zhí)行:adb forward tcp:8701 jdwp:3170? ? 建立端口轉(zhuǎn)發(fā),即把端口 8701?上面的信息通過(guò)?jdwp 轉(zhuǎn)發(fā)到?pid?是 3170?上面
進(jìn)入等待調(diào)試后,在 Android studio 中執(zhí)行?Run?->?Debug?啟動(dòng)剛才創(chuàng)建的遠(yuǎn)程調(diào)試器,進(jìn)入動(dòng)態(tài)調(diào)試了。
在 Android Studio 選擇附加
圖二
此時(shí),已經(jīng) Attach 到進(jìn)程中,可以快樂(lè)的調(diào)試了。通過(guò)斷點(diǎn)可以查看內(nèi)存的信息。
設(shè)置 AndroidStudio 為遠(yuǎn)程調(diào)試模式
??按下面的步驟操作,將AndroidStudio運(yùn)行模式設(shè)置為遠(yuǎn)程調(diào)試模式。
工程配好了,配置 debug 的端口:即 遠(yuǎn)程調(diào)試配置,Run -> Edit Configuration?進(jìn)入?Run/Dubug Configurations;Add New Configuration(+符號(hào)) -> Remote,將 5005 端口,修改為 8700 端口。
在出現(xiàn)的界面,點(diǎn)擊左上角的“+”,在出現(xiàn)的下拉列表中再點(diǎn)擊“Remote”,添加一個(gè) remote 調(diào)試
設(shè)置遠(yuǎn)程調(diào)試的名稱和監(jiān)聽遠(yuǎn)程的端口
在圖中1處修改遠(yuǎn)程調(diào)試的名稱,不修改直接用默認(rèn)的也行。在2處修改遠(yuǎn)程調(diào)試服務(wù)端監(jiān)聽的端口,一般設(shè)置為“8700”,當(dāng)然也可以設(shè)置成當(dāng)前調(diào)試項(xiàng)目所在的端口,可以在 “Monitor”工具中查看項(xiàng)目所在的端口。
(?也可以用 8700 端口,然后啟動(dòng) ddms 去設(shè)置端口號(hào)映射,然后 apply -> ok。設(shè)置端口號(hào)映射后?ddms?監(jiān)聽的 8700?端口和轉(zhuǎn)發(fā)的端口都可以接收到數(shù)據(jù)。?好了,project 方面就準(zhǔn)備好了! )
可以看到當(dāng)前調(diào)試的項(xiàng)目有兩個(gè)遠(yuǎn)程服務(wù)端端口,“8700”端口是每個(gè)調(diào)試程序默認(rèn)的遠(yuǎn)程端口,如果不想每次運(yùn)行程序都重新設(shè)置一下端口,2處設(shè)置成“8700”就行了,然后點(diǎn)擊OK完成修改。這時(shí)你會(huì)發(fā)現(xiàn)可運(yùn)行的程序中多出了一個(gè)你剛才設(shè)置的調(diào)試項(xiàng)目名稱。
如上圖,這里我直接使用默認(rèn)的調(diào)試名稱,則可運(yùn)行的項(xiàng)目中多出了一個(gè)“Unnamed”選項(xiàng),我們選中這個(gè)就行了,這時(shí)Android Studio就在“8700”端口監(jiān)聽項(xiàng)目的運(yùn)行了。
以調(diào)試模式運(yùn)行并將進(jìn)程映射到8700端口
進(jìn)程 id 可以在 “Monitor” 工具中查看,如下圖
也可以運(yùn)行 adb 命令查看,用 adb 命令查看進(jìn)程 id 的命令如下:adb shell ps | grep 包名
完成了以上兩步,接著在AndroidStudio點(diǎn)擊Debug選項(xiàng),如下圖
然后就可以打斷點(diǎn)調(diào)試項(xiàng)目了。
注:在點(diǎn)擊Debug選項(xiàng)運(yùn)行項(xiàng)目之前,需要先將“Monitor”工具關(guān)掉,否則會(huì)提示8700端口被占用,無(wú)法進(jìn)行動(dòng)態(tài)調(diào)試項(xiàng)目。
接下來(lái)需要準(zhǔn)備的就是如何連上設(shè)備debug了!過(guò)程也很簡(jiǎn)單,啟動(dòng)DDMS
Tools -> Android -> Android Device Monitor 選擇你要調(diào)試的 apk 的包名
最后,開始 debug。Run->Debug Smali
針對(duì) DDMS 端口轉(zhuǎn)發(fā),也可以手動(dòng)的制定端口信息,操作如下(smalidea的作者推薦的是ddms的方式):
cmd?執(zhí)行命令:adb shell am start -D -S -W packageName?
( packageName 的獲取可以反編譯 AndroidManifest.xml 里面有包含 )
正常的話,你會(huì)看到設(shè)備里的應(yīng)用已經(jīng)跑起來(lái)了,并且有個(gè) Waiting For Debugger 的提示,別關(guān)掉它。
- 1. 拿到程序運(yùn)行的pid: adb shell ps | grep packageName
- 2. 端口映射: adb forward tcp:8800 jdwp:5413? ?這里的 8800 是上一步在配置工程中自定義的端口。
官方步驟如圖所示:
以上就是基于smalidea無(wú)源碼調(diào)試的整個(gè)過(guò)程,有問(wèn)題的可留言,我們一起交流學(xué)習(xí)。
結(jié)束語(yǔ)
??動(dòng)態(tài)調(diào)試步驟是有點(diǎn)復(fù)雜,其實(shí)熟悉之后就沒(méi)多大感覺(jué)了,簡(jiǎn)單設(shè)置幾下就行了。可能有的手機(jī)不能root,這時(shí)就只能修改“AndroidManifest.xml”文件了,修改之后不用在程序的啟動(dòng)界面添加代碼也行,只要以 am 命令運(yùn)行程序就行了。
總結(jié)
以上是生活随笔為你收集整理的安卓逆向_13 --- AndroidStudio + Smalidea 动态调试 smali 代码【APK可调试】、gradle 配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 从输入URL到页面显示的过程
- 下一篇: Android 逆向分析大全