【安卓逆向】动态调试smali代码

文章目录

      • 前言
      • 下载并使用adb安装
      • 使用apktool反编译apk
      • 设置动态调试环境
      • 开始调试


前言

本文是对52pojie《教我兄弟学Android逆向系列课程》按照自己思路的实践,不完全按照原文思路。
原文思路笔者认为走了弯路,且使用了较多工具。
此文使用到的工具仅为:adb、apktool、idea
原文链接:教我兄弟学Android逆向04 动态调试smali代码

下载并使用adb安装

apk链接:https://pan.baidu.com/s/1smNIrST 密码:uzsa
下载完成后,使用adb进行安装

adb install jwx02.apk

安装完成后,在所有应用中可以找到:
【安卓逆向】动态调试smali代码_第1张图片
应用界面:

使用apktool反编译apk

apktool d jwx02.apk

反编译完成后,在apk文件夹下会生成一个和apk同名的文件夹,内容如下:
【安卓逆向】动态调试smali代码_第2张图片
其中的smali文件夹就是反编译后的smali文件。
由于smalidea插件不支持android studio 4.1版本,因此这里使用idea进行调试。
smalidea插件下载地址:download page
在idea中安装:
file->setting->plugins->install plugin from disk
【安卓逆向】动态调试smali代码_第3张图片
安装完成后,需要重启idea并完成如下修改:
file->setting->editor->filetype
【安卓逆向】动态调试smali代码_第4张图片
点击加号并填入*.smali, 然后点击确定。
将使用apktool反编译生成的smali文件夹拖入idea中,不出意外的话,这里已经可以对文件下断点了。
【安卓逆向】动态调试smali代码_第5张图片

设置动态调试环境

寻找要调试apk的包名和入口activity,可以在apktool反编译的文件夹下的AndroidManifest.xml文件中找到:
【安卓逆向】动态调试smali代码_第6张图片
输入命令开启调试:

adb shell am start -D -n hfdcxy.com.myapplication/hfdcxy.com.myapplication.MainActivity

找到对应包名的pid

adb shell ps

【安卓逆向】动态调试smali代码_第7张图片
这里是14288
然后使用adb转发本地端口:

adb forward tcp:8800 jdwp:14288

在这里插入图片描述
紧接在idea中配置远程调试:
【安卓逆向】动态调试smali代码_第8张图片
选择remote jvm debug
【安卓逆向】动态调试smali代码_第9张图片
端口填为刚刚写的转发的端口:8800
【安卓逆向】动态调试smali代码_第10张图片
点击OK就设置完成了。

开始调试

打开main activity, 找到check函数,并设置断点:
【安卓逆向】动态调试smali代码_第11张图片
点击右上角的debug
在这里插入图片描述
在程序中输入用户名和密码,并点击登录,可以成功断在断点位置:

调试信息如下图所示
【安卓逆向】动态调试smali代码_第12张图片

你可能感兴趣的:(安卓安全,安卓,反编译,android,debug)