前言
本文是对52pojie《教我兄弟学Android逆向系列课程》按照自己思路的实践,不完全按照原文思路。
原文思路笔者认为走了弯路,且使用了较多工具。
此文使用到的工具仅为:adb、apktool、idea
原文链接:教我兄弟学Android逆向04 动态调试smali代码
下载并使用adb安装
apk链接:https://pan.baidu.com/s/1smNIrST 密码:uzsa
下载完成后,使用adb进行安装
adb install jwx02.apk
安装完成后,在所有应用中可以找到:
应用界面:
使用apktool反编译apk
apktool d jwx02.apk
反编译完成后,在apk文件夹下会生成一个和apk同名的文件夹,内容如下:
其中的smali文件夹就是反编译后的smali文件。
由于smalidea插件不支持android studio 4.1版本,因此这里使用idea进行调试。
smalidea插件下载地址:download page
在idea中安装:
file->setting->plugins->install plugin from disk
安装完成后,需要重启idea并完成如下修改:
file->setting->editor->filetype
点击加号并填入*.smali, 然后点击确定。
将使用apktool反编译生成的smali文件夹拖入idea中,不出意外的话,这里已经可以对文件下断点了。
设置动态调试环境
寻找要调试apk的包名和入口activity,可以在apktool反编译的文件夹下的AndroidManifest.xml文件中找到:
输入命令开启调试:
adb shell am start -D -n hfdcxy.com.myapplication/hfdcxy.com.myapplication.MainActivity
找到对应包名的pid
adb shell ps
这里是14288
然后使用adb转发本地端口:
adb forward tcp:8800 jdwp:14288
紧接在idea中配置远程调试:
选择remote jvm debug
端口填为刚刚写的转发的端口:8800
点击OK就设置完成了。
开始调试
打开main activity, 找到check函数,并设置断点:
点击右上角的debug
在程序中输入用户名和密码,并点击登录,可以成功断在断点位置:
调试信息如下图所示