【生意多】-免费发布分类信息
当前位置: 首页 » 新闻 » IT资讯 » 正文

如何判断Android设备是真机还是模拟器?

放大字体  缩小字体 发布日期:2020-10-15 17:39:32    浏览次数:27
导读

  模拟器检测手段也常用于APP的应用安全防护上,防止利用模拟器进行刷单,刷流量等恶意操作,所以也需要获取设备返回的一些信息来鉴别设备的真伪。  android.os.Build类包含设备硬件和版本信息。可以通过提取该类的静态字段来检测模拟器。  /system/build.prop 是一个属性文件,在Android系统中.prop文件定义了系统初

  模拟器检测手段也常用于APP的应用安全防护上,防止利用模拟器进行刷单,刷流量等恶意操作,所以也需要获取设备返回的一些信息来鉴别设备的真伪。

  android.os.Build类包含设备硬件和版本信息。可以通过提取该类的静态字段来检测模拟器。

  /system/build.prop 是一个属性文件,在Android系统中.prop文件定义了系统初始(或永久)的一些参数属性、功能的开放等

  Systemproperties类在android.os下,但这个类是隐藏的,上层程序开发无法直接使用。用java的反射机制可以使用这个类来设置和获

  大部分真机都是使用ARM架构,而模拟器运行在PC上的X86架构。因此可以利用ARM与X86的区别。来判断是否是真机。

  对于使用qume的模拟器,可以通过qemu二进制翻译(Binary Translation)的一个优化特性来检测模拟器

  物理CPU会在每执行一条指令以后,就把程序计数器加一,程序计数器永远都是最新的值。Qemu是在遇到需要返回最新值的时候才会更新程序计数器,其他时候不会每次都更新,来作为一种优化措施。因此,程序计数器会指向一个代码块的最开始位置,因为每次进行分支跳转的时候才需要更新程序计数器。

  ARM采用的哈佛架构将指令存储跟数据存储分开,与之对应的,ARM的一级缓存分为I-Cache(指令缓存)与D-Cahce(数据缓存),而X86只有一块缓存,将一段代码可执行代码动态映射到内存,在执行的时候,X86架构上是可以修改这部分代码的,而ARM的I-Cache可以看做是只读,因为,当我们往PC对应的地址写指令的时候,其实是往D-Cahce写,而I-Cache中的指令并未被更新,这样,两端程序就会在ARM与x86上有不同的表现,根据计算结果便可以知道究竟是还在哪个平台上运行

 
关键词: android模拟器
(文/小编)
打赏
免责声明
• 
本文为小编原创作品,作者: 小编。欢迎转载,转载请注明原文出处:http://www.31duo.com/news/show-640210.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们。
 

(c)2016-2019 31DUO.COM All Rights Reserved浙ICP备19001410号-4

浙ICP备19001410号-4