当前位置:首页框架资源一篇文章带你彻底了解"过检测"

一篇文章带你彻底了解"过检测"

什么是检测,你真的需要过检测吗?

大概总结有以下几种情况和现象

  • APP在模拟器闪退、停止运行
  • APP提示环境异常、设备异常、网络异常、各种异常反正就是有问题
  • 正常运行,但是被风控、封控、限制
  • 一切正常,但是我就是想捣鼓这个让他更real

App在模拟器内打不开了(包括但不限于闪退或者中途闪退或提示),但是首先得确定,是他检测模拟器了,不然你折腾半天,他不是检测,或者什么就尴尬了。因为模拟器上不一定就兼容所有的app,或者兼容某个app的所有版本。通常情况下,如果直接提示你使用模拟器,或者环境异常的,那就基本上是检测模拟器了(包括但不限于以下提示:“设备环境异常”,“x86设备不支持”,“设备违规”等)。说一下不是检测模拟器的情况,比如打开直接闪退,有可能是这个app不兼容你用的模拟器,或者说APP需要安卓9以上才能用,你用安卓5或者7的模拟器打不开闪退,当然也存在说安卓5能运行,安卓7和9用不了的情况,所以得先多尝试。还有一种情况,说起来也很搞笑哈:大星之前写脚本遇到一个APP,我的电脑上,雷电夜神逍遥的安卓7,能打开,但是不能正常运行,要么卡死,要么闪退。安卓9呢能打开,但是一直转圈圈加载,进不去APP,我就奇怪了。。因为客户的电脑上可以打开,然后我换了跟客户一样的模拟器,甚至直接备份一个他电脑上正常打开的APP在我这来,都不行。于是我开始怀疑是网络的问题,因为软件都一样呀,然后我挂了换ip的,还是不行,给我急死了,远程写的。弄完之后 我猛然一想,我还有台E5,开机试试,结果E5直接就能打开。。。。后面多次测试,原来是AMD的cpu在安卓9的模拟器 运行不了这个app,能打开 但是不知道是什么东西加载不出来,应该跟开发者调用的什么库有关,然后模拟器方面没有对AMD的cpu适配,气得我赶紧买了套12700kf。。所以。。打不开的时候,除非你能明确判断他是检测模拟器,不然我推荐你先自己多测试测试,也别直接来问我,,这种东西涉及到app版本(起码试3个吧),模拟器各个版本(安卓5、7、9、更高,雷电、夜神、逍遥、mumu等三家起码试10几次),网络问题,甚至换电脑试排除硬件问题,我还真不好回答你,但是注意,我让你测试,只是排除一下非检测的问题,走完这些流程基本上可以确定是完全不兼容模拟器还是检测模拟器了,如果是不兼容,可以反馈给模拟器官方或者app客服,让他们进行适配,如果是检测限制了模拟器,那请你再往下看。。而且很多app,不一定检测到你是模拟器了,就不让你运行,人家可以事后封你号啊,或者限制你进行一些敏感操作,你用模拟器就给你列为高风险,再通过你的其他行为等等,来确定你是多开工作室,还是只是一个想用电脑玩一会手机app的麻瓜

过检测,到底是过的什么检测,为什么大星一直说改真机不可能?

改真机改真机,我都说了无数遍了,改真机不可能,严谨一点,谢谢你们,不是光让某个app识别成真机或者某些app的部分检测识别到真机,这个是丝毫不严谨的,你问我能不能改真机,假如我能过1万款app的检测,但是市面上几十万款,哪怕牛逼完了能过99%,始终还有1%能检测到你是模拟器啊。这能叫改成真机吗?而且你继续往下看了,就知道为什么要这么严谨了。

检测不一定就只检测某一项,或者光是设备相关的。设备环境,参数,例如机型,cpu底层型号,传感器,模拟器特征文件,等等等等一切有差异化的东西。

首先,90%的人,只需要对他需要的app做过检测就行了,因为你做的就是app的项目,app检测不到就完事了,还有9%的人,就是属于那种半灌水,或者听了风就是雨的,感觉得全部改成真机才行,当然还有1%的人,他压根不懂,以为过检测就得全部改成真机的样子,看完多学习就懂了。

先从少的说,如果不止对app针对的过检测,要全部改成真机,要改什么呢?首先,系统架构、环境(x86改arm等等)你就不能用模块或者什么去hook(拦截修改)了,因为得全部是真机,这个在我的认知里是没法实现的,因为你电脑的cpu就是x86,也不是arm,硬件永远你不可能改成一样,除非你拿arm的电脑去搞,,然后又得扯到这些模拟器不支持arm了,得去搭建云手机系统了,还有就是一些特征性的差异,咱们先从开发者的角度下手,想一下如果你是app开发者你怎么来检测用户的设备是不是模拟器呢,比如壁纸模拟器固定是那些壁纸,以及一些应用,比如各个模拟器的游戏中心,文件管理器等等系统app都是模拟器独家定制的,还有一些特征性的文件:

* 特殊的模拟器特征文件

* 186项文件(篇幅原因已随机删除部分,详情可查看原文),查到一个文件就是百分百模拟器,权重最高

* 出处:https://blog.csdn.net/ljphhj/

// vbox模拟器文件

"/data/youwave_id",

"/dev/vboxguest",

"/dev/vboxuser",

"/mnt/prebundledapps/bluestacks.prop.orig",

"/mnt/prebundledapps/propfiles/ics.bluestacks.prop.note",

"/mnt/prebundledapps/propfiles/ics.bluestacks.prop.s2",

"/mnt/prebundledapps/propfiles/ics.bluestacks.prop.s3",

"/mnt/sdcard/bstfolder/InputMapper/com.bluestacks.appmart.cfg",

"/mnt/sdcard/buildroid-gapps-ics-20120317-signed.tgz",

"/mnt/sdcard/windows/InputMapper/com.bluestacks.appmart.cfg",

"/proc/irq/9/vboxguest",

"/sys/bus/pci/drivers/vboxguest/bind",

"/sys/bus/pci/drivers/vboxguest/module",

"/sys/bus/pci/drivers/vboxguest/new_id",

"/sys/bus/pci/drivers/vboxguest/remove_id",

"/sys/bus/pci/drivers/vboxguest/uevent",

"/sys/bus/pci/drivers/vboxguest/unbind",

"/sys/bus/platform/drivers/qemu_pipe",

"/sys/bus/platform/drivers/qemu_trace",

"/sys/class/bdi/vboxsf-c",

// ========针对原生Android模拟器 内核:goldfish===========

"/sys/module/goldfish_audio",

"/sys/module/goldfish_sync",

// ========针对蓝叠模拟器===========

"/data/app/com.bluestacks.appmart-1.apk",

"/data/app/com.bluestacks.BstCommandProcessor-1.apk",

"/data/app/com.bluestacks.help-1.apk",

"/data/app/com.bluestacks.home-1.apk",

"/data/bluestacks.prop",

"/data/data/com.androVM.vmconfig",

"/data/data/com.bluestacks.accelerometerui",

"/data/data/com.bluestacks.appfinder",

"/data/data/com.bluestacks.appmart",

"/data/data/com.bluestacks.appsettings",

// ========针对逍遥安卓模拟器===========

// 虚拟化网卡和pci,可能存在误判,不可靠

// "/sys/module/virtio_net",

"/data/data/com.microvirt.guide",

"/data/data/com.microvirt.installer",

"/data/data/com.microvirt.launcher",

"/data/data/com.microvirt.market",

"/data/data/com.microvirt.memuime",

"/data/data/com.microvirt.tools",

// ========针对Mumu模拟器===========

"/data/data/com.mumu.launcher",

"/data/data/com.mumu.store",

"/data/data/com.netease.mumu.cloner"

上面这些文件呢,有些查到一个就可以确定百分百是模拟器,你如果想隐藏或者删除,对不起,有些文件删不了,模拟器依赖文件,所以就没流传什么光靠删文件就能过检测的方法,当然呢,也不排除某些app就很呆,人家就只检测一个东西,又不是没有,但是咱们文章得严谨,不能以偏概全。不能像无知的人,随便遇到什么比如人家检测游戏中心的那个应用,他给人家删除了,或者有某个软件碰上了,就说可以过检测能改真机了,然后你拿去又用不了

所以你真的想完全改成真机,光是这些文件,就是不现实的事情,再包括一些传感器,比如距离传感器,光线传感器,蓝牙等等等等,你这些模拟器都是没有的,人家检测的话 一行代码的事情,你怎么知道人家写不写呢,还有的人说,哎呀程序员不可能这么傻,人家检测你这些干嘛。。。关键这些都是模拟器的特征 硬伤,人家多写点检测代码,反正拿工资的,为啥不写呢。。。而且我也不是没遇到过检测雷电游戏中心这些的app,而且还是逆出来代码直接看到的,怎么说呢,程序员写代码,查资料是肯定的,而且你想搞逆向,肯定要先熟悉正向,这里就不多谈杠精的事情了

总结一下,简单来说,检测cpu架构、模拟器特征文件(多出来的东西),模拟器相比真机缺失的东西,随便挑几个方法写点代码,一秒钟够检测几百项了,别觉得人家懒不写。所以,改真机,是真的,完全不可能的事情!下面再说说,假如程序员比较懒或者没太注意这方面,只是简单的检测,怎么去过检测呢?

先说一下最经典的xp框架,过检测,多多少少离不开xp框架,当然也有电脑上装环境然后也是一样的原理,只不过xp框架+模块是最终的一个给用户端实现的方式罢了,不然让你去装环境调试代码多麻烦啊,给你封装成现成的app,借助xp框架的环境,简单了吗不是,但是有很多人啊,他容易搞混,比如他只装了框架,又去隐藏框架,过这个框架的检测,其实你好好想一想,是不是有点多余。。人家用框架,都是有了对应的模块,哪怕再不济用个什么修改设备型号的总可能有用呗。

好了框架反正就是为了运行模块的,你得有能过检测的模块才行,不然框架你光拿着没有用滴,关于框架多的不讲了去看其他的文章

再总结,反正过检测,就是他检测什么,你就改什么,包括但不限于检测文件你删文件,检测型号你修改型号,检测cpu这种不能手动修改的,就去用能修改的模块之类的拦截修改,总之一句话,过他检测的东西,就行了

我看完了,大受震撼,但是我还是不知道怎么过检测

对啊。我就是让你明白一下原理,别稀里糊涂乱研究。我又不是骗钱圈钱的,我可以给你提供资料,工具,去研究去做,但是我不能瞎说什么东西能过检测,让你花钱去买了结果不能用,比如章鱼哥说他这个能过鲁大师,那章鱼哥这个确实能过鲁大师,鲁大师又不检测模拟器,或者我就专门针对鲁大师写个app去改鲁大师的检测结果,那你说你拿去能用在你的app上吗?

再说了,你以为过了检测,你就不封号啦。首先你不一定完全过掉了,因为人家真的可以不告诉你人家知道你是模拟器了,人家真的是可以通过后台,想封你的时候再封,而且不仅仅是设备,你的ip啊 。行为啊。一样是考量的依据,你用真机也是要封的哦。比如你20台手机,哪怕都是新买的 型号不一样的,你都连一个wifi,人家不封你封谁,你学聪明了,单窗口ip用上,哎呀结果账号注册的什么zhanghao001、zhanghao002连号的,人家不封你封谁(虽然很少但是肯定有),然后你20个角色同步操作,人家不封你封谁,哪怕你全国找20个人来分别搞,你最后都把资源转给一个大号,人家游戏方不想让你这样转,不封你封谁

所以别光想着过检测,格局要大,思维要发散。但是思路是好的,因为不管是检测什么,总得迈出一步,先过掉设备检测,挨个排除摸索,这个玩法是正确的

就暂时写到这吧,至于具体的去实现到哪个app上。真的只有自己研究了,我只能提供一些大概的方法和工具,要么你就去学一下java和C然后自己去逆向分析也行

目前可采用的几种方法

首先要从正向检测的角度触出发,举一个例子
String isAndroidSimulator = "";
if ((Build.FINGERPRINT.contains("vbox") || Build.MODEL.contains("Android SDK built for x86")) {
isAndroidSimulator = "Yes";
} else {
isAndroidSimulator = "No";
};

 

以上代码为ChatGPT生成,仅供参考。说明意思就行,不一定APP只检测了这几个。大概含义呢就是说:假如检测到VBox/X86这些特征,那isAndroidSimulator(是否为安卓模拟器)就是"Yes",也就认为你是模拟器。没有检测到呢,就是"No,表示不是模拟器,然后针对这种检测,一般采用以下几种方式修改

1.针对型的修改

首先最简单的办法,但也基本上用不了的,就是反编译解包,修改代码或者删除代码,然后再编译,但是一般App都有签名验证之类的,不太实用。

其次是使用XP模块的形式,像在这个例子里面,可以直接Hook掉isAndroidSimulator为 "Yes"即可,当然也可以Hook Build.FINGERPRINT或 Build.MODEL 也就是说 直接拦截修改他的代码,当然前提也是要反编译或者拦截怎么的,找出他的检测代码才可以

当然,有些检测很简单的,就不需要针对去做模块了,毕竟麻烦。比如他检测代码是检测你模拟器是否包含某个特征文件,你可以给这个文件删除,或者使用其他的手段,限制或者修改实际的结果即可,跟Hook也是差不多,只不过一个是Hook改中间,一个是直接修改结果,只是说某些东西没法直接去修改,比如X86这个特征,就只能用模块进行Hook修改,因为模拟器始终是运行在你电脑上的,电脑CPU就是x86,模拟器底层也是x86,没法改

2.通用型的修改

其实就是在上面方法1里面的一个延伸,因为大部分的APP检测代码都相似,或者说代码就那些,除非程序员特地去加了料,不然可能他们开发的时候抄的都是同一个例子。所以在这种情况下,一些通用的修改,就可以满足大部分的情况了,比如都是检测X86,也没有其他的代码,那找个能Hook修改成arm的就可以过掉这些

当然,某些APP限制比较严的情况下,他也不会光检测这么简单的东西,而且X86还包含了一些老型号的平板电脑,大厂为了兼容用户,也不一定就一棒子打死。而且他的检测代码,也不一定就只能写一句,对吧。比如他还可以检测模拟器其他的特征,甚至壁纸!这些简单的东西我在之前的文章已经说过了,这里就不再提

某些改机软件,就会Hook修改部分数据和文件,有的能把x86改(Hook)成arm的,再配合其他的一些工具,碰运气就可能碰的出来。

4 条回复 A文章作者 M管理员
  1. m114794508

    实用不错,学习了

  2. dasdas

    跟我猜想的一样有些只能通过反编译hook源码

  3. 飞鸟

    😍

个人中心
购物车
优惠劵
搜索