【一键新机】免root/不刷机/拒绝Xposed 实现 Android改机,全新技术分析。「建议收藏」

【一键新机】免root/不刷机/拒绝Xposed 实现 Android改机,全新技术分析。「建议收藏」此篇文章仅探讨Android底层技术。不提供任何软件和安装包……我们通过一些底层技术对手机中的各种基础信息进行一个修改。主要修改的参数有:Android_Id、IMEI、手机序列号、手机号码、WIFI-MAC、WIFI-Name、安卓系统版本、ROM固件、手机号码、手机型号、手机品牌、CPU型号、手机制造商、GPS定位、通话记录模拟、手机短信模拟……等各类安卓手机系统信息的修改功能…

大家好,又见面了,我是你们的朋友全栈君。

通常:我们通过一些底层技术对手机中的各种基础信息进行一个修改。包括机型参数和周围环境参数。

image

举例说明:主要修改的参数有:

Android_Id、IMEI、手机序列号、手机号码、WIFI-MAC、WIFI-Name、安卓系统版本、ROM固件、手机号码、手机型号、手机品牌、CPU型号、手机制造商、GPS定位、通话记录模拟、手机短信模拟、Wi-Fi列表 等……

等各类安卓手机系统信息的修改功能。


举例子:传统改机方式,使用xposed的代码:


HTool.XHookMethod(android.telephony.TelephonyManager.class.getName(),mLpp.classLoader, "getDeviceId", GetCatValue("imei"));
HTool.XHookMethod("com.android.internal.telephony.PhoneSubInfo",mLpp.classLoader, "getDeviceId", GetCatValue("imei"));
HTool.XHookMethod(android.telephony.TelephonyManager.class.getName(),mLpp.classLoader, "getSubscriberId", GetCatValue("imsi"));
HTool.XHookMethod(android.telephony.TelephonyManager.class.getName(),mLpp.classLoader, "getLine1Number", GetCatValue("number"));
HTool.XHookMethod(android.telephony.TelephonyManager.class.getName(),mLpp.classLoader, "getSimSerialNumber", GetCatValue("simserial"));
HTool.XHookMethod(android.telephony.TelephonyManager.class.getName(),mLpp.classLoader, "getSimCountryIso", GetCatValue("simcountryiso"));
HTool.XHookMethod(android.telephony.TelephonyManager.class.getName(),mLpp.classLoader, "getSimOperator", GetCatValue("simoperator"));
HTool.XHookMethod(android.telephony.TelephonyManager.class.getName(),mLpp.classLoader, "getSimOperatorName", GetCatValue("simoperatorname"));
HTool.XHookMethod(android.telephony.TelephonyManager.class.getName(),mLpp.classLoader, "getNetworkCountryIso", GetCatValue("networkcountryiso"));
HTool.XHookMethod(android.telephony.TelephonyManager.class.getName(),mLpp.classLoader, "getNetworkOperator", GetCatValue("networkoperator"));
HTool.XHookMethod(android.telephony.TelephonyManager.class.getName(),mLpp.classLoader, "getNetworkOperatorName", GetCatValue("networkoperatorname"));
 
//WIFI信息
HTool.XHookMethod(android.net.wifi.WifiInfo.class.getName(),mLpp.classLoader, "getMacAddress", GetCatValue("wifimac"));
HTool.XHookMethod(android.net.wifi.WifiInfo.class.getName(),mLpp.classLoader, "getBSSID", GetCatValue("bssid"));
HTool.XHookMethod(android.net.wifi.WifiInfo.class.getName(),mLpp.classLoader, "getSSID", "\""+GetCatValue("ssid")+"\"");
XposedHelpers.findAndHookMethod(java.net.NetworkInterface.class.getName(),mLpp.classLoader, "getHardwareAddress", new Object[] {
        new XC_MethodHook()
        {
            protected void afterHookedMethod(MethodHookParam param) throws Throwable
            {
                //每个安卓系统中 至少存在5个以上的MAC地址 
                //但大多数软件只修改了MAC和BSSID 
                //真正的MAC修改是在此处理函数中监听每次访问.
            }
        }});
         
//蓝牙信息
HTool.XHookMethod(BluetoothAdapter.class.getName(),mLpp.classLoader,"getAddress", GetCatValue("bluemac"));
HTool.XHookMethod(BluetoothAdapter.class.getName(),mLpp.classLoader, "getName", GetCatValue("bluename"));
 
//设置手机信息 无论手机是否插入了sim卡 都会模拟出SIM卡的信息 APP获得SIM卡消息时返回该手机已有SIM卡
HTool.XHookMethod(android.telephony.TelephonyManager.class.getName(),mLpp.classLoader, "getPhoneType", TelephonyManager.PHONE_TYPE_GSM);
HTool.XHookMethod(android.telephony.TelephonyManager.class.getName(),mLpp.classLoader, "getNetworkType", TelephonyManager.NETWORK_TYPE_HSPAP);
HTool.XHookMethod(android.telephony.TelephonyManager.class.getName(),mLpp.classLoader, "getSimState", TelephonyManager.SIM_STATE_READY);
HTool.XHookMethod(android.telephony.TelephonyManager.class.getName(),mLpp.classLoader, "hasIccCard", true);
 
     
//修改手机系统信息 此处是手机的基本信息 包括厂商 信号 ROM版本 安卓版本 主板 设备名 指纹名称等信息
XposedHelpers.setStaticObjectField(android.os.Build.class, "MODEL", GetCatValue("model"));
XposedHelpers.setStaticObjectField(android.os.Build.class, "MANUFACTURER", GetCatValue("manufacturer"));
XposedHelpers.setStaticObjectField(android.os.Build.class, "BRAND", GetCatValue("brand"));
XposedHelpers.setStaticObjectField(android.os.Build.class, "HARDWARE", GetCatValue("hardware"));
XposedHelpers.setStaticObjectField(android.os.Build.class, "BOARD", GetCatValue("board"));
XposedHelpers.setStaticObjectField(android.os.Build.class, "SERIAL", GetCatValue("serial"));
XposedHelpers.setStaticObjectField(android.os.Build.class, "DEVICE", GetCatValue("device"));
XposedHelpers.setStaticObjectField(android.os.Build.class, "ID", GetCatValue("id"));
XposedHelpers.setStaticObjectField(android.os.Build.class, "PRODUCT", GetCatValue("product"));
XposedHelpers.setStaticObjectField(android.os.Build.class, "DISPLAY", GetCatValue("display"));
XposedHelpers.setStaticObjectField(android.os.Build.class, "FINGERPRINT", GetCatValue("fingerprint"));
 
XposedHelpers.findAndHookMethod("android.os.SystemProperties",mLpp.classLoader, "native_get", new Object[] {String.class,String.class,
        new XC_MethodHook()
        {
            //为了防止某些APP跳过Build类 而直接使用SystemProperties.native_get获得参数
        }});
//修改系统版本 我看到世面上的软件基本上都是不能修改系统版本的 从而造成了刷量后 很多渠道最终会显示你的APP用户全部使用的某一系统版本
//这样的话数据就太假了.
XposedHelpers.setStaticObjectField(android.os.Build.VERSION.class, "RELEASE", GetCatValue("version"));
XposedHelpers.setStaticObjectField(android.os.Build.VERSION.class, "SDK", GetCatValue("apilevel"));
 
HTool.XHookMethod(android.os.Build.class.getName(),mLpp.classLoader, "getRadioVersion", GetCatValue("radioversion"));
 
//修改为指定的运营商mnc mcc信息
XposedHelpers.findAndHookMethod(android.content.res.Resources.class.getName(),mLpp.classLoader, "getConfiguration", new Object[] {
        new XC_MethodHook()
        {
            ...........................
            //此处的mnc和mcc必须和系统中其他关于运营商的数据对应!
        }});
 
//修改ANDROID_ID
XposedHelpers.findAndHookMethod(android.provider.Settings.Secure.class.getName(),mLpp.classLoader, "getString",
new Object[] {ContentResolver.class,String.class,
        new XC_MethodHook()
        {
            ...............................
            //此处会根据传入的String参数 判断返回值 其中包括比较关键的数据就是android_id
        }});
 
//防止APP使用Runtime.exec方式获取一些特定的系统属性
XposedHelpers.findAndHookMethod(Runtime.class.getName(),mLpp.classLoader, "exec",new Object[] {String.class,String[].class, File.class,
        new XC_MethodHook()
        {
            //一些APP从JAVA层获得到了数据 还会从shell(native)层获得一些更底层的数据 来判断用户的合法性
            //经常用到的有 cat、getprop、ifconfig等等命令,当exec执行这些命令后 往往会返回一些手机的真实信息
            //因为框架和处理方式不同,...部分此处根据自己需求,编写重定向返回值的过程...
        }});
 
//修改位置信息
XposedHelpers.findAndHookMethod(LocationManager.class.getName(),mLpp.classLoader, "getLastKnownLocation",
    new Object[] {String.class,
            new XC_MethodHook()
            {
                ..........................
                //返回预先设置好的经纬度信息以伪装地理位置
            }});
 
HTool.XHookMethod(Location.class.getName(),mLpp.classLoader, "getLatitude", latitude);
HTool.XHookMethod(Location.class.getName(),mLpp.classLoader, "getLongitude", longitude);
 
 
//修改GSM制式手机的基站信息
HTool.XHookMethod(android.telephony.gsm.GsmCellLocation.class.getName(),mLpp.classLoader, "getLac", GsmLac);
HTool.XHookMethod(android.telephony.gsm.GsmCellLocation.class.getName(),mLpp.classLoader, "getCid", GsmCid);
 
 
//修改CDMA制式手机的基站信息
HTool.XHookMethod(android.telephony.cdma.CdmaCellLocation.class.getName(),mLpp.classLoader, "getBaseStationLatitude", CdmaLatitude);
HTool.XHookMethod(android.telephony.cdma.CdmaCellLocation.class.getName(),mLpp.classLoader, "getBaseStationLongitude", CdmaLongitude);
HTool.XHookMethod(android.telephony.cdma.CdmaCellLocation.class.getName(),mLpp.classLoader, "getBaseStationId", CdmaBid);
HTool.XHookMethod(android.telephony.cdma.CdmaCellLocation.class.getName(),mLpp.classLoader, "getSystemId", CdmaSid);
HTool.XHookMethod(android.telephony.cdma.CdmaCellLocation.class.getName(),mLpp.classLoader, "getNetworkId", CdmaNid);
 
 
//模拟手机的APP列表
XposedHelpers.findAndHookMethod("android.app.ApplicationPackageManager",mLpp.classLoader, "getInstalledPackages",new Object[] {int.class,
        new XC_MethodHook()
        {
            //此处模拟正常用户的APP列表 其中随机的增加和删除一些常用APP 以达到每个手机的APP有很大的随意性和合理性
        }});
 
XposedHelpers.findAndHookMethod("android.app.ApplicationPackageManager",mLpp.classLoader, "getInstalledApplications",new Object[] {int.class,
        new XC_MethodHook()
        {
            //此处模拟正常用户的APP列表 其中随机的增加和删除一些常用APP 以达到每个手机的APP有很大的随意性和合理性
        }});
         
//防止APP的VPN SOCK5 HTTP代理检测
XposedHelpers.findAndHookMethod(java.net.NetworkInterface.class.getName(),mLpp.classLoader, "getNetworkInterfacesList",new Object[] {
        new XC_MethodHook()
        {
            ........................................
            //此处对于一些连接信息 对JAVA做了隐藏处理 但对于系统和Native层依然是可见的 所以APP不会检测到代理 但代理却可以正常的运行...
        }});

赠送源码:https://github.com/Pangu-Immortal【一键新机】免root/不刷机/拒绝Xposed 实现 Android改机,全新技术分析。「建议收藏」https://github.com/Pangu-Immortal无论你做的多么天衣无缝,你手机root了,就拜拜……root环境是所有软件安全性检测的第一要点,必须免root。。

还有Xposed的路径和包名都是被检测的重点……改了Xposed源码也没用的,我有一千种方式知道你用了Xposed框架。

有些人使用VirtualXposed这种不root手机,利用分身的方式。主要缺点:

  • 第一:比root手机卡
  • 第二:依然还是xposed
  • 第三:适配性很差,经常闪退

还有很多种方式,不用Xposed也不用root手机 ,改机的方式千千万……其中下下策 就比如:太极,VirtualXposed。必封号。

  • 自己开发Rom,利用系统权限,是目前各大商业版使用最多的方式,但是适配很差,机型单一。

你只能告诉你,至少有20种方式免root改机……Android所有的设备数据都是烧录在芯片里是无法修改的,只能读取。我们所有的操作都是针对这个读取类。修改他的读取值。

用xposed的缺点:

  • Xposed需要替换/system/bin/app_process,因此需要手机获得root权限;
  • Xposed 实现的hook在java层,只能修改通过JAVA层获取的设备参数。不能修改C++层。
  • 手机需要安装XposedInstaller.apk; 
  • xposed 是AOP切面编程,对于每一次的JAVA调用,都会执行Xposed的hook函数,对系统性能有较大影响。

      xposed 是对虚拟机的hook,  xposed只修改了通过JAVA层获取的设备参数。

      java层获取设备信息只是android标准的获取方式,还有多种获取设备信息的方法,专业的检查工具通常会通过C++的 jni调用,同时在native 层做设备检查, xposed 对这一层的操作无能为力。或者通过设备属性获取,xposed也是没有办法修改。检测不同方式获取设备信息的一致性,凭此一点便可判断是否虚假设备信息。

如此不完整的修改还不如不改。

市场上能买到的改机软件有这么几类:

  • 修改系统类文件,改变从芯片里读取的参数,封装新的ROM包;(每次改机必须重启)
  • 直接刷一个带xposed的root包,然后删除超级管理员,表面看着还是没root。(或者使用xposed 有RootCloak(Root隐藏),但是依然还是使用的xposed,改完参数不用重启。只要用了xposed就会秒死。)
  • 基于VirtualApp商业版虚拟环境开发,把WX.apk安装进虚拟环境里,虚拟环境可以任意操控它内部安装的所有apk(不用刷机,不需要重启,而且不挑机型,只要安装一个VirtualApp就能搞定。)

市场上9成的改机都是使用的xposed。举例:

  • 小鸟改机
  • 微狗改机
  • WG改机

还有很多需要你root手机的改机。看他们内部的源码如下。只是提前写死在包内十几个固定的机型。来回切换。而且参数很少。

【一键新机】免root/不刷机/拒绝Xposed 实现 Android改机,全新技术分析。「建议收藏」


讲文明、懂礼貌。公共场所禁止吸烟。新时代文明好青年,从你我做起。

        使用VA(VirtualApp)商业版。(这是一个最无耻的库,给程序员丢人了。)这是目前改机最稳定的思路,也是使用上最简单的方式。通过修改VA的系统文件。模拟系统的app_process文件。相当于一个mini系统,所以不用刷机也不用xposed。使用简单方便。只有4M,只操作分身就可以提高运行速度。可以适配99%的国内手机。适配Android 12 并且适配了32位和64位。

VirtualApp开源库:(思路就是这个思路,非常简单,自己写一个就行了,没必要花钱

VirtualApp 商业版 真的是 即无耻又死贵,他申请了专利,就不让别人开发类似的功能了。。。。。你如果只是在家弄个几十台手机的机架,刷刷乱七八糟的业务,又不对外用,更不会让外人知道。。。肯定不会买商业版授权的。。其实也值不得买。


赠送源码:https://github.com/Pangu-Immortal:?免root实现 Android改机(一键新机)技术解密,微信无限多开等。

【一键新机】免root/不刷机/拒绝Xposed 实现 Android改机,全新技术分析。「建议收藏」

讲文明、懂礼貌。公共场所禁止吸烟。新时代文明好青年,从你我做起。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133653.html原文链接:https://javaforall.net

(1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vs2017 c语言 安装教程,Visual Studio 2017 IDE安装使用图文教程「建议收藏」

    vs2017 c语言 安装教程,Visual Studio 2017 IDE安装使用图文教程「建议收藏」本文为大家分享了VisualStudio2017IDE的安装与最基本使用,供大家参考,具体内容如下首先,进入VisualStudio的官网下载最新版本的VSIDE(目前是VS2017):VS2017下载地址打开网页,点击红色画笔圈起的按钮然后会下载下来一个文件,点击它,会弹出一个这样的窗口点击“继续”,稍等一小会之后正式进入安装界面然后点击红圈内的“安装”VisualStudioCommu…

    2022年5月13日
    122
  • 1.网络工具:ifconfig,ping,netstate,Redhat命令和图形化设置ip,finger,nslookup

    1.网络工具:ifconfig,ping,netstate,Redhat命令和图形化设置ip,finger,nslookup

    2022年1月13日
    51
  • Chango的数学Shader世界(二十三)漩涡Shader-复数分析(深渊)「建议收藏」

    Chango的数学Shader世界(二十三)漩涡Shader-复数分析(深渊)「建议收藏」目的:我的2D游戏,需要一个有特定感觉的“漩涡shader”。上一节里,我简单实现了这个:但转动有些乏味,它的转动动作是类似这样的:(网图)接下来想让它动起来更加深邃,恐怖。本文先搞了2种效果:(图3,扩散瞳孔)(图4,深渊)抽象分析:前篇的Shader效果之所以看起来乏味,是因为在旋转的时候,像素点的极长(以方块中心为原点极坐标系)并没有改变,只是越接近中心,点的旋转量越小而已。(旋转前后点都在同心圆上)如果我想要深渊有“吃人”的感觉,那么内部的

    2022年6月19日
    37
  • pycharm鼠标滚动控制字体大小_pycharm窗口放大

    pycharm鼠标滚动控制字体大小_pycharm窗口放大1、放大页面方法第一步:打开file里面的setting,然后打开Keymap,再搜索框中输入increase,点击increaseFontSize,双击AddMouseShortcut(先不用点OK)第二步:点击AddMouseShortcut弹出下面对话框,然后按住ctrl并向上滚动鼠标滑轮,将变成第二个对话框,点击OK;第三步:显示下面页面表示设置放大成功,点击OK即可。2、缩小页面方法与上面方法类似,将increase变成decrease输入即可;…

    2022年8月26日
    5
  • 周易经典语录 名句集锦_感悟人生的句子 励志

    周易经典语录 名句集锦_感悟人生的句子 励志《周易》亦称《易经》,简称《易》,此书是我国最早的哲学著作,为“六经之首”,其中也有大量反映古代生活的歌谣。古代有《连山》、《归藏》、《周易》三种不同系统的易学。《连山》据说是夏代的易学,《归藏》是殷代的易学,《周易》是周代的易学。前二书皆佚,今只存《周易》。1.居上位而不骄,在下位而不忧。出自《易经·乾传》。释义:在上位不骄傲自大,在下位就无须担忧了。2.人之所助者,信也。出自《易经…

    2022年8月18日
    11
  • MySQL锁详解

    MySQL锁详解根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类一、全局锁全局锁就是对整个数据库实例加锁。MySQL提供了一个加全局读锁的方法,命令是Flushtableswithreadlock。当需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句全局锁的…

    2022年4月30日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号