安兔兔等跑分软件能帮助手机用户了解自己手机的性能,此功能迎合了大多数人的需求,因此安兔兔较流行。当然目前市面上不止一款跑分软件,这些跑分软件大同小异,基本原理是:通过模拟用户操作(比如玩游戏,做运算,听音乐等等)来测试CPU,GPU,MEM,WIFI,BLUETOOTH,MODEM,DDR等等性能,给每一项进行打分,最后形成总分。
认真做技术的芯片供应商,集成商会不断突破已有技术,从而提高产品性能,而不少三流的不入流的企业就没有那么本份了,现在我说说这些企业是怎么提高跑分的。
首先介绍一种被大家唾弃的方法:
(1),把目前市面上常见的benchmark的关键字记录到一个List中;
softwareList.add("antutu");
softwareList.add("benchmark");
softwareList.add("ludashi");
softwareList.add("cfbench");
softwareList.add("quicinc.vellamo");
softwareList.add("geekbench");
softwareList.add("greenecomputing.linpack");
softwareList.add("nenamark");
softwareList.add("performance.test");
softwareList.add("QuadrantStandard");
(2),在systemserver启动时,开启一个service,在serice中开启一个线程,在线程中用while(true),在do while(true)中每sleep 5秒就获取系统当前处于running的task,把这些task的名称和List中保存的关键字比较来判断是否有benchmark运行,如果有benchmark运行,则写系统属性SystemProperties.set("ctl.stop", "inputfreq"),从而触发init.rc中定义的/system/bin/inputfreq.sh
,在inputfreq.sh中开启performance策略。在大多数情况情况下用户的手机是没有安装benchmark的,运行benchmark的机会更少,而这样一开机就搞个service在后台运行,相当浪费,为手机终端用户考虑了吗?
如果真的想作弊,也要尽可能的为终端用户考虑考虑吧!
用广播接收器接收包安装和卸载的广播消息,一旦发现有benchmark的包安装,再开启后台service监控,如果所有benchmark软件都卸载就不要监控。或者发现系统有benchmark安装后在startActivity的地方监控是不是benchmark软件Activity,如果是,再把系统设置为performance,这样就不用后台监控了。
哪里有买卖,哪里就有伤害啊!
工程师的一点点努力,就可以为社会做很大贡献,何乐而不为呢?