DDMS+AndroidStudio实现动态调试

article/2025/10/13 22:55:57
  • 所需工具
  1. AndroidStudio(用于调试smali代码)
  2. monitor.exe(DDMS工具连接手机后可查看进程端口,与AndroidStudio一起使用实现动态调试)
  3. AndroidKiller(反编译APK使用,可使用其他工具可替代)
  4. Magisk(用于修改default.prop内属性值,开启debug权限)
  5. adb(连接手机,修改default.prop内属性值,开启debug权限)
  6. smalidea-0.06(AndroidStudio插件,安装后可识别smali文件,用于动态调试)

动态调试应用场景

我不是安卓开发,这个主要用来逆向apk抓数据用的。比如X宝,x手之类的apk单纯抓包是很难解决的,所以通过动态调试的方式找请求,破加密。

具体实现流程

1.安装AndroidStudio及插件

此处省略,注意smalidea版本即可,我的Android Studio Arctic Fox,所以需要安装smalidea-0.06版本插件,低版本会报错,其他版本的Android Studio自行下载smalidea尝试即可。下面是安装后的效果。

在这里插入图片描述

2.DDMS工具monitor.exe

monitor.exe这个工具是androidSDK自带工具,按下图找到Sdk安装位置,找到这个路径,在该路径下可以看到tools文件夹,进入tools可以看到monitor.bat,双击即可打开monitor.exe。也可以进入tools\lib\monitor-x86文件下直接打开monitor.exe
在这里插入图片描述在这里插入图片描述这是打开后的monitor.exe,如果没有修改过default.prop,在左侧Devices面板上应该只能看见当前连接的手机,而看不见手机上的apk进程及端口号,所以咱们需要进行下一步操作。
![在这里插入图片描述](https://img-blog.csdnimg.cn/b6d9f81455f44f9aa2ff2ebab132cc03.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Lqs5Y2X5Zyf6IKl5ZyG,size_20,color_FFFFFF,t_70,g_se,x_16

3.在Magisk上安装模块,修改default.prop文件

在Magisk上安装下图红框内的两个插件
在这里插入图片描述
安装完成后通过adb连接手机,并通过su命令切换root用户。在root用户下运行props命令,会显示如下界面,我们先输入3选择‘Edit MagiskHide props’,之后输入1选择‘ro.debuggable’,然后根据提示‘y’即可。(图中是我已经修改后的状态,ro.debuggable默认值是0,表示不允许debug,通过上述模块我们需要将值改为1,这样就可以调试手机上的所有apk了)
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

4.反编译Apk获取smali代码

动态调试需要使用smali代码,所以我们需要先将apk进行反编译。我是使用AndroidKiller做的反编译,主要是这个比较省事,这个软件还有许多其他功能,比如在apk内插入log,重新打包等,不过我暂时没有用到,具体的使用方法百度即可。
反编译完成后AndroidKiller会在其projects文件夹内生成smali代码,具体看下图
在这里插入图片描述
Project文件夹就是全部的smali代码,我们只需将该文件夹作为一个project导入AndroidStudio即可。

5.配置AndroidStudio连接DDMS工具

首先我们先将手机连接电脑,打开DDMS后会自动识别到手机,并可查看手机上的apk进程及端口号,如图所示
在这里插入图片描述选中我们要调试的APK进程,右侧是apk占用的端口号,像图上这种,我们选择使用后面的8700即可,选中进程后上排操作按钮会点亮(想要与AndroidStudio连接必须选中进程,否则AndroidStudio内会提示连接失败)
之后我们打开AndroidStudio,并进行配置。首先导入我们反编译的smali项目,之后点击右侧红框内的‘Add Configurations’。
在这里插入图片描述在弹出框内,我们点击左上角的‘+’,选择‘Remote JVM Debug’(AndroidStudio版本不同这个名称也会有区别,但都是Remote开头)。在新弹出的面板中将端口号修改为我们要调试的apk进程端口号,并定义个名称,然后点击确定即可
在这里插入图片描述在这里插入图片描述

6.开始调试apk

到此为止我们已经完成了前期所有的准备操作,可以开始调试apk了。首先找到想要调试的方法打上断点,左上角选中咱们刚添加的玩意,然后点击debug按钮,看到如下图所示的数据信息就表示咱们已经连接成功了。
在这里插入图片描述
在这里插入图片描述连接成功后,咱们打开手机中要调试的apk,随着操作触发断点后就可在AndroidStudio中调试了,入下图所示。左侧面板显示的是跳转流程,右侧有具体的参数值。
在这里插入图片描述
到此整个调试流程结束。(备注:由于不懂smali语法所以看这些代码挺蒙圈的,现阶段我是结合jadx与动态调试一起使用,一边看java代码一边在smali搜索具体要设置断点的位置)

附录:如何判断打断点的位置

刚接触动态调试,还没了解到太好的方法。目前我用的方法是结合DDMS工具来判断断点位置。
比如,我想查看点击apk内一个搜索按钮之后程序的运行流程,那我们可以打开DDMS工具,然后点击下图红框内的按钮,这个按钮的功能是记录一段时间内的apk内部的工作流程。所以我们可以先启动这个功能,然后操作apk,比如点击一下搜索按钮,然后在点一次DDMS内的按钮进行关闭,然后工具内会自动打开一个信息面板,我们直接在面板内搜索可能触发的onclick等一些监听请求,便能快速定位要断点的位置了。
在这里插入图片描述在这里插入图片描述目前的心得就这些,如果大家有更好的调式方法希望能给我留言,感谢。


http://chatgpt.dhexx.cn/article/e8kD0Lfc.shtml

相关文章

Android studio3以后 打开DDMS报错处理方法

1.使用的是Android studio3.6的版本,打开sdk的目录 C:\Users\Admin\AppData\Local\Android\Sdk\tools双击运行monitor.bat,报错如下: 去到对应的目录下面打开对应报错的log,查看报错信息 C:\Users\Admin\AppData\Local\Android…

Android DDMS如何使用

Android DDMS如何使用? By: 海市蜃楼 | In: Android开发 11九2009 DDMS 的全称是Dalvik Debug Monitor Service,它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。 如何启动…

Android studio如何使用DDMS

Android studio如何使用DDMS 一、启动AS 1.首先查看AS 的SDK路径。 二、启动DDMS 1.进入到D:\software\SDK目录下的tools文件夹中,找到monitor.bat批量处理文件。 2.鼠标左键双击monitor.bat批量处理文件,会出现类似cmd的输入面板,然后会迅速自动关闭。再等几秒钟会出…

搭建ddms环境

搭建ddms环境 参考地址:https://blog.csdn.net/songyi160/article/details/53107245 直接打开sdk目录中 F:\Android\sdk\tools\monitor.bat 打开模拟器,启动一个app,打开monitor.bat

ddms权限解决

本期给大家带来的是解决DDMS无法查看/data目录问题。1.为什么我们要进入ddms,这里我知道的现在--files explorer,这个菜单下,是属于模拟机的根目录一类的。就是存下东西。2.但是有些模拟器会出现文件无法查看,导入,导出&#xff0…

Android Studio DDMS

DDMS(Dalvik Debug Monitor Service) 是 Android 开发环境中的Dalvik虚拟机调试监控服务。 AS 3.3 工具箱里面 DDMS,实际上3.X以后这个工具已被替代了,有Layout Inspector布局的调试,Android Profiler 测量应用性能 如…

ddms java 截图,DDMS 那些事

谈到安卓应用优化,不得不提一个工具——DDMS,DDMS的主要作用就是检测一段时间内cpu的占用率,精确到各个方法的占用时间,通过DDMS发现主线程被过分阻塞的方法,找到这些容易阻塞主线程的方法,可以通过合理的子…

DDMS工具使用

往期推荐 快速定位关键代码 Smali文件详解 Java层逆向分析-Dalvik字节码 修改资源去广告 1.DDMS工具的介绍 DDMS的全称是Dalvik Debug Monitor Service,是Android开发环境中的Dalvik虚拟机调试监控服务。 DDMS的作用是提供截屏,查看线程和堆的信息&#xff0c…

DDMS打开路径

路径:已下载到本地的Sdk目录中,sdk\sdk-tools-windows-3859397\tools\lib\monitor-x86_64/monitor.exe 打开monitor.exe,即打开ddms,连接手机设备,打开应用,即可看到对应的日志

DDMS使用

安装 Android studio 自带 设置debug 链接:https://pan.baidu.com/s/1wQbeG8K4bevOMpd6lhaw9A 提取码:x9fr 用magisk刷入 开启debug 不然不显示进程 设置 ro.debuggable1 设置 ro.secure0 https://blog.csdn.net/jinmie0193/article/details/1113558…

ddms工具使用以及案例

ddms工具使用以及案例 ddms的主要用途,就是查看app的各种输出,尤其是日志的输出和方法剖析 工具准备 环境配置连接:https://blog.csdn.net/tianyi19/article/details/115335951 用到的apk 链接:https://pan.baidu.com/s/1rAONbtafSYos-IKHddQw2w 提取码&#x…

DDMS工具的使用

1、DDMS工作原理 DDMS是IDE与测试终端的桥梁,它实时监测到测试终端的连接情况,当有新的测试终端连接后,DDMS将捕捉到终端的ID,并通过adb建立调试器,从而实现发送指令到测试终端的目的。 2、DDMS主要作用 1&#xff0…

DDMS全解

DDMS 的全称是 Dalvik Debug Monitor Service, 它为我们提供例如:为测试设备截屏、针对特定的进程查看正在运行的线程以及堆信息、Logcat、 广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。 一、如何启动 DDMS DDMS 工具存放在 SDK 的 tools 路…

Android开发调试必备 - DDMS

一、真机调试的两个必备条件 (1)手机打开开发者模式并且运行USB调试 (2)PC上装好手机对应的驱动(现在的安卓手机连接电脑一般都需要安装驱动,让电脑能够驱动安卓手机) 二、DDMS(DalvikDebugMonitorServer)四个主要窗口 Devices&#xff1a…

旧版Xcode8.3.3.xip解压时提示『归档不是来自Apple』填坑

百度结果 几乎全是: 1.保证存储空间 20G 2.去除解压验证 xattr -d com.apple.quarantine Xcode_8_beta.xip 3.双击解压 然而试了并不行,因为验证早已经关了。 最后解决是: 证书过期,把系统日期改为前几年解决问题。

apple Xcode xip安装

1.保证存储空间 20G 2.去除解压验证 xattr -d com.apple.quarantine Xcode_8_beta.xip 3.双击解压 压缩后,打本地目录,双击。开始安装。

Mac实用小技巧之解压(.xip)文件

Mac下解压(.xip)文件 在安装Xcode的时候,我从官网下载了一个Xcode的安装文件,但是这个文件是(.xip)压缩文件,我使用了很多解压软件,都没有解压成功,最后上网查看,大家推荐了一种方法 “通用”里有时没有“任…

安装Xcode的xip安装包的一些注意事项

需求场景 需要同时安装多个 Xcode 时需要安装较老版本 Xcode 时 下载地址 https://developer.apple.com/download/more/ 注意事项 1. 安全性 打来安全和隐私中的任何来源 高版本系统没有显示的情况下,可以终端输入:sudo spctl --master-disable 2. 去除解压验证…

ARM Linux 的XIP还是挺好用的

MergeFile下载(微软SkyDrive):http://cid-a0a942ebd8c6c3b5.office.live.com/self.aspx/.Documents/MergeFiles.rar 一般来说,现在的ARM Linux嵌入式系统都是将Image拷贝到SDRAM中进行运行的标准方式,尤其是像S3C6410和…

macOS Mojave 解压xip失败的问题

写这个博客主要是记录最近更新 macOS 10.14 和升级了Xcode10后要重新下载一个旧版的Xcode所踩的坑。 1、首先要打开通用的任何来源这个选项: 发现提示“xxxxxx 已损坏,打不开。” (很多破解版的软件安装不成功就是这个问题) 是因为macOS Sier…