一句话概括本文:

只需20行代码,利用Xposed Hook掉王者农药王者获取手机系统机型的方法,

改成OV系的系统,以此达到流畅玩耍高帧率的目的。

引言:

王者农药的新赛季又到了,本来这篇是昨晚应该撸出来的,后来因为改机型

后玩得太嗨,都没怎么写,惭愧:

其实关于该机型优化已经不是什么新鲜事了,不过前几天在知乎上看到过话题:

如何看待 360 手机为「优化」腾讯游戏体验,在游戏模式中把自己的型号改成了 vivo?

然后呢,你应该会好奇为什么360要这么做,看到答题区的这几个图你应该就懂了:

这个中什么PY交易我不关心,我只知道把系统改成Oppo或者Vivo机型的,就可以

有多核优化和高帧率模式。然后呢,如果你手机Root了的话,直接打开

system/build.prop,修改系统相关的信息,品牌,机型,系统版本等:

然后呢,记得先备份,而且改了的话,有些改完手机是会GG的,比如摄像头

用不了的等,所以并不是最优方案,这个时候idea来了,如果Hook掉王者荣耀

获取手机机型的方法,直接让该方法返回ov系列的机型信息不就可以了?

还记得xposed里有个setResult()设置返回值的方法吧。套路就这样

接下来就是一顿推敲了。

1.胡乱分析

分析下怎么获得设备品牌与版本号的方法,这个谷歌或者百度一搜就有了,

都是通过android.os.Build.xxx获得:

点进去Build类的源码看看:

嗯,都是static修饰的静态成员,最简单的就是直接通过Xposed提供的setStaticObjectField

直接修改成我们想要的值,我们可以把Build里的静态成员都打印出来,看下哪些是需要

我们自行修改的:

输出结果:(依次为魅蓝E2和Oppo R9s)

对比得出需要修改如下字段:

MANUFACTURER,BRAND ==> OPPO

PRODUCT,DEVICE ==> R9s

MODEL ==> OPPO R9s

如果要修改系统版本号:对应RELEASE,SDK和SDK_INT字段

知道干什么了,接着就可以开始写代码了,代码非常简单:

运行重启一波,打开我们自己的模块,看看打印的Log:

可以,修改成功,打开酷(基)安看看,依次点击我->更多->我的机型,(¯﹃¯)

滑稽,接着打开手机QQ,随便发送一条说说,看下带的后缀是什么机型:

2.打开王者农药验证

接着就到我们的王者荣耀了,把画质调到最高,高帧率模式打开:

先不改机型,用魅蓝色试试

这是真的感人,最高帧50,经常掉到30帧左右,特别打团的时候,最低跌到27帧,

还提示画质降低,我也是服...接着改成Oppo r11 plus试试?

实测,场景不怎么复杂的时候60帧,平时基本处于50帧以上,打团的时候

也稳定在40帧以上,没有出现过画质降低的提示~

So,改改机型就可以爽翻天,里面的PY交易,你我都心知肚明

3.有个问题

一般呢,普通的APP到上面就完了,如果开发者皮一下,不是直接调Build.MODEL

这种获取方法,而是通过反射呢?比如这样的代码:

这个时候拿到的还是原来的机型:

我们的设置就不会生效了,于是乎我们还需要Hook掉这个getString方法

此时拿到的就是修改后的机型了

当然我是不会满足的,在源码里看到:

我对继续点进去,看下**get()**方法

再跟下去:

这里的native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在

当前文件,而是在用其他语言(如C和C++)实现的文件中。如果是改的话需要通过

JNI了,显然我们到了这里就够了,直接hook这个**native_get()**方法,然后返回品牌

或者机型。

再修改下xposed里的代码:

运行重启:

可以很稳,Hook到这里就差不多了,接着加上包名判断,如果打开的

是王者荣耀才去改机型,这里加上酷安的包名,后续真的拿来玩农药

的话再自行去掉吧。

分别打开酷安和设置里的关于手机:

OK,没毛病。

4.小结

代码非常简单,20行左右的代码就可以畅玩王者农药了,在此过程中有遇到

两个问题,要说明下:

1.低版本,hook方法不一定生效,所以还是需要静态设置那部分的代码

2.有时重启后代码并没有生效,xposed Installer那里建议关下插件再开,然后再重启

我只是研究技术细节怎么实现的,并不会去完善这个项目,有兴趣的自行扩展,

比如加上应用和机型选择等,在撸这一篇的时候大部分参考的是这个开源项目:

github.com/kingsollyu/…

他有个更完善的开源项目(应用变量Xposed插件):

github.com/kingsollyu/…

感谢开源作者的开源精神~

class XposedInit : IXposedHookLoadPackage {

@SuppressLint("PrivateApi")

override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {

when(lpparam.packageName) {

"com.tencent.tmgp.sgame","com.coolapk.market" -> {

//兼容低版本

setStaticObjectField(Build::class.java, Constant.MANUFACTURER, "OPPO")

setStaticObjectField(Build::class.java, Constant.BRAND, "OPPO")

setStaticObjectField(Build::class.java, Constant.PRODUCT, "R11 Plus")

setStaticObjectField(Build::class.java, Constant.DEVICE, "R11 Plus")

setStaticObjectField(Build::class.java, Constant.MODEL, "OPPO R11 Plus")

//应对反射获取机型的情况

val c = Class.forName("android.os.SystemProperties")

val m = c.getDeclaredMethod("native_get", String::class.java, String::class.java)

m.isAccessible = true

XposedBridge.hookMethod(m, object : XC_MethodHook() {

override fun afterHookedMethod(param: MethodHookParam) {

when (param.args[0].toString()) {

"ro.product.manufacturer", "ro.product.brand" -> param.result = "OPPO"

"ro.product.name", "ro.product.device" -> param.result = "R11 Plus"

"ro.product.model" -> param.result = "OPPO R11 Plus"

}

}

})

}

}

}

}

复制代码

android 改机型玩王者,抱歉,Xposed真的可以为所欲为——2.改为OV机型流畅玩耍高帧率王者农药...相关推荐

  1. 抱歉,Xposed真的可以为所欲为——2.改为OV机型流畅玩耍高帧率王者农药

    抱歉,Xposed真的可以为所欲为--2.改为OV机型流畅玩耍高帧率王者农药 标签:2018 一句话概括本文: 只需20行代码,利用Xposed Hook掉王者农药王者获取手机系统机型的方法, 改成O ...

  2. 抱歉,Xposed真的可以为所欲为——6.你的表白撤不回了

    抱歉,Xposed真的可以为所欲为--6.你的表白撤不回了 标签: 2018 一句话概括本文 一步步Hook微信,实现微信消息防撤回. 引言 上周六下班,与往常一样,和公司同事去吃个饭,然后打个球,在 ...

  3. 抱歉,Xposed真的可以为所欲为——3.微信运动占领封面出售广告位

    抱歉,Xposed真的可以为所欲为--3.微信运动占领封面出售广告位 标签: 2018 一句话概括本文 简单的二十行代码,利用Xposed Hook掉计步传感器,以此达到刷步数的目的. 引言 现在的年 ...

  4. 抱歉,Xposed真的可以为所欲为——5.我自己刷的Xposed凭什么不给我用

    抱歉,Xposed真的可以为所欲为--5.我自己刷的Xposed凭什么不给我用 标签: 2018 一句话概括本文 分析定位排查下厨房APP检测手机是否安装了Xposed框架的方法,然后一步步 Hook ...

  5. 抱歉,Xposed真的可以为所欲为——4.猜拳投骰子你能赢算我输

    抱歉,Xposed真的可以为所欲为--4.猜拳投骰子你能赢算我输 标签: 2018 一句话概括本文 人品大法利用Xposed Hook掉微信猜拳和投骰子,让你无需再担忧拿外卖和搞卫生. 引言 关于这节 ...

  6. 抱歉,Xposed真的可以为所欲为——4.猜拳投骰子你能赢算我输(转载)

    一句话概括本文 人品大法利用Xposed Hook掉微信猜拳和投骰子,让你无需再担忧拿外卖和搞卫生. 引言 关于这节,我是看代码看到头皮发麻,逆向APP并没有想想中的简单, 特别是微信这种,要投入的学 ...

  7. 抱歉,Xposed真的可以为所欲为——1.基础知识储备(转载)

    一句话概括本文: 本节简单介绍了什么是Xposed,基本原理,如何创建一个Xposed项目以及Xposed常用的类与方法. 引言: 前面用Python利用itchat库撸了篇: 小猪的Python学习 ...

  8. 抱歉,Xposed真的可以为所欲为——6.你的表白撤不回了(转载)

    一句话概括本文 一步步Hook微信,实现微信消息防撤回. 引言 上周六下班,与往常一样,和公司同事去吃个饭,然后打个球,在支付的时候突然却意外发现我的微信号 被封了,出现了一个这样的页面(别人的截图, ...

  9. python 广告牌_抱歉,Xposed真的可以为所欲为——3.微信运动占领封面出售广告位...

    一句话概括本文 简单的二十行代码,利用Xposed Hook掉计步传感器,以此达到刷步数的目的. 引言 现在的年轻都喜欢用各种各样的计步APP来记录每天的步数,微信自带的 微信运动因为用户群体基数大, ...

  10. 抱歉,Xposed真的可以为所欲为——3.微信运动占领封面出售广告位(转载)

    一句话概括本文 简单的二十行代码,利用Xposed Hook掉计步传感器,以此达到刷步数的目的. 引言 现在的年轻都喜欢用各种各样的计步APP来记录每天的步数,微信自带的 微信运动因为用户群体基数大, ...

最新文章

  1. 卡尔曼滤波器的特殊案例
  2. 简单介绍Python中异常处理用法
  3. Android Studio的使用(三)--包不分级、修改包名
  4. jQuery ready(fn) 页面载入函数
  5. 【发布】温度监测报警器v1.1a内测版!
  6. python根据列表形成字典。
  7. Example - RCP Text Editor
  8. C与CUDA混合编程的配置问题
  9. 如何在 IIS 中设置 HTTPS 服务
  10. Android异步处理:Handler+Looper+MessageQueue深入详解
  11. mysql 命令行参数
  12. python 多核并行计算_嫌Python太慢?并行运算Process Pools三行代码给你4倍提速!
  13. 【Java】java中的Fork/Join
  14. 祥林嫂形容哪类人?祥林嫂比喻什么样的人物?
  15. 配置csrf_Django 启用和禁用CSRF功能
  16. 正确的java学习顺序--刚入门的同学可以看这里
  17. _beginthread 与 _endthread 函数分析 (ReactOS版)
  18. RT-Thread 应用笔记 - libmodbus RTU 编译问题的解决
  19. WhbtomT(半路出家) 的每日英语 收集 (三)
  20. 读书笔记 - 说话之道 (蔡康永) - 1

热门文章

  1. 小程序接入h5页面_小程序和H5页面的相互跳转
  2. SVN比较两个文件差异
  3. 大学四年,看过的优质书籍推荐
  4. 搭建Windows red5流媒体服务器详解
  5. 微信小程序 访问locolhost_微信小程序 数据访问实例详解
  6. 最新Python使用键鼠模拟,DNF拍卖行
  7. java报销流程的实现_Filenet实现报销流程
  8. mysql测评作业指导书_测评作业指导书
  9. PHP测试POST请求工具
  10. Django文件上传与下载