这是一款名字叫“Zen Idle”的游戏。来尝试下自动刷钱
【adb获取包名以及当前运行的activity】
1 | adb shell dumpsys window | findstr mCurrentFocus |
输出:
1 | mCurrentFocus=Window{98555ab u0 com.TechTreeGames.ZenIdle/com.unity3d.player.UnityPlayerActivity} |
由包名获取apk路径
1 | adb shell pm path io.ionic.starter |
【adb命令行启动应用程序】
1 | adb shell am start -n 包名/类名 |
如:
1 | adb shell am start -n com.android.music/com.android.music.MusicBrowserActivity |
【adb shell 修改系统时间】
下面命令亲测可用,假如当前时间 01月05号08点23分改成 01月05号12点23分
1 | adb shell date "01051223" |
【按钮的位置】
找到开发者选项,开启“指针位置”,在游戏里找到按钮的范围
Claim按钮
X: 390-690 300 540
Y: 1212-1362 150 1287
关闭广告按钮
x 915
y 835
【Android adb 模拟滑动 按键 点击事件】
关于tap的话,他模拟的是touch屏幕的事件,只需给出x、y坐标即可。
此x、y坐标对应的是真实的屏幕分辨率,所以要根据具体手机具体看,比如你想点击屏幕(x, y) = (250, 250)位置:
1 | adb shell input tap 250 250 |
此处我:
1 | input tap 540 1287 |
1 | input tap 915 835 |
【总命令】
1 | adb shell date "01010601" ; am start -n com.TechTreeGames.ZenIdle/com.unity3d.player.UnityPlayerActivity ; sleep 1 ; input tap 540 1287 ; sleep 1 ; date "01010101" ; input keyevent 3 |
加点循环
1 | for I in $(seq 1 20);do |
写入sh脚本,懒得每次输入了
1 | echo 'for I in $(seq 1 20);do\n echo $I/20 ; date "01010601" ; am start -n com.TechTreeGames.ZenIdle/com.unity3d.player.UnityPlayerActivity ; sleep 1 ; input tap 915 835 ; input tap 915 835 ; input tap 540 1287 ; sleep 1 ; date "01010101" ; input keyevent 3\ndone' >zen.sh |
【adb 安装卸载程序】
adb root 失败,提示adbd cannot run as root in production builds
网上说安装adbd-Insecure-v2.00.apk,亲测无效。还是每次adb shell然后su吧。
1 | adb install ./adbd-Insecure-v2.00.apk |
【尝试只改时间】
1 | date "01010101" ; date "01010601" |
并不能让程序显示奖励窗口(必须先退出这个页面再进入)
并不能让程序显示奖励窗口(必须先退出这个页面再进入)
【进一步的集成】
通过命令行参数决定要循环几次
1 | echo 'CNT=10 |
然后:
1 | adb shell |
【手机闹钟BUG级响起】
无解
可以关闭闹钟
【尝试只在date的时候用su执行】
1 | mkdir /sdcard/_sh |
完美~
但是会每次date的时候显示“已授予shell超级用户权限”,看着很难受
先su再执行脚本就不会了
可以在电脑上adb shell进去执行脚本,也可以用手机啦
【视频演示】