安兔兔跑分作假
只是显示作假,后台服务器还是真实值
修改方法配置persist.sys.hct_antutu_score=xxx
xxx是真实跑分的倍数
例如persist.sys.hct_antutu_score=2.3
frameworks/base/core/java/android/widget/TextView.java
添加antutuScore方法
/*----------------add --------------------*/
private CharSequence antutuScore(CharSequence text){
String str = text.toString();
int antutotalScore = 0;
double fakeScore = Float.parseFloat(SystemProperties.get("persist.sys.hct_antutu_score"));
double mulpercent = 1.0;
if(str != null && str.length() > 0){
String textviewstr = this.toString();
if (textviewstr.contains("app:id/")) {
String antuid = textviewstr.substring(textviewstr.indexOf("app:id/"), textviewstr.indexOf("}"));
antuid = antuid.substring(7);
Log.e(LOG_TAG,"hct_songhui antuid = " + antuid + " , textviewstr = " + str);
/*跑分作假*/
if(antuid.equals("textViewTotalScore") || antuid.equals("main_test_finish_score")
|| antuid.equals("animateNumberViewScore") || antuid.equals("textViewMyPhoneScore")
|| antuid.equals("textViewScore") || antuid.equals("textViewLeftScore")){
try {
antutotalScore = (int)(fakeScore * Integer.parseInt(str));
return String.valueOf(antutotalScore);
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
/*百分比作假*/
/*待优化*/
if(antuid.equals("textViewPercent")){
String regEx="[^0-9]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
String perstr = m.replaceAll("").trim();
if(perstr != null && perstr.length() > 0 && perstr.length() < 3){
int percent = Integer.parseInt(perstr);
if(fakeScore < 2.1){
if(percent < 20){
mulpercent = percent * 3;
}else if(percent < 50){
mulpercent = percent + fakeScore * 20;
}else{
mulpercent = percent + fakeScore * 10;
}
}else{
mulpercent = percent + fakeScore * 20;
}
if(mulpercent > 80){
mulpercent = mulpercent - fakeScore%3;
}
if(mulpercent > 90){
mulpercent = mulpercent - fakeScore%7;
}
if(mulpercent > 99){
mulpercent = 99-fakeScore%9;
}
text = str.replace(String.valueOf(percent),String.valueOf((int)mulpercent));
return text;
}
}
}
}
return text;
}
/*----------------add --------------------*/
然后在setText()方法中调用antutuScore(text)即可;
private void setText(CharSequence text, BufferType type,
boolean notifyBefore, int oldlen) {
*
*
*
*
} else if (type == BufferType.SPANNABLE || mMovement != null) {
text = mSpannableFactory.newSpannable(text);
} else if (!(text instanceof CharWrapper)) {
text = TextUtils.stringOrSpannedString(text);
}
/*----------------add --------------------*/
String className = getContext().getClass().getName();
Log.d("modifyinfo","----className="+className);
if(className.contains("com.antutu.benchmark") && !SystemProperties.get("persist.sys.hct_antutu_score","1").equals("1")){
text = antutuScore(text);
}
/*----------------add --------------------*/