我們經常調試Android
設備的時候, 會有類似打開Android
開發選項中這種需要點擊多次去點擊才能觸發后門的操作, 如果我們去做一些測試, 每次都要手動去做, 很麻煩, 我們可以考慮使用腳本完成.
我們一般去模擬去觸摸屏幕上的某個點, 通常是利用getevent -l tp事件
來拿到那個觸摸的坐標值, 然后使用命令adb shell input tap x y
來實現點擊操作, 這種操作單次可以, 但是如果需要快速多次點擊的話, 即使你死循環這個命令, 你還是會發現速度跟不上. 這是因為adb
是java
環境的, 發送到手機后, 系統需要去寫文件, 然后響應事件, 所以會很慢.
這里假設tp
的的事件是dev/input/event6
, 通過命令cat dev/input/event6 > sdcard/event6
, 點擊一次, 將產生的數據重定向到sdcard/event6
這個文件里, 按ctrl+c
結束, 去cat
這個文件會發現是亂碼.
接下來就可以通過腳本實現快速點擊了
adb shell "while : ; do dd if=/sdcard/event6 of=/dev/input/event6 ;sleep 0.1; done" //可加0.1s的延時, 防止機器反應不過來
執行后你會發現點擊速度很快.那么又有一個問題, 如果我們只需要快速點擊20次就行, 不要一直快速點擊該如何實現呢?
第一種方式:
adb shell "for i in `seq 1 20`; do dd if=/sdcard/event6 of=/dev/input/event6;sleep 0.1; done"
這種命令使用powershell
執行是可以的, 但是bat
就不行, 具體原因目前我還不清楚. 至於bash
是否可以, 還沒嘗試. 理論上可行.
第二種方式:
我們將記錄的單次數據改為記錄多次就可, 還是利用命令cat dev/input/event6 > sdcard/event6
, 快速點擊直到觸發隱藏界面, 按ctrl+c
結束. 利用命令:
adb shell "dd if=/sdcard/event6 of=/dev/input/event6"
這個命令在bat
與powershell
下都是可以成功執行的. 稍微難以控制的點就是你在快速點擊的時候, 點擊次數可能會過多, 這個需要稍微注意一下.