日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

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

發(fā)布時間:2024/7/23 Android 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓逆向_8 --- Android 调试工具 DDMS 和 Monitor ( 去掉 车来了 app 的广告 ) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

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。可以實現(xiàn) IDE 與連接終端設(shè)備(包含 仿真器 真機 )的調(diào)試,DDMS 可以實現(xiàn)查詢終端設(shè)備運行狀態(tài),終端設(shè)備進程狀態(tài),線程狀態(tài),文件系統(tǒng),日志信息(logcat)等。以及控制終端設(shè)備完成一些操作。還可以向目標(biāo)機發(fā)送短信、打電話,發(fā)送地理位置信息等。可以像 gdb 一樣 attach 某一個進程調(diào)試。 SDK tools 目錄下提供了 ddms 的完整版,直接運行即可。總的來說它是一款性能分析工具,可以幫助開發(fā)者快速了APP的運行情況。具體可見?https://developer.android.com/studio/profile/monitor?。

?

DDMS 怎樣與調(diào)試器交互?

1,每一個 Android 應(yīng)用都運行在一個 Dalvik 虛擬機實例里,而每一個虛擬機實例都是一個獨立的進程空間。虛擬機的 線程機制,內(nèi)存分配和管理,Mutex等等都是依賴底層操作系統(tǒng)而實現(xiàn)的。所有Android應(yīng)用的線程都對應(yīng)一個Linux線程,虛擬機因而可以更多的 依賴操作系統(tǒng)的線程調(diào)度和管理機制。?
2,DDMS 在 IDE與設(shè)備或模擬器之間的起著中間人的角色。?
3,DDMS 啟動時會與 adb 之間建立一個 device monitoring service 用于監(jiān)控設(shè)備。當(dāng)設(shè)備斷開或鏈接時,這個 service 就會通知DDMS。?
4,當(dāng)一個設(shè)備鏈接上時,DDSM 和 ADB 之間又會建立 VM monitoring service 用于監(jiān)控設(shè)備上的虛擬機。?
5,通過 ADB Deamon 與設(shè)備上的虛擬機的 debugger 建立鏈接,這樣 DDMS 就開始與虛擬機對話了。?

?

在安卓平臺上,每個應(yīng)用都運行在自己的進程上,同時每個應(yīng)用也都運行在自己的虛擬機(VM)上。每個VM公布了唯一的端口號以供調(diào)試器連接。

當(dāng)DDMS啟動后,會連接到adb。當(dāng)有設(shè)備連接上,VM監(jiān)測服務(wù)就在adb和DDMS之間創(chuàng)建,它會通知DDMS 設(shè)備上的VM是啟動了還是終止了。一旦VM是運行的,DDMS就獲取VM的進程ID(pid),通過adb和設(shè)備上的adb守護進程(adbd)建立到 VM調(diào)試器的連接。到此,DDMS就可以使用約定的線協(xié)議與VM通信。

DDMS給設(shè)備上的每個VM分配一個調(diào)試端口。通常,DDMS分配的第一個可調(diào)試端口號是8600,下一個是8601,依次往下類推。當(dāng)調(diào)試器連接 到已分配的一個端口時,VM上的所有通信都會被關(guān)聯(lián)到調(diào)試器。一個調(diào)試器只能連接一個單獨的端口,但是DDMS同時可以處理多個連接的調(diào)試器。

默認的,DDMS也會監(jiān)聽DDMS的“基本端口”(默認為8700)。基本端口是一個端口轉(zhuǎn)發(fā)端口,可以通過8700端口接受來自VM所有調(diào)試端口的通信并可以發(fā)送信息到調(diào)試器。這就允許你將調(diào)試器連接到8700端口,然后可以調(diào)試所有設(shè)備上的虛擬機。在DDMS設(shè)備視圖下,轉(zhuǎn)發(fā)的通信可以被當(dāng)前所 選進程終止。

接下來的屏幕截圖會在Eclipse中顯示標(biāo)準(zhǔn)的DDMS屏幕視圖。如果你是從命令行啟動的DDMS,截圖會略有不同,但絕大部分功能是相同的。注意這個特殊進程,com.android.email 它在模擬器上運行時的調(diào)試端口是8700,而分配給它的端口是8606。這就表明 DDMS 當(dāng)前將 8606 端口轉(zhuǎn)發(fā)到靜態(tài)調(diào)試端口 8700。
?

?

DDMS 啟動 方法

DDMS 在 SDK 里面的 tools 文件夾里,下載 SDK 后可以直接進入 tools 文件夾,雙擊 ddms.bat 啟動,如下圖:

主界面(手機root后才會顯示所安裝應(yīng)用):

Android Device Monitor :DDMS、HierarchyViewer。

Monitor 可以看做 DDMS 和?HierarchyViewer(層次結(jié)構(gòu))的組合。

Android Device Monitor?已在 Android Studio 3.1 中棄用,并已從 Android Studio 3.2 中移除

?

?

2.DDMS( Monitor ) 功能詳解

?

首先 DDMS 被分為三個部分。左上角為 Device 面板,詳細羅列了與電腦相連的終端設(shè)備的信息。右上角為詳細的功能選項卡,下方為日志信息以及終端信息.

?

2.1 Devices 面板

?

1,左邊顯示了所有當(dāng)前能找到的所有模擬器或設(shè)備列表和每個設(shè)備當(dāng)前正在運行的虛擬機列表。虛擬機是按程序的包命來顯示的。?
2,通過這些列表可以找到運行著想調(diào)試的activity的虛擬機。每個虛擬機旁邊的是“debugger pass-through”端口,鏈接到其中一個端口就會鏈接到設(shè)備上對應(yīng)的虛擬機。不管如何,在用DDMS時,只需要鏈接到8700端口,因為DDSM 轉(zhuǎn)發(fā)所有的通信到當(dāng)前選擇的虛擬機。這樣,就不用在每次切換虛擬機是重新配置debugger端口。?
3,當(dāng)一個正在運行的程序調(diào)用waitForDebugger()函數(shù)時,客戶端名字旁邊會顯示一個紅色的icon,知道debugger連上對 應(yīng)的虛擬機,這是debugger會變成綠色。?
4,如果看到叉icon,著意味著DDMS用于不能打開虛擬機的端口而不能建立debugger與虛擬機建立連接。如果看到所有的虛擬機是這樣, 很可能是有另外一個DDSM實例在運行。?

?

這個面板包含了所有的與IDE相連的設(shè)備列表以及每個設(shè)備上運行的進程的列表,如下圖所示:

device 窗口列出了 模擬器(或 真機)中所有的進程,顯示進程時會顯示進程ID (上圖中online那一列顯示的即是終端上運行的進程的ID) 以及與進程相關(guān)聯(lián)的端口號,連接端口號從 8600 端口依次往下增加,8700 是 DDMS 接收所有連接終端返回信息的端口,即是 base 端口。Devices 面板頂端從左往右有多個按鈕,

上面一排的按鈕功能,可以把鼠標(biāo)放上面會自動顯示按鈕說明。如果你沒有運行或調(diào)試程序的話,這些圖標(biāo)是不可用的!

當(dāng)你選中某個進程,并按下調(diào)試進程按鈕時,如果 eclipse 中有這個進程的代碼,那就可以進行源代碼級別的調(diào)試。有點像gdb attach。圖片抓取按鈕可以把當(dāng)前android的顯示桌面抓到你的機器上,也是非常有用。

?

開始方法分析:

  • 1.在設(shè)備選項,選擇要進行方法分析的進程
  • 2.點擊 Start Method Profiling按鈕。
  • 3.與應(yīng)用進行交互,開始要分析的方法
  • 4.點擊 Stop Method Profiling按鈕。DDMS停止分析應(yīng)用并打開Traceview,它包含了在點擊Start Method Profiling和Stop Method Profiling之間方法分析收集到的信息.

?

下面一一分析這些按鈕的功能

1.?Debug: 實現(xiàn)使用DDMS對代碼進行調(diào)試,使用該功能的前提是 IDE中具有該運行進程的源代碼,否則該按鈕為灰色,功能無法使用.

2.?Update heap: 實現(xiàn)對進程中的堆進行更新的操作。只有當(dāng)選擇這個按鈕后,在右側(cè)的功能面板中的heap選項卡中就能夠看見當(dāng)前進程的堆使用情況:

點擊 Cause GC 可以觸發(fā)虛擬機的垃圾回收機制。

3.?Dump HPROF file: 將當(dāng)前進程堆使用情況生成文檔,使用這個功能可以更加詳細的分析當(dāng)前堆的情況,有利于查找內(nèi)存泄等問題。

4.?Cause GC: 觸發(fā)垃圾回收機制,可以點擊后查看當(dāng)前進程的堆使用情況

5.?Update thread: 這個功能與update heap一樣,當(dāng)點擊了這個按鈕才能在右側(cè)面板的thread選項卡中查看當(dāng)前進程的所用的線程運行狀態(tài)

6.?Start Method Profiling: 開始進行方法分析。這個功能比較重要,后面單獨寫文章分析

7.?Stop: 終止當(dāng)前選中的進程。

8.?Screen Capture: 截屏按鈕,捕獲當(dāng)前設(shè)備的屏幕狀態(tài),該功能具有一定的延時

?

2.2 功能面板

功能面板從左到右有多個選項卡分別是:

1.?Threads: 這個不必多說,表示當(dāng)前進程中的所有線程狀態(tài)。線程視圖列出了此進程的所有線程。?

ID: 虛擬機分配的唯一的線程ID,在Dalvik里,它們是從3開始的奇數(shù)。? Tid: linux的線程ID,For the main thread in a process, this will match the process ID.? Stauts: 線程狀態(tài),? running: 正在執(zhí)行程序代碼? sleeping:執(zhí)行了Thread.sleep()? monitor: 等待接受一個監(jiān)聽鎖。? wait: Object.wait()? native: 正在執(zhí)行native代碼? vmwait: 等待虛擬機? zombie: 線程在垂死的進程? init: 線程在初始化(我們不可能看到)? starting:線程正在啟動(我們不可能看到)? utime: 執(zhí)行用戶代碼的累計時間? stime: 執(zhí)行系統(tǒng)代碼的累計時間? name: 線程的名字?

2.?Heap: 表示當(dāng)前進程堆使用情況。展示一些堆的狀態(tài),在垃圾回收其間更新。當(dāng)選定一個虛擬機時, VM Heap視圖不能顯示數(shù)據(jù),可以點擊右邊面包上的帶有綠色的”Show heap updates”按鈕,然后在點擊”Cause GC “實施垃圾回收更新堆的狀態(tài)。?

3.?Allocation Tracker: 分配跟蹤器,后面單獨寫文章分析。在這個視圖里,我們可以跟蹤每個選中的虛擬機的內(nèi)存分配情況。點擊”Start Tracking”后點擊”Get Allocations “就可以看到。?

4.?NetWork Statistics: 網(wǎng)絡(luò)分析功能。

5.?File Explorer: 瀏覽終端的文件系統(tǒng),進行文件相關(guān)操作。通過 Device > File Explorer 就可以打開 File Explorer。這里可以瀏覽文件,上傳上載刪除文件,當(dāng)然這是有相應(yīng)權(quán)限限制的( 只有 root 權(quán)限才能查看?)。?在這里面可以進行將外部文件導(dǎo)入到終端中,或者將終端文件導(dǎo)出,或者刪除終端文件,具體操作是右上角三個按鈕:

文件操作還是比較重要的,比如一個應(yīng)用涉及到了SQLite數(shù)據(jù)庫使用,此時可以使用這個功能,導(dǎo)出數(shù)據(jù)庫文件單獨分析

6.?Emulator Control: 可以實現(xiàn)往模擬器中打電話,發(fā)送短信,發(fā)送地理位置坐標(biāo)等功能。

在這里,可以模擬一些設(shè)備狀態(tài)和行為。?
Telephony Status:改變電話語音和數(shù)據(jù)方案的狀態(tài),模擬不同的網(wǎng)絡(luò)速度。?
TelePhony Actions:發(fā)送模擬的電話呼叫和短信到模擬器。?
Location Controls:發(fā)送虛擬的定位數(shù)據(jù)到模擬器里,我們就可以執(zhí)行定位之類的操作。可以收工的在Manual里輸入經(jīng)度緯度發(fā)送到模擬器,也可以通過 GPX和KML文件。?

有了AndroidStudio 如果啟動了模擬器,可以直接在模擬器上實現(xiàn)相關(guān)信息的發(fā)送而不需要借助于DDMS

?

7.?System Information: 這個選項卡里面可以查看終端的CPU負載以及內(nèi)存使用情況。具體的試過就知道了。

?

2.3 LogCat and Console

這一部分就是系統(tǒng)運行產(chǎn)生的日志信息以及終端打印的信息。比較關(guān)心的還是LogCat。

這里的 LogCat 與 AndroidStudio 中的 LogCat 是一樣的。使用 LogCat 可以根據(jù)程序中的運行日志判斷當(dāng)前程序運行的狀態(tài)。終端設(shè)備一般運行較多的進程,每個進程運行都有大量的日志產(chǎn)生。因此一般需要使用 過濾器過濾其他進程信息。過濾器在 Saved Filter 中的以添加過濾器:

如果指定要觀察某一個進程的日志信息,那過濾器就使用PID(進程ID)進行過濾即可,進程ID可以在Devices面板中得到,過濾的等級根據(jù)自己代碼中寫的等級酌情考慮,這樣就能夠?qū)崿F(xiàn)只是觀察一個進程的日志信息。

?

?

?

去掉 "車來了"?app?的廣告

?

首先使用?AndroidKiller?反編譯 "車來了"?app ,找到?包名

然后?打開?monitor?過濾?com.ygkj.chelaile.standard?的?log,通過觀察?log?可以發(fā)現(xiàn),log?中出現(xiàn)了 "?成功發(fā)送簡單上報廣告時間埋點 "?之類的信息,右鍵 -》 Fiter similar messages...? 即可看到詳細信息,

復(fù)制?廣告的網(wǎng)址,然后在?AndroidKiller?中?全文件查找,并替換為空,導(dǎo)致?拼接?的?URL?無法訪問,從而達到去掉廣告的效果:

?

?

?

總結(jié)

以上是生活随笔為你收集整理的安卓逆向_8 --- Android 调试工具 DDMS 和 Monitor ( 去掉 车来了 app 的广告 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。