0%

adb自动刷钱

这是一款名字叫“Zen Idle”的游戏。来尝试下自动刷钱

image-20200505094215251

【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
2
3
for I in $(seq 1 20);do
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
done

写入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
2
3
4
5
6
adb install ./adbd-Insecure-v2.00.apk

adb shell pm list packages|grep adb
输出: package:eu.chainfire.adbd

adb uninstall eu.chainfire.adbd

【尝试只改时间】

1
date "01010101" ; date "01010601"

并不能让程序显示奖励窗口(必须先退出这个页面再进入)

并不能让程序显示奖励窗口(必须先退出这个页面再进入)

【进一步的集成】
通过命令行参数决定要循环几次

1
2
3
4
5
6
7
echo 'CNT=10
if [ $# != 0 ] ; then
CNT=$1
fi
for I in $(seq 1 $CNT);do
echo $I/$CNT ; 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
done' >zen.sh

然后:

1
2
3
4
adb shell
cd /sdcard/_sh
su
. ./zen.sh 20

【手机闹钟BUG级响起】
无解
可以关闭闹钟

【尝试只在date的时候用su执行】

1
2
3
4
5
6
7
8
mkdir /sdcard/_sh
echo 'CNT=10
if [ $# != 0 ] ; then
CNT=$1
fi
for I in $(seq 1 $CNT);do
echo $I/$CNT ; su -c 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 ; su -c date "01010101" ; input keyevent 3
done' >/sdcard/_sh/zen.sh

完美~
但是会每次date的时候显示“已授予shell超级用户权限”,看着很难受
先su再执行脚本就不会了

可以在电脑上adb shell进去执行脚本,也可以用手机啦

【视频演示】

坚持原创技术分享,您的支持将鼓励我继续创作!