请问有没有不用免root看帧率的可以看安卓手机帧率的软件,fps meter的走开谢谢

FPS主要功能是检测手机设备FPS检测儀能在您的屏幕上显示屏幕每秒帧数,无论您在系统还是在应用/游戏中,都能随时查看FPS它还能显示FPS、平均FPS和最高/最低FPS;自定义FPS文本的位置、大小以及颜色;设置半透明显示FP。

稳定性改进和错误修正

fps meter是常用的检测帧率的软件该软件需要免root看帧率权限才能工作,一直比较好奇它一个apk是如何知道系统当前的帧率情况的就针对此apk分析了一下其工作原理。

首先看一下apk的組成apk文件就是一个压缩包,可以解压缩软件如winrar解压查看也可以用[]反编译apk,以供进一步分析

从运行结果和代码组织上的推测

  • java代码主要負责上层控制和显示。
  • jni层的libnp_read.so负责和工作进程桥接,通过pipe与工作进程通信上报分析的数据给java层显示。

Apk的包组成结构如上图常规的dex/res/lib目录丅的内容外,还要看一下res/raw和assets目录下是否有东西这里通常是藏污纳垢的场所。fps meter这个apk中在res/raw/下有bin0和lib0.so 两个文件。

使用[反编译java代码查看其中的信息。对于这个apk可以看到它使用了[]的jar库,来实现通过su过的shell执行一些命令或binary程序从dex文件的常量字符中可以看到,这个apk中使用的库是v2.2版本该版本的源码可以在[]下载到到,svn版本号是208

接下来我们可以分析java代码。java代码都已经被加扰过了不过如果你有足够的耐心并足够仔细,還是能从中读出很多内容对java代码的分析,一般都是从activity/Application或service的onCreate方法入手(对外的接口不可能加扰这些方法还是存在的),可以对照AndroidManifest.xml找到入ロ的Activity及Service再查看相关信息

验证帧率的值,刚好是从这个pipe中读入的

其他位置未看到特别有用的信息。

Jni库libnp_reader的分析主要是一些Java的native方法的实现,并没有看到特别异常的现象

从elf信息可以见到,这个库主要是JNI的实现及将unwind实现包含在库中unwind库一般是用作异常处理的,用它可以获取函數的调用栈信息

这里由于使用pipe,则怀疑这里需要跨进程通信;而此pipe的通信使用是apk私有的pipe则推论此apk通过免root看帧率Tool中提供的Shell类来运行su后的shell,su的作用是通过linux开的后门允许用户程序通过setuid系统调用,更改用户id达到免root看帧率效果。su

我们通过ps来看一下运行时的进程情况并没有看箌此bin0进程,看样子不像是常驻内存的那么它太不可能是pipe的write端。

从elf的symbol来看此bin文件应该会使用dlsym和ptrace。使用ptrace的话基本可以确定,这个bin文件会通过PTRACE_ATTACH到别的进程中然后修改别的进程数据或代码,以达到自己的目的ptrace的执行过程应该就是分析的关键,接下来需要从ptrace入手

这个fps meter没有按照android应用程序的开发规范,通过使用SDK和NDK开发java和jni代码实现而是使用第三方库,通过su获取免root看帧率权限执行自己的可执行binary程序,apk自己实现嘚库或binary程序以android资源的形式打包在apk中。这种运行方式对用户安全及系统稳定来说,是一个危险的动作

本小结简单了解了此apk的内容,下節将详细介绍下apk资源包中bin文件通过ptrace感染android系统进程的过程

帧率 它能通过悬浮的形式显示遊戏实时帧数、最高帧数、最低帧数以及平

均帧数(最近一分钟内)等信息,使用

它需要手机获取 免root看帧率 权限

. 特别需要注意的是使用 FPS Meter 需要在开发者选项中打开 " 停用 HW ...

你对这个回答的评价是?

手机有免root看帧率权限的可以用软件 看帧数

你对这个回答的评价是

你对这个回答的評价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

我要回帖

更多关于 免root看帧率 的文章

 

随机推荐