Android 常用命令和工具解析之GPU相关
目录
1、GPU基本信息
1.1 获取GPU基本信息
1.2 伪造GPU基本信息
2、GPU内存信息
3、经典案例
案例1:GPU伪造信息方案
案例2:GPU内存统计算法
GPU 指的是 Graphics Processing Unit,即图形处理单元。GPU 是一种专门用于处理图形和图像相关计算任务的处理器,广泛应用于图形渲染、游戏设计、视频编辑、科学计算等领域。
与传统的中央处理单元(CPU)相比,GPU 在处理大规模并行计算时表现更加出色。GPU 可以同时处理多个数据流,执行大量相似的计算任务,适合处理需要高度并行计算能力的工作负载。
在图形应用方面,GPU 通常被用于加速三维图形渲染,使得游戏、虚拟现实(VR)、电影特效等内容的表现更加流畅和真实。此外,GPU 也被广泛应用于机器学习、人工智能等领域,用于加速深度学习网络的训练和推断过程。
1、GPU基本信息
1.1 获取GPU基本信息
可以通过如下命令来获取当前系统或者手机的GPU信息
adb shell "dumpsys SurfaceFlinger | grep "GLES""
如上可以分为三部分,其中第一部分可以理解为此GPU生产公司,ARM表示此GPU采用了ARM架构,Imagination Technologies为另一个平台或者公司的架构,通常简称为IMG
1.2 伪造GPU基本信息
可以通过如下命令来伪造当前系统或者手机的GPU信息,伪造就是认为的更改GPU相关信息:
adb root
adb shell "setprop vendor.debug.gpud.enable '1'"
adb shell "setprop vendor.debug.gpud.process.name ''"
adb shell "setprop vendor.debug.gpud.gl.vendor 'ARM'"
adb shell "setprop vendor.debug.gpud.gl.renderer 'Mali-G52 MC2'"
adb shell "stop;start"
adb shell "dumpsys SurfaceFlinger | grep "GLES""
我们为什么要伪造GPU的信息,因为很多三分应用或者进程,特别是游戏应用会根据不同的GPU,来做出不同的渲染流程,例如MIR4游戏在低端GPU的手机里面调用了不同的opengl纹理来进行图像渲染。来保证兼容一些低端机型的画面流畅,但是这些难免会存在一些bug,例如部分应用在某些机型上出现闪屏或者图像显示不正常,此时我们可以通过伪造来排除GPU的不同导致的问题。
2、GPU内存信息
可以通过如下命令获取GPU内存相关信息:
adb shell cat proc/mtk_mali/gpu_memory //此条命令只针对MTK,不同平台路径不一样
- 第一行mali0 141867表示第一块GPU暂时代名为mali0,其总共使用了141867个内存页,注意单位是页,因此转换为kb的计算方法:141867 * 4 = 567468 kb。注意他不是gpu内存容量大小,而是统计了当前系统所有使用gpu mali0的进程的内存页数之和,因此它的数值也是实时在变化。
- 之后的kctx,表示一个 Kernel Context,具有 ID 0x0000000061e8bc12(可能是某个进程的句柄对象的HASH值)。其中红色框部分表示每个kctx(进程)使用了gpu内存页数,所有的kctx的内存页数之和等于mali0的内存页个数;后面绿色框部分表示每个kctx对应的进程PID,大多数进程通常只会存在一个kctx,但是也有个别应用或者进程拥有多个kctx,例如上图中的PID为25212进程。
3、经典案例
案例1:GPU伪造信息方案
问题描述:com.wemade.mir4global游戏在google play第一次启动的时候出现不支持纹理的提示框,且游戏界面人物显示异常打上了马赛克
问题分析:此游戏在google等对比机上面能够正常使用和显示,并没有此类弹框,根据弹框可以支持提示的此平台的opengl部分纹理格式,且有如下异常日志
最后结论:经过大量测试发现此现象只出现在IMG平台上,MTK做了如下实验,将img的gpu fake to mali(fake的意思就是伪造GPU的型号信息,即三方应用读取GPU的型号出来就不再是IMG二手MAILI)之后就能正常启动
问题总结:此题是APP问题,fake GPU以后游戏显示正常。所以和DDK修改无关。fake GPU有效果。是APP将img的gpu fake to mali的,游戏显示正常了。是MIR4对GPU的型号做了区分,所以表现形式不一样
修改方案:通过代码方式伪造GPU信息为ARM
案例2:GPU内存统计算法
问题描述:Pizza Ready 12.0.0 Screen record in Game mode assist disappear after playing
问题分析:在Android 14的手机上玩Pizza Ready游戏过程中,出现screen record进程被杀,此时dump了该应用内存使用情况,并与对比机进行了对比,发现GL占用相差500M
后对比了多款机器此应用adb shell dumpsys meminfo io.supercent.pizzaidle的表现如下,从此结果可以看出来在Dimensity 6300+kernel 5.15+android 14的平台上必现,在Helio系列的机器均不出现,初步怀疑此问题为平台基线共性问题
后对比了多款机器在其他应用的表现,是否也存在差异如下表,从此表结果可以看出pizzaidle单独应用存在:
最后MTK和Arm给到的回复为GPU统计BUG,即pizzaidle存在多个kctx,之前的统计方式只计算了第一个kctx,因此只有几M,后加入修复patch,轮询统计某进程对应的所有kctx,所以计算出来有500多M,patch如下:
相关文章:

Android 常用命令和工具解析之GPU相关
目录 1、GPU基本信息 1.1 获取GPU基本信息 1.2 伪造GPU基本信息 2、GPU内存信息 3、经典案例 案例1:GPU伪造信息方案 案例2:GPU内存统计算法 GPU 指的是 Graphics Processing Unit,即图形处理单元。GPU 是一种专门用于处理图形和图像相…...

刷题——【模板】二维前缀和
前缀和 题目题目链接题解方法一方法二 题目 描述 给你一个 n 行 m 列的矩阵 A ,下标从1开始。 接下来有 q 次查询,每次查询输入 4 个参数 x1 , y1 , x2 , y2 请输出以 (x1, y1) 为左上角 , (x2,y2) 为右下角的子矩阵的和, 输入描述&#x…...

Xilinx 7 系列 FPGA的各引脚外围电路接法
Xilinx 7系列FPGA的外围电路接法涉及到多个方面,包括电源引脚、时钟输入引脚、FPGA配置引脚、JTAG调试引脚,以及其他辅助引脚。 本文参考资料: ds180 - 7 Series FPGAs Data Sheet - Overview ds181 - Artix 7 FPGAs Data Sheet - DC and AC…...
Python 爬虫 (1)基础 | 目标网站
一、目标网站 1、加密网站 1.1、关键字比较明确 企名片:https://wx.qmpsee.com/articleDetail?idfeef62bfdac45a94b9cd89aed5c235be 1.2、关键字比较泛 烯牛数据:https://www.xiniudata.com/project/event/lib/invest...

数字后端零基础入门系列 | Innovus零基础LAB学习Day11(Function ECO流程)
###LAB 20 Engineering Change Orders (ECO) 这个章节的学习目标是学习数字IC后端实现innovus中的一种做function eco的flow。对于初学者,如果前面的lab还没掌握好的,可以直接跳过这节内容。有时间的同学,可以熟悉掌握下这个flow。 数字后端…...

量子卷积神经网络
量子神经网络由量子卷积层、量子池化层和量子全连接层组成 量子卷积层和量子池化层交替放置,分别实现特征提取和特征降维,之后通过量子全连接层进行特征综合 量子卷积层、量子池化层和量子全连接层分别由量子卷积单元、量子池化单元和量子全连接单元组…...

储能电站构成及控制原理
系列文章目录 能量管理系统(EMS)储能充放电策略 文章目录 系列文章目录一、储能电站构成二、储能系统关键部件及作用1.电池储能系统2.功率变换系统(Power Conversion System,PCS)3.变配电系统4.后台监控系统5.继电保护及安全自动装置 三、储能电站的功能四、储能电站控制策略 …...
Rocky Linux 系统安装/部署 Docker
1、下载docker-ce的repo文件 [rootlocalhost ~]# curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo % Total % Received % Xferd Average Speed Time Time Time Current Dloa…...

12 —— Webpack中向前端注入环境变量
需求:开发模式下打印语句生效,生产模式下打印语句失效 使用Webpack内置的DefinePlugin插件 const webpack require(webpack) module.exports { plugins: [ new webpack.DefinePlugin({ process.env.NODE_ENV:JSON.stringify(process.env.NODE_ENV) }…...

uniapp接入BMapGL百度地图
下面代码兼容安卓APP和H5 百度地图官网:控制台 | 百度地图开放平台 应用类别选择《浏览器端》 /utils/map.js 需要设置你自己的key export function myBMapGL1() {return new Promise(function(resolve, reject) {if (typeof window.initMyBMapGL1 function) {r…...

外卖系统开发实战:从架构设计到代码实现
开发一套外卖系统,需要在架构设计、技术选型以及核心功能开发等方面下功夫。这篇文章将通过代码实例,展示如何构建一个基础的外卖系统,从需求梳理到核心模块的实现,帮助你快速掌握开发要点。 一、系统架构设计 一个完整的外卖系…...
神经网络反向传播算法公式推导
要推导反向传播算法,并了解每一层的参数梯度如何计算,以及每一层的梯度受到哪些值的影响,我们使用一个简单的神经网络结构: 输入层有2个节点一个有2个节点的隐藏层,激活函数是ReLU一个输出节点,激活函数是…...

Spark SQL 之 QueryStage
ExchangeQueryStageExec ExchangeQueryStageExec 分为两种...

【shodan】(三)vnc漏洞利用
shodan基础(三) 声明:该笔记为up主 泷羽的课程笔记,本节链接指路。 警告:本教程仅作学习用途,若有用于非法行为的,概不负责。 count count命令起到一个统计计数的作用。 用上节的漏洞指纹来试…...

每日OJ_牛客_游游的字母串_枚举_C++_Java
目录 牛客_游游的字母串_枚举 题目解析 C代码 Java代码 牛客_游游的字母串_枚举 游游的字母串 描述: 对于一个小写字母而言,游游可以通过一次操作把这个字母变成相邻的字母。a和b相邻,b和c相邻,以此类推。特殊的࿰…...

51c深度学习~合集8
我自己的原文哦~ https://blog.51cto.com/whaosoft/12491632 #patchmix 近期中南大学的几位研究者做了一项对比学习方面的工作——「Inter-Instance Similarity Modeling for Contrastive Learning」,主要用于解决现有对比学习方法在训练过程中忽略样本间相似关系…...

嵌入式:Flash的分类以及Jlink/J-flash的编程支持
相关阅读 嵌入式https://blog.csdn.net/weixin_45791458/category_12768532.html?spm1001.2014.3001.5482 常见的Flash大致可以分为以下大类: Serial Nor FlashSerial Nand FlashParallel Nor FlashParallel Nand FlashSerial EEPROM Serial Nor Flash 介绍 Se…...

【爬虫】Firecrawl对京东热卖网信息爬取(仅供学习)
项目地址 GitHub - mendableai/firecrawl: 🔥 Turn entire websites into LLM-ready markdown or structured data. Scrape, crawl and extract with a single API. Firecrawl更多是使用在LLM大模型知识库的构建,是大模型数据准备中的一环(在…...

遗传算法(Genetic Algorithm, GA)
简介 遗传算法(Genetic Algorithm, GA)是一种基于自然选择和遗传机制的优化算法,由 John Holland 于20世纪70年代提出。它是一种模拟生物进化过程的启发式搜索算法,被广泛应用于函数优化、机器学习、调度问题等领域。 代码说明 …...
【二分答案+倍增快速幂】课堂练习
P1678 烦恼的高考志愿 #include<bits/stdc.h> using namespace std; const int N1e55; int n,m,a[N];long long bs(int x){int l1,rn;while(l<r){int midlr>>1;if(a[mid]x) return 0;if(a[mid]>x) rmid-1;else lmid1;}//根据前驱后继返回最小差值//printf(&…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...

ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...

听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...

中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
基于Uniapp的HarmonyOS 5.0体育应用开发攻略
一、技术架构设计 1.混合开发框架选型 (1)使用Uniapp 3.8版本支持ArkTS编译 (2)通过uni-harmony插件调用原生能力 (3)分层架构设计: graph TDA[UI层] -->|Vue语法| B(Uniapp框架)B --&g…...
使用python进行图像处理—图像滤波(5)
图像滤波是图像处理中最基本和最重要的操作之一。它的目的是在空间域上修改图像的像素值,以达到平滑(去噪)、锐化、边缘检测等效果。滤波通常通过卷积操作实现。 5.1卷积(Convolution)原理 卷积是滤波的核心。它是一种数学运算,…...