正文内容 评论(0)
【揭示三星的幕后操作】
问题找到了,但到底发生了什么?三星是怎么设计的?
AnandTech找来了三星自带的可以改变动态电压频率调整(DVFS)的高级工具TwDVFSApp,使用十六进制编辑器打开apk文件,寻找有嫌疑的字符串,最后发现了一个“BenchmarkBooster”(基准测试加速器):
高亮区域可以看到很多根据Android Java命名方式列举的测试工具,包括Quarant标准版/高级版/专业版、Linpack免费版、Benchmark Pi、安兔兔,都是出现过问题的,但奇怪的是没有GLBenchmark 2.5.1。
TwDVFSApp运行期间涉及到的文件也可以轻松挖掘出来:
//sys/class/devfreq/exynos5-busfreq-int/min_freq
//sys/class/devfreq/exynos5-busfreq-mif/min_freq
+/sys/class/thermal/thermal_zone0/boost_mode
2/sys/devices/platform/pvrsrvkm.0/sgx_dvfs_min_lock
TwDVFSApp将特定的DVFS状态与应用联系起来的时候,boost_mode文件的值就会从0变成1,很容易就辨别受影响应用是否在运行,比如启动和退出Benchmark Pi的时候分别如下:
shell@android:/sys/class/thermal/thermal_zone0 $ cat boost_mode
1
shell@android:/sys/class/thermal/thermal_zone0 $ cat boost_mode
0
还能找到针对Fusion 3(骁龙600处理器加MDM9x15基带)、Adonis(Exynos 5410开发代号)的字符串,同样都带有加速字样:
doBoostAll
doBoostForAdonis
doBoostForAdonis::
doBoostForFusion3
doBoostForFusion3::
更值得玩味的是,TwDVFSApp还是个广播接收器(broadcast receiver),似乎还会向不在白名单之列的其它测试工具发出BenchmarkBoost模式的请求,目的显而易见。
6Lcom/sec/android/app/twdvfs/TwDVFSBroadcastReceiver$1;
6Lcom/sec/android/app/twdvfs/TwDVFSBroadcastReceiver$2;
?Lcom/sec/android/app/twdvfs/TwDVFSBroadcastReceiver$IntentInfo;
4Lcom/sec/android/app/twdvfs/TwDVFSBroadcastReceiver;
boostIntent
5com.sec.android.intent.action.DVFS_FG_PROCESS_CHANGED
*com.sec.android.intent.action.SSRM_REQUEST
到此,我们不仅知道了哪些程序会受到影响,也发现了疑似白名单,以及TwDVFSApp是如何为特定应用指定特定DVFS状态的。