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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

drozer安装与使用总结(含adb命令总结)

發布時間:2024/3/24 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 drozer安装与使用总结(含adb命令总结) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????本文參考并拷貝了網上很多人的文章,僅作為個人思路總結。由于環境搭建復雜,步驟繁多,因此制作本文章,留以查看。

????如想詳細了解adb命令,可直接在目錄中點擊進入1.4.2 adb命令總結。

????如想了解(逍遙)模擬器上運行drozer agent,與電腦drozer的連接步驟,可直接點擊二、連接。

????如有侵權,請聯系,我將主動刪除。

drozer安裝與使用總結(含adb命令總結)

  • 一、環境的安裝
    • 1.1 電腦下載安裝依賴
      • 1.1.1 jdk1.7
      • 1.1.2 python2.7.15
      • 1.1.3 逍遙模擬器
    • 1.2 電腦下載安裝drozer
    • 1.3 在模擬器上安裝手機drozer agent
    • 1.4 adb管理工具
      • 1.4.1 配置及說明
      • 1.4.2 adb命令總結
        • a、查看應用列表
        • b、安裝apk
        • c、卸載apk
        • d、清除應用數據與緩存命令
        • e、Android四大組件相關命令
        • f、日志相關命令
        • g、查看設備情況
        • h、修改設置
        • i、實用功能
        • j、查看進程
  • 二、連接過程
    • 1、查看連接設備
    • 2、端口轉發
    • 3、開啟drozer控制臺
  • 三、drozer使用
    • 3.1 通過app.package.list模塊獲取要檢測的app的包名
    • 3.2 使用app.package.info模塊查看apk基本信息
    • 3.3 使用app.package.attacksurface模塊識別攻擊面
    • 3.4 使用app.activity.info模塊查看activity組件信息
    • 3.5 使用app.broadcast.info模塊查看暴露的廣播組件接口
    • 3.6 使用app.provider.info模塊查看content provider(數據提供接口)組件信息
    • 3.7 使用app.service.info模塊查看service組件信息
    • 3.8 文件操作

一、環境的安裝

1.1 電腦下載安裝依賴

1.1.1 jdk1.7

????安裝jdk1.7(我之前安裝的為1.8,也可以用)。Java是安卓的主要開發語言,與手機交互時使用。jdk安裝、環境變量配置可參考鏈接鏈接https://www.cnblogs.com/lsdb/p/6497816.html。

????用戶變量下:

編緝Path變量在最后添加:;C:\Program Files\Java\jdk1.8.0_131\bin

????系統變量下:

新建JAVA_HOME變量:C:\Program Files\Java\jdk1.8.0_131新建CLASSPATH變量:C:\Program Files\Java\jdk1.8.0_131\lib

1.1.2 python2.7.15

????安裝python2.7.15https://www.python.org/downloads/release/python-2715/。drozer使用python2.7編寫不支持python3.x,所以只能裝python2.7。原先電腦中裝python 2.7.18,但無法運行drozer console connect顯示模塊不存在。更換版本為2.7.15.運行正常。將python的兩個路徑分別加入系統變量中的Path變量中。

????系統變量下:

C:\Users\******\Desktop\Python27\C:\Users\******\Desktop\Python27\Scripts

1.1.3 逍遙模擬器

????將逍遙模擬器MEmu.exe的安裝路徑D:\Program Files\Microvirt\MEmu也添加入系統變量中的Path變量中。

1.2 電腦下載安裝drozer

????下載鏈接:https://github.com/mwrlabs/drozer/releases/。選擇系統相應的包,選windows的msi安裝包。

1.3 在模擬器上安裝手機drozer agent

????可將agent安裝包存放于電腦中,而后如圖點擊安裝將drozer agent安裝到手機。

????agent下載地址:https://github.com/mwrlabs/drozer/releases/download/2.3.4/drozer-agent-2.3.4.apk

????雙擊打開啟agent,如下圖確保右下角按鈕顯示為“開啟”(如果顯示為關閉,在其上點擊將其切換為開啟即可)。

1.4 adb管理工具

1.4.1 配置及說明

????參考鏈接:

????????adb下載安裝及使用
????????adb命令整理大全
????????開發者工具ADB命令行使用匯總——ADB安裝(初學者手冊)
????????微信公眾號「悶騷的程序員」關于adb的最全解釋

????adb----Android Debug Bridge,一般在Android SDK安裝目錄下的platform-tools文件夾下就有,也可以另外下載安裝。它就是一個命令行窗口,用于通過電腦端與模擬器或者是設備之間的交互。借助adb工具,我們可以管理設備或手機模擬器的狀態。還可以進行很多手機操作,如安裝軟件、系統升級、運行shell命令等等。

????環境變量配置:

????環境變量中編輯PATH,新增D:\ChromeCoreDownloads\adb。

????運行在pc端的adb server:

????ADB Server是運行在主機上的一個后臺進程。它的作用在于檢測USB端口感知設備的連接和拔除,以及模擬器實例的啟動或停止,ADB Server還需要將adb client的請求通過usb或者tcp的方式發送到對應的adbd上。運行在設備端的常駐進程adb demon (adbd):程序“adbd”作為一個后臺進程在Android設備或模擬器系統中運行。它的作用是連接ADB服務器,并且為運行在主機上的客戶端提供一些服務。

????運行在pc端的adb client:

????命令行程序”adb”用于從shell或腳本中運行adb命令。首先,“adb”程序嘗試定位主機上的ADB服務器,如果找不到ADB服務器,“adb”程序自動啟動一個ADB服務器。接下來,當設備的adbd和pc端的adb server建立連接后,adb client就可以向ADB servcer發送服務請求。

1.4.2 adb命令總結

a、查看應用列表

???? 查看模擬手機上所有應用列表:

adb shell pm list packages


????查看系統應用列表:

adb shell pm list packages -s


????查看第三方應用列表:

adb shell pm list packages -3

b、安裝apk

adb install "-lrtsdg" "path_to_apk"“-lrtsdg”:-l:將應用安裝到保護目錄 /mnt/asec;-r:允許覆蓋安裝;-t:允許安裝 AndroidManifest.xml 里 application 指定 android:testOnly=“true” 的應用;-s:將應用安裝到 sdcard;-d:允許降級覆蓋安裝;-g:授予所有運行時權限;path_to_apk:apk的絕對路徑。示例安裝淘寶apk:adb install -l /data/local/tmp/taobao.apk

c、卸載apk

adb uninstall -k "packagename"“packagename”:表示應用的包名,以下相同;-k 參數可選,表示卸載應用但保留數據和緩存目錄。示例卸載手機淘寶:adb uninstall com.taobao.taobao

d、清除應用數據與緩存命令

adb shell pm clear "packagename"相當于在設置里的應用信息界面點擊「清除緩存」和「清除數據」。示例:adb shell pm clear com.taobao.taobao 表示清除手機淘寶數據和緩存。

e、Android四大組件相關命令

????Android四大組件有Activity,Service服務,Content Provider內容提供,BroadcastReceiver廣播接收器,具體不做多講,常用的有以下(注意grep為linux下過濾命令):

????查看前臺 Activity命令:

adb shell dumpsys activity activities | grep mFocusedActivity

????查看正在運行的 Services命令:

adb shell dumpsys activity services "packagename"其中參數不是必須的,指定 “packagename” 表示查看與某個包名相關的 Services,不指定表示查看所有 Services。

????查看應用詳細信息命令:

adb shell dumpsys package "packagename"

????調起 Activity命令格式:

adb shell am start [options] 例如:adb shell am start -n com.tencent.mm/.ui.LauncherUI表示調起微信主界面

????調起 Service命令格式:

adb shell am startservice [options] 例如:adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService 表示調起微信的某 Service。

????強制停止應用命令:

adb shell am force-stop "packagename"例如強制停止淘寶:adb shell am force-stop com.taobao.taobao

????模擬按鍵/輸入:

adb shell input keyevent keycode 不同的 keycode有不同的功能 keycode功能
3HOME鍵
4返回鍵
5打開撥號應用
6掛斷電話
26電源鍵
27拍照(需要在相機應用里)
61Tab鍵
64打開瀏覽器
67退格鍵
80拍照對焦鍵
82菜單鍵
85播放/暫停
86停止播放
92向上翻頁鍵
93向下翻頁鍵
111ESC鍵
112刪除鍵
122移動光標到行首或列表頂部
123移動光標到行末或列表底部
124插入鍵
164靜音
176打開系統設置
207打開聯系人
208打開日歷
209打開音樂
220降低屏幕亮度
221提高屏幕亮度
221提高屏幕亮度
223系統休眠
224點亮屏幕
231打開語音助手
276如果沒有 wakelock 則讓系統休眠

????滑動解鎖:

????如果鎖屏沒有密碼,是通過滑動手勢解鎖,那么可以通過 input swipe 來解鎖。

adb shell input swipe 300 1000 300 500(其中參數 300 1000 300 500 分別表示起始點x坐標 起始點y坐標 結束點x坐標 結束點y坐標。)

????輸入文本:

????在焦點處于某文本框時,可以通過 input 命令來輸入文本。

adb shell input text *** (***即為輸入內容)

f、日志相關命令

????打印日志:
????Android 的日志分為如下幾個優先級(priority):
????????V —— Verbose(最低,輸出得最多)
????????D —— Debug I —— Info
????????W —— Warning
????????E —— Error
????????F—— Fatal
????????S —— Silent(最高,啥也不輸出)
????某級別過濾日志則會將該級別及以上的日志輸出。

adb logcat *:W 會將 Warning、Error、Fatal 和 Silent 日志輸出。

????(注: 在 macOS 下需要給 :W 這樣以 作為 tag 的參數加雙引號,如 adb logcat “:W”,不然會報錯 no matches found: :W。)

adb logcat打印當前設備上所有日志
adb logcat *:W過濾打印嚴重級別W及以上的日志
adb logcat l findstr ***> F:\log.txt把僅含***的日志保存到F盤的log.txt文件中
adb logcat -c清除屏幕上的日志記錄
adb logcat -c && adb logcat -s ActivityManager l grep "Displayed”客戶端程序啟動時間獲取日志
adb logcat > F:\log.txt打印當前設備上所有日志保存到F盤的log.txt文件中
adb logcat l findstr ***打印過濾僅含***的日志
adb logcat l findstr ***> F:\log.txt把僅含***的日志保存到F盤的log.txt文件中

????按 tag 和級別過濾日志:

adb logcat ActivityManager:I MyApp:D *:S表示輸出 tag ActivityManager 的Info以上級別日志,輸出tag MyApp的Debug 以上級別日志,及其它tag的Silent級別日志(即屏蔽其它tag日志)。adb logcat -v 選項指定日志輸出格式。日志支持按以下幾種 :默認格式brief、process、tag、raw、time、long指定格式可與上面的過濾同時使用。比如:adb logcat -v long ActivityManager:I *:S

????清空日志:

adb logcat -c

????內核日志:

adb shell dmesg

g、查看設備情況

????查看設備信息型號命令:

adb shell getprop ro.product.model

????電池狀況命令:

adb shell dumpsys battery

????屏幕分辨率命令:

adb shell wm size

????如果使用命令修改過,那輸出可能是:
???????? Physical size: 1080x1920
???????? Override size: 480x1024
????表明設備的屏幕分辨率原本是 1080px * 1920px,當前被修改為 480px * 1024px。
????屏幕密度命令:

adb shell wm density

????如果使用命令修改過,那輸出可能是:
????????Physical density: 480
????????Override density: 160
????表明設備的屏幕密度原來是 480dpi,當前被修改為 160dpi。
????顯示屏參數:

adb shell dumpsys window displays輸出示例:WINDOW MANAGER DISPLAY CONTENTS (dumpsys window displays)Display: mDisplayId=0init=1080x1920 420dpi cur=1080x1920 app=1080x1794 rng=1080x1017-1810x1731deferred=false layoutNeeded=false其中 mDisplayId為顯示屏編號,init是初始分辨率和屏幕密度,app的高度比 init里的要小,表示屏幕底部有虛擬按鍵,高度為1920 - 1794 = 126px 合42dp。

????android_id查看命令:

adb shell settings get secure android_id

????查看Android 系統版本:

adb shell getprop ro.build.version.release

????查看設備ip地址:

adb shell ifconfig | grep Mask或者adb shell netcfg

????查看CPU 信息命令:

adb shell cat /proc/cpuinfo

????查看內存信息命令:

adb shell cat /proc/meminfo

????設備的更多硬件與系統屬性:

adb shell cat /system/build.prop

????單獨查看某一硬件或系統屬性:

adb shell getprop <屬性名> 屬性名含義
ro.build.version.sdkSDK 版本
ro.build.version.releaseAndroid 系統版本
ro.product.model型號
ro.product.brand品牌
ro.product.name設備名
ro.product.board處理器型號
persist.sys.isUsbOtgEnabled是否支持 OTG
dalvik.vm.heapsize每個應用程序的內存上限
ro.sf.lcd_density屏幕密度
rro.build.version.security_patchAndroid 安全補丁程序級別

h、修改設置

????修改設置之后,運行恢復命令有可能顯示仍然不太正常,可以運行 adb reboot 重啟設備,或手動重啟。

????修改設置的原理主要是通過 settings 命令修改 /data/data/com.android.providers.settings/databases/settings.db 里存放的設置值。

????修改分辨率命令:

adb shell wm size 480x1024

????恢復原分辨率命令:

adb shell wm size reset

????修改屏幕密度命令:

adb shell wm density 160 表示將屏幕密度修改為 160dpi;

????恢復原屏幕密度命令:

adb shell wm density reset

????修改顯示區域命令:

adb shell wm overscan 0,0,0,200 四個數字分別表示距離左、上、右、下邊緣的留白像素,以上命令表示將屏幕底部 200px 留白。

????恢復原顯示區域命令:

adb shell wm overscan reset

????關閉 USB 調試模式命令:

adb shell settings put global adb_enabled 0 需要手動恢復:「設置」-「開發者選項」-「Android 調試」

????狀態欄和導航欄的顯示隱藏:

adb shell settings put global policy_control

????可由如下幾種鍵及其對應的值組成,格式為 =:=。

key含義
immersive.full同時隱藏
immersive.status隱藏狀態欄
immersive.navigation隱藏導航欄
immersive.preconfirms?

????這些鍵對應的值可由如下值用逗號組合:

value含義
apps所有應用
*所有界面
packagename指定應用
-packagename排除指定應用
舉例:adb shell settings put global policy_control immersive.full=* 表示設置在所有界面下都同時隱藏狀態欄和導航欄。adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3 表示設置在包名為 com.package1 和 com.package2 的應用里隱藏狀態欄,在除了包名為 com.package3 的所有應用里隱藏導航欄。

????恢復正常模式:

adb shell settings put global policy_control null

i、實用功能

????截圖保存到電腦:

adb exec-out screencap -p > sc.png然后將 png 文件導出到電腦:adb pull /sdcard/sc.png

????錄制屏幕:

錄制屏幕以 mp4 格式保存到 /sdcard:adb shell screenrecord /sdcard/filename.mp4 需要停止時按 Ctrl+C,默認錄制時間和最長錄制時間都是 180 秒。如果需要導出到電腦:adb pull /sdcard/filename.mp4

????掛載、查看連接過的 WiFi 密碼、開啟/關閉 WiFi、設置系統日期和時間都需要root權限,不做多說。

????使用 Monkey 進行壓力測試:

????Monkey 可以生成偽隨機用戶事件來模擬單擊、觸摸、手勢等操作,可以對正在開發中的程序進行隨機壓力測試。

adb shell monkey -p < packagename > -v 500 表示向 指定的應用程序發送 500 個偽隨機事件。

j、查看進程

adb shell ps

????查看實時資源占用情況:

adb shell top

????查看進程 UID:

adb shell dumpsys package | grep userId=

二、連接過程

1、查看連接設備

????雙擊打開逍遙模擬器。而后按win+r,輸入cmd,輸入adb devices,顯示已連接設備。該設備ip即為逍遙模擬器ip,端口默認為5555。(怎么修改,無從知曉)

2、端口轉發

adb forward tcp:31415 tcp:31415

3、開啟drozer控制臺

drozer console connect


????連接成功

????連接成功后,控制臺顯示dz> 。


三、drozer使用

????使用list查看支持哪些模塊。

list


????然后,使用help module_name,或者run module_name -h查看各module的用法。

????最后,通過run module_name module_options來對app進行檢測。

3.1 通過app.package.list模塊獲取要檢測的app的包名

run app.package.list -f package_name

3.2 使用app.package.info模塊查看apk基本信息

run app.package.info -a package_name

3.3 使用app.package.attacksurface模塊識別攻擊面

????所謂攻擊面,應該就是指可export的安卓四大組件(activaty、broadcast receiver、content provider、service)。

????如果查看到四大組件中有可export的,就去具體看可export的組件有沒有問題。

run app.package.attacksurface package_name


????輸出結果:
????Attack Surface:
????3 activities exported 暴露的控件接口
????0 broadcast receivers exported 暴露的廣播接收器
????0 content providers exported 數據提供接口,數據泄漏
????3 services exported service服務接口

????解釋參考鏈接:

????????【安全測試工具】Drozer介紹及使用

????解釋:

????Activity控件接口:

????應用程序中,一個Activity通常就是一個單獨的屏幕,它上面可以顯示一些控件也可以監聽并處理用戶的事件做出響應。Activity之間通過Intent進行通信。在Intent 的描述結構中,有兩個最重要的部分:動作和動作對應的數據。

????intent介紹:

????可以將Intent理解為不同組件之間通信的“媒介”專門提供組件互相調用的相關信息。Intent可以啟動一個Activity,也可以啟動一個Service,還可以發起一個廣播Broadcasts。

????Intent有以下幾個屬性: 動作(Action),數據(Data),分類(Category),類型(Type),組件(Compent)以及擴展信(Extra)。其中最常用的是Action屬性和Data屬性。通過Drozer完整的發送intent消息命令格式為:

????run app.activity.start [-h] [–action ACTION] [–category CATEGORY [CATEGORY …]] [–component PACKAGE COMPONENT] [–data-uri DATA_URI][–extra TYPE KEY VALUE] [–flags FLAGS [FLAGS …]] [–mimetype MIMETYPE]

????BroadcastReceive廣播接收器:

????應用可以使用它對外部事件進行過濾只對感興趣的外部事件(如當電話呼入時,或者數據網絡可用時)進行接收并做出響應。廣播接收器沒有用戶界面。然而,它們可以啟動一個activity或serice 來響應它們收到的信息,或者用NotificationManager 來通知用戶。通知可以用很多種方式來吸引用戶的注意力──閃動背燈、震動、播放聲音等。一般來說是在狀態欄上放一個持久的圖標,用戶可以打開它并獲取消息。

????content providers exported數據提供接口:

????android平臺提供了Content Provider使一個應用程序的指定數據集提供給其他應用程序。這些數據可以存儲在文件系統中、在一個SQLite數據庫、或以任何其他合理的方式, 其他應用可以通過ContentResolver類(見ContentProviderAccessApp例子)從該內容提供者中獲取或存入數據(相當于在應用外包了一層殼), 只有需要在多個應用程序間共享數據是才需要內容提供者。例如,通訊錄數據被多個應用程序使用,且必須存儲在一個內容提供者中。它的好處:統一數據訪問方式。

????service服務接口:

????services服務接口,一般常駐,連接上公開的service后,可通過service提供的接口調起其他activity等。

????檢測到攻擊面,可進行的攻擊:

????activities exported 越權攻擊,發送偽造消息等;
????broadcast receivers exported 發送惡意廣播,偽造廣播消息,越權攻擊等;
????content providers exported 數據泄漏,SQL注入等;
????services exported 越權攻擊,服務拒絕,權限提升等;

3.4 使用app.activity.info模塊查看activity組件信息

run app.activity.info -a package_name


????對activity嘗試進行攻擊:

????(1)來一把越權攻擊:繞過登錄頁直接拉activity,看到有activity啟動不需要權限,嘗試用drozer直接拉起這些activity看看。

run app.activity.start --component com.example com.example.activity.WelcomeActivity

????(2)發送偽造的殘缺消息,刻意制造不完整的intent,發送給對應的activity。

run app.activity.start --action android.intent.action.SEND --component com.example com.example.activity.share.ShareToSessionActivity

????intent中缺少extra部分。

3.5 使用app.broadcast.info模塊查看暴露的廣播組件接口

run app.broadcast.info -a com.example -i  獲取暴露的廣播組件信息

????嘗試拒絕服務攻擊,向廣播組件發送不完整intent(空action或空extras)。

run app.broadcast.send --component com.example com.example.sdk.communication.AppRegisterReceiver --extra string TEXT "hahahaha"

????傳遞空的action。

3.6 使用app.provider.info模塊查看content provider(數據提供接口)組件信息

run app.provider.info -a package_name


???? 如果有暴露的content組件接口,可能存在:

????數據泄漏問題;
????–直接訪問URI獲取敏感信息;–目錄遍歷;
????構造特殊的URI進行SQL注入;

???? 獲取content provider的信息:

run app.provider.info -a com.example -i

???? 使用drozer的scanner模塊去猜測可能存在的URIs:

run scanner.provider.finduris -a com.example

???? 檢測可注入的URI的注入點:

run scanner.provider.injection -a com.example

???? SQL注入的方式,如果上一步有拿到可注入的URI,獲取某個表(如Key)中的數據:

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM Key;--"

3.7 使用app.service.info模塊查看service組件信息

run app.service.info -a package_name


???? 獲取公開的service服務接口信息:

run app.service.info -a com.example -i

???? 直接啟動服務看下

run app.service.start --action com.example.plugin.game.service.GameDownloadService --component com.example com.example.plugin.game.service.GameDownloadService

3.8 文件操作

????安裝minimal來可以獲取暫時的root權限

run tools.setup.minimalsu

????進入shell模式,查看/data/data/com.example下是否有明文存儲敏感信息。
????在AndroidManifest.xml中android:allowBackup字段是否為true。當這個標志被設置為true或不設置該標志時應用程序數據可以備份和恢復,adb調試備份允許惡意攻擊者復制應用程序數據。有名的栗子新浪微博android客戶端越權泄密事件。

????疑難問題可參考以下鏈接:

????https://www.jianshu.com/p/28635f35cf8f

????制作不易,點個贊再走吧!

總結

以上是生活随笔為你收集整理的drozer安装与使用总结(含adb命令总结)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。