安卓逆向_8 --- Android 调试工具 DDMS 和 Monitor ( 去掉 车来了 app 的广告 )

 

From:https://www.e-learn.cn/topic/3527658

Android SDK 中的 ddms 使用详解:https://blog.csdn.net/x83853684/article/details/80643131

ADB、Android Monitor、DDMS、HierarchyViewer、MAT、SysTrace、TraceView 性能分析工具使用大全:
https://www.jianshu.com/p/c83f3669e529

 

哔哩哔哩( 去掉 "车来了" app 的广告 )https://www.bilibili.com/video/BV1UE411A7rW?p=35

 

 

DDMS

 

1. DDMS 简介

 

DDMS 的全称是 Dalvik Debug Monitor Service。可以实现 IDE 与连接终端设备(包含 仿真器 真机 )的调试,DDMS 可以实现查询终端设备运行状态,终端设备进程状态,线程状态,文件系统,日志信息(logcat)等。以及控制终端设备完成一些操作。还可以向目标机发送短信、打电话,发送地理位置信息等。可以像 gdb 一样 attach 某一个进程调试。 SDK tools 目录下提供了 ddms 的完整版,直接运行即可。总的来说它是一款性能分析工具,可以帮助开发者快速了APP的运行情况。具体可见 https://developer.android.com/studio/profile/monitor 。

 

DDMS 怎样与调试器交互?

1,每一个 Android 应用都运行在一个 Dalvik 虚拟机实例里,而每一个虚拟机实例都是一个独立的进程空间。虚拟机的 线程机制,内存分配和管理,Mutex等等都是依赖底层操作系统而实现的。所有Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的 依赖操作系统的线程调度和管理机制。 
2,DDMS 在 IDE与设备或模拟器之间的起着中间人的角色。 
3,DDMS 启动时会与 adb 之间建立一个 device monitoring service 用于监控设备。当设备断开或链接时,这个 service 就会通知DDMS。 
4,当一个设备链接上时,DDSM 和 ADB 之间又会建立 VM monitoring service 用于监控设备上的虚拟机。 
5,通过 ADB Deamon 与设备上的虚拟机的 debugger 建立链接,这样 DDMS 就开始与虚拟机对话了。 

 

在安卓平台上,每个应用都运行在自己的进程上,同时每个应用也都运行在自己的虚拟机(VM)上。每个VM公布了唯一的端口号以供调试器连接。

当DDMS启动后,会连接到adb。当有设备连接上,VM监测服务就在adb和DDMS之间创建,它会通知DDMS 设备上的VM是启动了还是终止了。一旦VM是运行的,DDMS就获取VM的进程ID(pid),通过adb和设备上的adb守护进程(adbd)建立到 VM调试器的连接。到此,DDMS就可以使用约定的线协议与VM通信。

DDMS给设备上的每个VM分配一个调试端口。通常,DDMS分配的第一个可调试端口号是8600,下一个是8601,依次往下类推。当调试器连接 到已分配的一个端口时,VM上的所有通信都会被关联到调试器。一个调试器只能连接一个单独的端口,但是DDMS同时可以处理多个连接的调试器。

默认的,DDMS也会监听DDMS的“基本端口”(默认为8700)。基本端口是一个端口转发端口,可以通过8700端口接受来自VM所有调试端口的通信并可以发送信息到调试器。这就允许你将调试器连接到8700端口,然后可以调试所有设备上的虚拟机。在DDMS设备视图下,转发的通信可以被当前所 选进程终止。

接下来的屏幕截图会在Eclipse中显示标准的DDMS屏幕视图。如果你是从命令行启动的DDMS,截图会略有不同,但绝大部分功能是相同的。注意这个特殊进程,com.android.email 它在模拟器上运行时的调试端口是8700,而分配给它的端口是8606。这就表明 DDMS 当前将 8606 端口转发到静态调试端口 8700。
 

 

DDMS 启动 方法

DDMS 在 SDK 里面的 tools 文件夹里,下载 SDK 后可以直接进入 tools 文件夹,双击 ddms.bat 启动,如下图:

主界面(手机root后才会显示所安装应用):

Android Device Monitor :DDMS、HierarchyViewer。

Monitor 可以看做 DDMS 和 HierarchyViewer(层次结构)的组合。

Android Device Monitor 已在 Android Studio 3.1 中弃用,并已从 Android Studio 3.2 中移除

 

 

2.DDMS( Monitor ) 功能详解

 

首先 DDMS 被分为三个部分。左上角为 Device 面板,详细罗列了与电脑相连的终端设备的信息。右上角为详细的功能选项卡,下方为日志信息以及终端信息.

 

2.1 Devices 面板

 

1,左边显示了所有当前能找到的所有模拟器或设备列表和每个设备当前正在运行的虚拟机列表。虚拟机是按程序的包命来显示的。 
2,通过这些列表可以找到运行着想调试的activity的虚拟机。每个虚拟机旁边的是“debugger pass-through”端口,链接到其中一个端口就会链接到设备上对应的虚拟机。不管如何,在用DDMS时,只需要链接到8700端口,因为DDSM 转发所有的通信到当前选择的虚拟机。这样,就不用在每次切换虚拟机是重新配置debugger端口。 
3,当一个正在运行的程序调用waitForDebugger()函数时,客户端名字旁边会显示一个红色的icon,知道debugger连上对 应的虚拟机,这是debugger会变成绿色。 
4,如果看到叉icon,着意味着DDMS用于不能打开虚拟机的端口而不能建立debugger与虚拟机建立连接。如果看到所有的虚拟机是这样, 很可能是有另外一个DDSM实例在运行。 

 

这个面板包含了所有的与IDE相连的设备列表以及每个设备上运行的进程的列表,如下图所示:

device 窗口列出了 模拟器(或 真机)中所有的进程,显示进程时会显示进程ID (上图中online那一列显示的即是终端上运行的进程的ID) 以及与进程相关联的端口号,连接端口号从 8600 端口依次往下增加,8700 是 DDMS 接收所有连接终端返回信息的端口,即是 base 端口。Devices 面板顶端从左往右有多个按钮,

上面一排的按钮功能,可以把鼠标放上面会自动显示按钮说明。如果你没有运行或调试程序的话,这些图标是不可用的!

当你选中某个进程,并按下调试进程按钮时,如果 eclipse 中有这个进程的代码,那就可以进行源代码级别的调试。有点像gdb attach。图片抓取按钮可以把当前android的显示桌面抓到你的机器上,也是非常有用。

 

开始方法分析:

  • 1.在设备选项,选择要进行方法分析的进程
  • 2.点击 Start Method Profiling按钮。
  • 3.与应用进行交互,开始要分析的方法
  • 4.点击 Stop Method Profiling按钮。DDMS停止分析应用并打开Traceview,它包含了在点击Start Method Profiling和Stop Method Profiling之间方法分析收集到的信息.

 

下面一一分析这些按钮的功能

1. Debug: 实现使用DDMS对代码进行调试,使用该功能的前提是 IDE中具有该运行进程的源代码,否则该按钮为灰色,功能无法使用.

2. Update heap: 实现对进程中的堆进行更新的操作。只有当选择这个按钮后,在右侧的功能面板中的heap选项卡中就能够看见当前进程的堆使用情况:

点击 Cause GC 可以触发虚拟机的垃圾回收机制。

3. Dump HPROF file: 将当前进程堆使用情况生成文档,使用这个功能可以更加详细的分析当前堆的情况,有利于查找内存泄等问题。

4. Cause GC: 触发垃圾回收机制,可以点击后查看当前进程的堆使用情况

5. Update thread: 这个功能与update heap一样,当点击了这个按钮才能在右侧面板的thread选项卡中查看当前进程的所用的线程运行状态

6. Start Method Profiling: 开始进行方法分析。这个功能比较重要,后面单独写文章分析

7. Stop: 终止当前选中的进程。

8. Screen Capture: 截屏按钮,捕获当前设备的屏幕状态,该功能具有一定的延时

 

2.2 功能面板

功能面板从左到右有多个选项卡分别是:

1. Threads: 这个不必多说,表示当前进程中的所有线程状态。线程视图列出了此进程的所有线程。 

ID:       虚拟机分配的唯一的线程ID,在Dalvik里,它们是从3开始的奇数。 
Tid:     linux的线程ID,For the main thread in a process, this will match the process ID. 
Stauts:  线程状态, 
running:  正在执行程序代码 
sleeping:执行了Thread.sleep() 
monitor: 等待接受一个监听锁。 
wait:     Object.wait() 
native:  正在执行native代码 
vmwait:  等待虚拟机 
zombie:  线程在垂死的进程 
init:    线程在初始化(我们不可能看到) 
starting:线程正在启动(我们不可能看到) 
utime:   执行用户代码的累计时间 
stime:   执行系统代码的累计时间 
name:    线程的名字 

2. Heap: 表示当前进程堆使用情况。展示一些堆的状态,在垃圾回收其间更新。当选定一个虚拟机时, VM Heap视图不能显示数据,可以点击右边面包上的带有绿色的”Show heap updates”按钮,然后在点击”Cause GC “实施垃圾回收更新堆的状态。 

3. Allocation Tracker: 分配跟踪器,后面单独写文章分析。在这个视图里,我们可以跟踪每个选中的虚拟机的内存分配情况。点击”Start Tracking”后点击”Get Allocations “就可以看到。 

4. NetWork Statistics: 网络分析功能。

5. File Explorer: 浏览终端的文件系统,进行文件相关操作。通过 Device > File Explorer 就可以打开 File Explorer。这里可以浏览文件,上传上载删除文件,当然这是有相应权限限制的( 只有 root 权限才能查看 )。 在这里面可以进行将外部文件导入到终端中,或者将终端文件导出,或者删除终端文件,具体操作是右上角三个按钮:

文件操作还是比较重要的,比如一个应用涉及到了SQLite数据库使用,此时可以使用这个功能,导出数据库文件单独分析

6. Emulator Control: 可以实现往模拟器中打电话,发送短信,发送地理位置坐标等功能。

在这里,可以模拟一些设备状态和行为。 
Telephony Status:改变电话语音和数据方案的状态,模拟不同的网络速度。 
TelePhony Actions:发送模拟的电话呼叫和短信到模拟器。 
Location Controls:发送虚拟的定位数据到模拟器里,我们就可以执行定位之类的操作。可以收工的在Manual里输入经度纬度发送到模拟器,也可以通过 GPX和KML文件。 

有了AndroidStudio 如果启动了模拟器,可以直接在模拟器上实现相关信息的发送而不需要借助于DDMS

 

7. System Information: 这个选项卡里面可以查看终端的CPU负载以及内存使用情况。具体的试过就知道了。

 

2.3 LogCat and Console

这一部分就是系统运行产生的日志信息以及终端打印的信息。比较关心的还是LogCat。

这里的 LogCat 与 AndroidStudio 中的 LogCat 是一样的。使用 LogCat 可以根据程序中的运行日志判断当前程序运行的状态。终端设备一般运行较多的进程,每个进程运行都有大量的日志产生。因此一般需要使用 过滤器过滤其他进程信息。过滤器在 Saved Filter 中的以添加过滤器:

如果指定要观察某一个进程的日志信息,那过滤器就使用PID(进程ID)进行过滤即可,进程ID可以在Devices面板中得到,过滤的等级根据自己代码中写的等级酌情考虑,这样就能够实现只是观察一个进程的日志信息。

 

 

 

去掉 "车来了" app 的广告

 

首先使用 AndroidKiller 反编译 "车来了" app ,找到 包名

然后 打开 monitor 过滤 com.ygkj.chelaile.standard 的 log,通过观察 log 可以发现,log 中出现了 " 成功发送简单上报广告时间埋点 " 之类的信息,右键 -》 Fiter similar messages...  即可看到详细信息,

复制 广告的网址,然后在 AndroidKiller 中 全文件查找,并替换为空,导致 拼接 的 URL 无法访问,从而达到去掉广告的效果:

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

杂谈 | 微软复兴,它与苹果竟有这么多相似之处!

来源:网易智能摘要:且不要谈CEO们是否会让他们公司的“重生”,仅仅是成为一个成功帝国的好管家就已经是一项了不起的成就了。上周,微软市值超过了谷歌母公司Alphabet,成为继苹果(Apple)和亚马逊…

全能终端神器 --- MobaXterm 、开启 linux 远程桌面

From:https://cloud.tencent.com/developer/news/244102 官网地址:https://mobaxterm.mobatek.net MobaXterm 20.2_Professional.7z 下载地址:https://download.csdn.net/download/freeking101/12363312 MobaXterm 又名 MobaXVT&#xff0c…

教机器遗忘或许比学习更重要:让AI健忘的三种方式

大数据文摘出品编译:臻臻、Shan LIU、龙牧雪大部分人不会喜欢遗忘的感觉。回到家顺手把钥匙丢在一个角落就再也想不起来放在哪儿了,街角偶遇一个同事却怎么拍脑袋也叫不出他的名字……我们害怕遗忘,讨厌遗忘。然而,生而为人&#…

一套价值十万的微信公众号采集解决方案

From:http://www.blog2019.net/post/138 原文地址 相关阅读: 一套价值十万的微信公众号采集解决方案(免费送) 数据采集采集架构中各模块详细分析 基于大数据平台的互联网数据采集平台基本架构 教你一种1分钟下载1万个网页的方法,你学吗&a…

2018 年全球人工智能与机器人峰会将在深圳举办

来源:雷锋网摘要:第三届 CCF-GAIR —— 2018 年全球人工智能与机器人峰会,深圳,2018 年 6 月 29 日至 7 月 1 日。2018 年,AI 学术界与工业界的核心议题已演变为“基础理论技术创新”和“行业解决方案落地”&#xff0…

Grafana 使用教程 --- 开源的度量分析与可视化套件

原文链接:https://blog.csdn.net/bbwangj/article/details/81109615 Linux下使用GrafanaInfluxDBMongoDB实现爬虫可视化动态监控【附代码及详细教程】 https://www.jianshu.com/p/9de223e05a5e Grafana是一个开源的度量分析与可视化套件。经常被用作基础设施的时间…

美国重夺超算“头把交椅”,专家建议中国加快E级超算研制

“顶点”超算 橡树岭国家实验室网站图来源:科技日报摘要:美国能源部下属橡树岭国家实验室6月8日正式宣布,已研发出被命名为“顶点”的超级计算机。美国能源部下属橡树岭国家实验室6月8日正式宣布,已研发出被命名为“顶点”的超级计…

安卓逆向_9 --- log 插桩、Toast 弹窗、smali代码编写和植入 ( 好搜小说 )

From:https://www.bilibili.com/video/BV1UE411A7rW?p36 如果仅仅用 Smali 来分析代码,效果其实不如用 dex2jar 和 jd-gui 更直观,毕竟看反编译的 java 代码要更容易一些。 但 Smali 强大之处就是可以随心所欲的进行插桩操作。何为插桩&…

智能哲学:“学习机器”与“机器学习” ——解读图灵思想中的人工智能

周剑铭,自由学者。研究方向为中西文化比较研究,智能哲学,算法、不确定性和不确定性问题(NP)理论。柳渝,法国儒勒凡尔纳公立综合大学计算机(Dpartement Informatique, UFR des Sciences, Universit de Picardie Jules V…

安卓逆向_10 --- Log 日志的插入和分析、toast方法、栈跟踪

From:https://blog.csdn.net/weixin_42680210/article/details/90384358 在安卓逆向中,常常用到 栈跟踪、toast方法、Log日志的插入 等,以便于我们更好的分析代码,下面就演示下这三个方法的使用及简单的分析。。。 1. 插入 Log 信…

事实--思维导图笔记

事实--思维导图笔记 https://www.processon.com/view/5d330846e4b058ef96ae5529?fromnew1#map 完整版

未来20年内,无人驾驶将颠覆这33大行业

来源:智车科技在未来的20年里,无人驾驶汽车将在美国广泛使用,这几乎是必然的。包括谷歌、苹果和梅赛德斯-奔驰在内的二十多家大型企业都在努力打造自己的无人驾驶汽车品牌。特斯拉的Model S已经推出了一种可以在高速公路上形式的无人驾驶车型…

安卓逆向_11 --- methodprofiling(方法分析)【在 smali 代码中打印信息 --- 协议分析常用】

From【修改 smali 代码打印信息】:https://www.bilibili.com/video/BV1UE411A7rW?p38 【Android】开发优化之 --- 调优工具:TrackView、Method Profiling:https://blog.csdn.net/fcly2013/article/details/38080333 TrackView、Method Prof…

Getting Started with Google Guava--思维导图笔记

Getting Started with Google Guava--思维导图笔记 分享地址:https://www.processon.com/view/link/5d413527e4b020861117eb7b

德国科学院院士:传统企业寻求变革,向智能制造靠近

来源:亿欧摘要:中新人工智能高峰论坛上,德国科学院院士汉斯乌思克尔特详细介绍了AI在工业上的概念和具体运用案例。他把“AI工业”原理分为三层,由内到外分别是:生产层、运行层和数据结合层。经由这三层,智…

安卓逆向_12 --- jeb工具的使用 ( 动态调试 smali 代码 【 普通调试 和 debug调试 】)

From:https://www.52pojie.cn/forum.php?modviewthread&tid742250 jeb 动态调试 smali 代码:https://www.bilibili.com/video/BV1UE411A7rW?p39 使用 JEB 调试 Android App:https://www.jianshu.com/p/a1a7cf687cd2 了解 JEB 和 IDA 使…

Hamcrest总结--思维导图

来源:https://blog.csdn.net/neven7/article/details/42489723 思维导图:https://www.processon.com/view/link/5da81f53e4b09df55016b55d

机器学习应用的未来是什么?微型化

作者 | Pete Warden编译 | 专知翻译 | Yongxi, Huaiwen数据科学家,Jetpac 公司CTO Pete Warden发表了一篇博文,详细阐述了微型化是机器学习应用的一条出路,并且相信机器学习可以在微小的、低功耗的芯片上运行,利用深度学习可以做到…

Python 爬虫 性能 相关( asyncio 模块 --- 高性能爬虫 )

From:https://www.cnblogs.com/bravexz/p/7741633.html 爬虫应用 asyncio 模块 ( 高性能爬虫 ):https://www.cnblogs.com/morgana/p/8495555.html python异步编程之asyncio(百万并发):https://www.cnblogs.com/shenh…

“反机器学习”:人工智能突破的关键是“遗忘”

来源:36Kr摘要:人工智能越来越频繁地出现在人们的生活中,而其技术上的重大进步仍然不曾明朗。本文作者Natalie Fratto在“Machine Un-Learning: Why Forgetting Might Be the Key to AI”一文中讲述了实现人工智能战略性遗忘的三个方法。让我…