文章

繞過 Zenfone / ROG Phone 阻擋跑分軟體方法筆記

由於華碩會在特殊的系統版本中加入阻擋跑分軟體的功能,導致使用者在使用手機時無法進行跑分測試,影響使用體驗XD

所以我在這邊紀錄一下繞過 Zenfone / ROG Phone 阻擋跑分軟體的方法筆記。

  • 從我抓到的一份 adb logcat 來看,阻擋跑分軟體的功能是由 BenchmarkBlockerService 這個服務所提供的。
1
2
3
4
5
6
	行號 88601: 10-22 12:06:53.087  1652  1681 I ActivityManager: Force stopping com.primatelabs.geekbench6 appid=10242 user=0: from pid 7084
	行號 88913: 10-22 12:06:53.885  1652  1985 I ActivityManager: Force stopping com.primatelabs.geekbench6 appid=10242 user=0: from pid 7084
	行號 89175: 10-22 12:06:54.573  1652  1680 I ActivityManager: Force stopping com.primatelabs.geekbench6 appid=10242 user=0: from pid 7084
	行號 89434: 10-22 12:06:55.157  1652  3114 I ActivityManager: Force stopping com.primatelabs.banff appid=10243 user=0: from pid 7084
	行號 90185: 10-22 12:06:58.660  1652  4246 I ActivityManager: Force stopping com.futuremark.dmandroid.application appid=10240 user=0: from pid 7084
	行號 90667: 10-22 12:06:59.567  1652  1681 I ActivityManager: Force stopping com.antutu.ABenchMark appid=10244 user=0: from pid 7084
1
2
3
C:\Users\EdwardWu>adb shell
ASUS_AI2301:/ $ ps -A | grep 7084
system        7084   786 15289716 138224 0                  0 S com.asus.benchmarkblocker

從這兩段可以得到 pid 為 7084 的程式為 com.asus.benchmarkblocker,而這個服務正是 BenchmarkBlockerService

  • 接著我們可以使用 dumpsys activity services 指令來查看這個服務的詳細資訊:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
ASUS_AI2301:/ $ dumpsys activity services | grep -n BenchmarkBlockerService -A 20
2220:  * ServiceRecord{f7921d3 u0 com.asus.benchmarkblocker/.BenchmarkBlockerService}
2221-    intent={act=com.asus.benchmarkblocker.service.TaskWatcherService pkg=com.asus.benchmarkblocker}
2222-    packageName=com.asus.benchmarkblocker
2223-    processName=com.asus.benchmarkblocker
2224-    permission=com.asus.permission.SUPPORT_BENCHMARK
2225-    baseDir=/system/priv-app/BenchmarkBlocker/BenchmarkBlocker.apk
2226-    dataDir=/data/user/0/com.asus.benchmarkblocker
2227-    app=ProcessRecord{4c57586 7084:com.asus.benchmarkblocker/1000}
2228-    allowWhileInUsePermissionInFgs=true
2229-    recentCallingPackage=com.asus.focusapplistener
2230-    recentCallingUid=1000
2231-    allowStartForeground=PROC_STATE_PERSISTENT
2232-    startForegroundCount=0
2233-    infoAllowStartForeground=[callingPackage: com.asus.focusapplistener; callingUid: 1000; uidState: PER ; intent: Intent { act=com.asus.benchmarkblocker.service.TaskWatcherService pkg=com.asus.benchmarkblocker }; code:PROC_STATE_PERSISTENT; tempAllowListReason:<,reasonCode:SYSTEM_ALLOW_LISTED,duration:9223372036854775807,callingUid:-1>; targetSdkVersion:33; callerTargetSdkVersion:33; startForegroundCount:0; bindFromPackage:null]
2234-    createTime=-4m35s36ms startingBgTimeout=--
2235-    lastActivity=-4m35s35ms restartTime=-4m35s35ms createdFromFg=true
2236-    Bindings:
2237-    * IntentBindRecord{1806029 CREATE}:
2238-      intent={act=com.asus.benchmarkblocker.service.TaskWatcherService pkg=com.asus.benchmarkblocker}
2239-      binder=android.os.BinderProxy@9ab9fae
2240-      requested=true received=true hasBound=true doRebind=false
--
2243:          ConnectionRecord{4c9afc2 u0 CR com.asus.benchmarkblocker/.BenchmarkBlockerService:@393140d}
2244-    All Connections:
2245:      ConnectionRecord{4c9afc2 u0 CR com.asus.benchmarkblocker/.BenchmarkBlockerService:@393140d}
2246-
2247-  * ServiceRecord{cab7f5f u0 com.asus.gamecenter/.aurasync.headset.HeadsetControlService}
2248-    intent={pkg=com.asus.gamecenter cmp=com.asus.gamecenter/.aurasync.headset.HeadsetControlService}
2249-    packageName=com.asus.gamecenter
2250-    processName=com.asus.gamecenter
2251-    permission=com.asus.aurasync.AURASYNC
2252-    baseDir=/system/priv-app/ROGGameCenter/ROGGameCenter.apk
2253-    dataDir=/data/user/0/com.asus.gamecenter
2254-    app=ProcessRecord{571812f 2715:com.asus.gamecenter/u0a95}
2255-    allowWhileInUsePermissionInFgs=true
2256-    recentCallingPackage=android
2257-    recentCallingUid=1000
2258-    allowStartForeground=PROC_STATE_PERSISTENT
2259-    startForegroundCount=0
2260-    infoAllowStartForeground=[callingPackage: android; callingUid: 1000; uidState: PER ; intent: Intent { pkg=com.asus.gamecenter cmp=com.asus.gamecenter/.aurasync.headset.HeadsetControlService }; code:PROC_STATE_PERSISTENT; tempAllowListReason:<,reasonCode:SYSTEM_ALLOW_LISTED,duration:9223372036854775807,callingUid:-1>; targetSdkVersion:33; callerTargetSdkVersion:33; startForegroundCount:0; bindFromPackage:null]
2261-    createTime=-5m1s423ms startingBgTimeout=--
2262-    lastActivity=-5m1s281ms restartTime=-5m1s281ms createdFromFg=true
2263-    Bindings:
2264-    * IntentBindRecord{16b40dc CREATE}:
2265-      intent={pkg=com.asus.gamecenter cmp=com.asus.gamecenter/.aurasync.headset.HeadsetControlService}
--
4466:  * ConnectionRecord{4c9afc2 u0 CR com.asus.benchmarkblocker/.BenchmarkBlockerService:@393140d}
4467:    binding=AppBindRecord{74e314f com.asus.benchmarkblocker/.BenchmarkBlockerService:com.asus.services}
4468-    conn=android.os.BinderProxy@393140d flags=0x1
4469-  * ConnectionRecord{15b8281 u0 CR com.asus.powersaver/.PowerSaverService:@3978e68}
4470-    binding=AppBindRecord{bef1969 com.asus.powersaver/.PowerSaverService:com.android.systemui}
4471-    conn=android.os.BinderProxy@3978e68 flags=0x1
4472-  * ConnectionRecord{e0dbd82 u0 CR WACT CAPS com.google.android.gms/.chimera.PersistentApiService:@3cbc0cd}
4473-    binding=AppBindRecord{5086ddb com.google.android.gms/.chimera.PersistentApiService:com.google.android.gms.persistent}
4474-    conn=android.os.BinderProxy@3cbc0cd flags=0x1081
4475-  * ConnectionRecord{abd3566 u0 com.android.bluetooth/.csip.CsipSetCoordinatorService:@3d859c1}
4476-    binding=AppBindRecord{f83dbaf com.android.bluetooth/.csip.CsipSetCoordinatorService:com.android.settings}
4477-    conn=android.os.BinderProxy@3d859c1 flags=0x0
4478-  * ConnectionRecord{a69400e u0 com.android.bluetooth/.le_audio.LeAudioService:@3e8c609}
4479-    binding=AppBindRecord{83a13c6 com.android.bluetooth/.le_audio.LeAudioService:system}
4480-    conn=android.app.LoadedApk$ServiceDispatcher$InnerConnection@3e8c609 flags=0x0
4481-  * ConnectionRecord{f227ee9 u0 CR com.asus.hardwarestub/.cpulimit.CpuLimitControlService:@3f49b70}
4482-    binding=AppBindRecord{b54b8f5 com.asus.hardwarestub/.cpulimit.CpuLimitControlService:com.asus.services}
4483-    conn=android.os.BinderProxy@3f49b70 flags=0x1
4484-  * ConnectionRecord{cdc8ca0 u0 CR com.moji.tencent.weather/com.moji.api.service.APIBGService:@43201a3}
4485-    binding=AppBindRecord{c721807 com.moji.tencent.weather/com.moji.api.service.APIBGService:com.moji.tencent.weather}
4486-    conn=android.os.BinderProxy@43201a3 flags=0x1
4487-  * ConnectionRecord{a9f9155 u0 CR CAPS com.google.android.gms/.cast.media.CastMediaRoute2ProviderService_Persistent:@442040c}

從上面的輸出可以看到 BenchmarkBlockerService 的相關資訊,包括它的 package name 是 com.asus.benchmarkblocker,並且它有一個權限 com.asus.permission.SUPPORT_BENCHMARK

  • 接著我們可以使用 cmd package list packages 指令來查看系統中有哪些與跑分軟體相關的 package:
1
2
3
4
5
ASUS_AI2301:/ $ cmd package list packages | grep -i benchmark
package:com.antutu.aibenchmark
package:com.asus.benchmarkblocker
package:com.antutu.ABenchMark
package:com.asus.ims.benchmarkblocker

從上面的輸出可以看到有兩個與跑分軟體相關的 package,分別是 com.asus.benchmarkblockercom.asus.ims.benchmarkblocker

經由上一篇文章的經驗,我已經不考慮停用 com.asus.benchmarkblocker 這個服務,因為沒有足夠的權限停用它。 因此我決定嘗試直接對 user 0 刪除 com.asus.benchmarkblocker & com.asus.ims.benchmarkblocker 這兩個 package。

1
2
3
4
5
6
ASUS_AI2301:/ $ pm uninstall -k --user 0 com.asus.benchmarkblocker
Success
ASUS_AI2301:/ $ pm uninstall -k --user 0 com.asus.ims.benchmarkblocker
Success
ASUS_AI2301:/ $

成功刪除這兩個 package 後,跑分軟體就可以正常運作了! Happy Hacking !

tags: Android ASUS ROG
本文章以 CC BY 4.0 授權