大概总结有以下几种情况和现象
APP在模拟器闪退、停止运行
APP提示环境异常、设备异常、网络异常、各种异常反正就是有问题
正常运行,但是被风控、封控、限制
一切正常,但是我就是想捣鼓这个让他更real
App在模拟器内打不开了(包括但不限于闪退或者中途闪退或提示),但是首先得确定,是他检测模拟器了,不然你折腾半天,他不是检测,或者什么就尴尬了。因为模拟器上不一定就兼容所有的app,或者兼容某个app的所有版本。通常情况下,如果直接提示你使用模拟器,或者环境异常的,那就基本上是检测模拟器了(包括但不限于以下提示:“设备环境异常”,“x86设备不支持”,“设备违规”等)。说一下不是检测模拟器的情况,比如打开直接闪退,有可能是这个app不兼容你用的模拟器,或者说APP需要安卓9以上才能用,你用安卓5或者7的模拟器打不开闪退,当然也存在说安卓5能运行,安卓7和9用不了的情况,所以得先多尝试。所以。。打不开的时候,除非你能明确判断他是检测模拟器,不然我推荐你先自己多测试测试,也别直接来问我,,这种东西涉及到app版本(起码试3个吧),模拟器各个版本(安卓5、7、9、更高,雷电、夜神、逍遥、mumu等三家起码试10几次),网络问题,甚至换电脑试排除硬件问题,
改真机改真机,我都说了无数遍了,改真机不可能,严谨一点,谢谢你们,不是光让某个app识别成真机或者某些app的部分检测识别到真机,这个是丝毫不严谨的,你问我能不能改真机,假如我能过1万款app的检测,但是市面上几十万款,哪怕牛逼完了能过99%,始终还有1%能检测到你是模拟器啊。这能叫改成真机吗?而且你继续往下看了,就知道为什么要这么严谨了。
首先,90%的人,只需要对他需要的app做过检测就行了,因为你做的就是app的项目,app检测不到就完事了,还有9%的人,就是属于那种半灌水,或者听了风就是雨的,感觉得全部改成真机才行,当然还有1%的人,他压根不懂,以为过检测就得全部改成真机的样子,看完多学习就懂了。
先从少的说,如果不止对app针对的过检测,要全部改成真机,要改什么呢?首先,系统架构、环境(x86改arm等等)你就不能用模块或者什么去hook(拦截修改)了,因为得全部是真机,这个在我的认知里是没法实现的,因为你电脑的cpu就是x86,也不是arm,硬件永远你不可能改成一样,除非你拿arm的电脑去搞,,然后又得扯到这些模拟器不支持arm了,得去搭建云手机系统了,还有就是一些特征性的差异,咱们先从开发者的角度下手,想一下如果你是app开发者你怎么来检测用户的设备是不是模拟器呢,比如壁纸模拟器固定是那些壁纸,以及一些应用,比如各个模拟器的游戏中心,文件管理器等等系统app都是模拟器独家定制的,还有一些特征性的文件:
文件仅举例 186项文件(篇幅原因已随机删除部分,详情可查看原文),查到一个文件就是百分百模拟器,权重最高
出处:https://blog.csdn.net/ljphhj/
“/data/youwave_id”,
“/dev/vboxguest”,
“/dev/vboxuser”,
“/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”,
针对逍遥安卓模拟器==
“/sys/module/virtio_net”,
“/data/data/com.microvirt.guide”,
“/data/data/com.microvirt.installer”,
针对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";
};
以上代码为ai生成,仅供参考。说明意思就行,不一定APP只检测了这几个。大概含义呢就是说:假如检测到VBox/X86这些特征,那isAndroidSimulator(是否为安卓模拟器)就是"Yes",也就认为你是模拟器。没有检测到呢,就是"No,表示不是模拟器,然后针对这种检测,一般采用以下几种方式修改
首先最简单的办法,但也基本上用不了的,就是反编译解包,修改代码或者删除代码,然后再编译,但是一般App都有签名验证之类的,不太实用。
其次是使用XP模块的形式,像在这个例子里面,可以直接Hook掉isAndroidSimulator为 "Yes"即可,当然也可以Hook Build.FINGERPRINT或 Build.MODEL 也就是说 直接拦截修改他的代码,当然前提也是要反编译或者拦截怎么的,找出他的检测代码才可以
当然,有些检测很简单的,就不需要针对去做模块了,毕竟麻烦。比如他检测代码是检测你模拟器是否包含某个特征文件,你可以给这个文件删除,或者使用其他的手段,限制或者修改实际的结果即可,跟Hook也是差不多,只不过一个是Hook改中间,一个是直接修改结果,只是说某些东西没法直接去修改,比如X86这个特征,就只能用模块进行Hook修改,因为模拟器始终是运行在你电脑上的,电脑CPU就是x86,模拟器底层也是x86,没法改
其实就是在上面方法1里面的一个延伸,因为大部分的APP检测代码都相似,或者说代码就那些,除非程序员特地去加了料,不然可能他们开发的时候抄的都是同一个例子。所以在这种情况下,一些通用的修改,就可以满足大部分的情况了,比如都是检测X86,也没有其他的代码,那找个能Hook修改成arm的就可以过掉这些
当然,某些APP限制比较严的情况下,他也不会光检测这么简单的东西,而且X86还包含了一些老型号的平板电脑,大厂为了兼容用户,也不一定就一棒子打死。而且他的检测代码,也不一定就只能写一句,对吧。比如他还可以检测模拟器其他的特征,甚至壁纸!这些简单的东西我在之前的文章已经说过了,这里就不再提
某些改机软件,就会Hook修改部分数据和文件,有的能把x86改(Hook)成arm的,再配合其他的一些工具,碰运气就可能碰的出来。