没有合适的资源?快使用搜索试试~
我知道了~
免root实现 Android改机(一键新机)技术解密。
2星
2w+ 浏览量
2021-01-20
08:48:09
评论
26
收藏
575KB
PDF
举报
温馨提示
此篇文章仅探讨Android底层技术。不提供任何软件和安装包…… 我们通过一些底层技术对手机中的各种基础信息进行一个修改。 举例说明:主要修改的参数有: Android_Id、IMEI、手机序列号、手机号码、WIFI-MAC、WIFI-Name、安卓系统版本、ROM固件、手机号码、手机型号、手机品牌、CPU型号、手机制造商、GPS定位、通话记录模拟、手机短信模拟…… 等各类安卓手机系统信息的修改功能。 举例子:统改机方式,使用xposed的代码: HTool.XHookMethod(android.telephony.TelephonyManager.class.getName(),mLp
免
免
root
实
现
实现
And
roid
改机(
一键新机
)技术解密
。
改机(
一键新机)
技术解密
。
此篇文章仅探
讨
Android
底层技术。
不提供任何软件和安
装包
……
我们通过一些
底层技术对手机中的
各种基础信息进行一
个修改。
举例说明:主
要修改的参数有:
Android_Id
、
IM
EI
、手机序列号、手
机号码、
WIFI-MAC
、
WIFI-Name
、安卓系统
版本、
ROM
固件、手
机号码、手机型号、手
机品牌、
CPU
型号、
手机制造商、
GPS
定
位、通话记录模拟、
手机短信模
拟
……
等各类安卓手
机系统信息的修改功
能。
举例子:统改
机方式,使用
xposed
的代码:
HTool.XHookMeth
od(android.telephony.Telephony
Manager.class.getName(),mL
pp.classLoader, "getDeviceId", G
etCatValue("imei"));
HTool.XHookMeth
od("com.android.internal.telepho
ny.PhoneSubInfo",mLpp.classLo
ader, "getDeviceId", GetCatValu
e("imei"));
HTool.XHookMeth
od(android.telephony.Telephony
Manager.class.getName(),mL
pp.classLoader, "getSubscriberI
d", GetCatValue("imsi"));
HTool.XHookMeth
od(android.telephony.Telephony
Manager.class.getName(),mL
pp.classLoader, "getLine1Numb
er", GetCatValue("number"));
HTool.XHookMeth
od(android.telephony.Telephony
Manager.class.getName(),mL
pp.classLoader, "getSimSerialNu
mber", GetCatValue("simseria
l"));
HTool.XHookMeth
od(android.telephony.Telephony
Manager.class.getName(),mL
pp.classLoader, "getSimCountry
Iso", GetCatValue("simcountry
iso"));
HTool.XHookMeth
od(android.telephony.Telephony
Manager.class.getName(),mL
pp.classLoader, "getSimOperato
r", GetCatValue("simoperator")
);
HTool.XHookMeth
od(android.telephony.Telephony
Manager.class.getName(),mL
pp.classLoader, "getSimOperato
rName", GetCatValue("simope
ratorname"));
HTool.XHookMeth
od(android.telephony.Telephony
Manager.class.getName(),mL
pp.classLoader, "getNetworkCo
untryIso", GetCatValue("networ
kcountryiso"));
HTool.XHookMeth
od(android.telephony.Telephony
Manager.class.getName(),mL
pp.classLoader, "getNetworkOp
erator", GetCatValue("networko
perator"));
HTool.XHookMeth
od(android.telephony.Telephony
Manager.class.getName(),mL
pp.classLoader, "getNetworkOp
eratorName", GetCatValue("net
workoperatorname"));
//WIFI
信息
HTool.XHookMeth
od(android.net.wifi.WifiInfo.class
.getName(),mLpp.classLoader
, "getMacAddress", GetCatValu
e("wifimac"));
HTool.XHookMeth
od(android.net.wifi.WifiInfo.class
.getName(),mLpp.classLoader
, "getBSSID", GetCatValue("bss
id"));
HTool.XHookMeth
od(android.net.wifi.WifiInfo.class
.getName(),mLpp.classLoader
, "getSSID", "\""+GetCatValue("s
sid")+"\"");
XposedHelpers.fin
dAndHookMethod(java.net.Netw
orkInterface.class.getName(),
mLpp.classLoader, "getHardwa
reAddress", new Object[] {
new XC_Meth
odHook()
{
protected v
oid afterHookedMethod(Method
HookParam param) throws Th
rowable
{
//
每个安
卓系统中
至少存在
5
个以上
的
MAC
地址
//
但大多
数软件只修改了
MAC
和
BSS
ID
//
真正的
MAC
修改是在此处理函数中
监听每次访问
.
}
}});
//
蓝牙信息
HTool.XHookMeth
od(BluetoothAdapter.class.getN
ame(),mLpp.classLoader,"getA
ddress", GetCatValue("bluemac
"));
HTool.XHookMeth
od(BluetoothAdapter.class.getN
ame(),mLpp.classLoader, "getN
ame", GetCatValue("bluename
"));
//
设置手机信息
无论手机是否插入了
sim
卡
都会模拟出
SIM
卡的信息
A
PP
获得
SIM
卡消息时返回该
手机已有
SIM
卡
HTool.XHookMeth
od(android.telephony.Telephony
Manager.class.getName(),mL
pp.classLoader, "getPhoneType"
, TelephonyManager.PHONE_T
YPE_GSM);
HTool.XHookMeth
od(android.telephony.Telephony
Manager.class.getName(),mL
pp.classLoader, "getNetworkTy
pe", TelephonyManager.NETW
ORK_TYPE_HSPAP);
HTool.XHookMeth
od(android.telephony.Telephony
Manager.class.getName(),mL
pp.classLoader, "getSimState", T
elephonyManager.SIM_STATE
_READY);
HTool.XHookMeth
od(android.telephony.Telephony
Manager.class.getName(),mL
pp.classLoader, "hasIccCard", t
rue);
//
修改手机系统
信息
此处是手机的基本信息
包括厂商
信号
ROM
版本
安卓版本
主板
设备名
指纹
名称等信息
XposedHelpers.se
tStaticObjectField(android.os.Bu
ild.class, "MODEL", GetCatValu
e("model"));
XposedHelpers.se
tStaticObjectField(android.os.Bu
ild.class, "MANUFACTURER"
, GetCatValue("manufacturer"))
;
XposedHelpers.se
tStaticObjectField(android.os.Bu
ild.class, "BRAND", GetCatValu
e("brand"));
XposedHelpers.se
tStaticObjectField(android.os.Bu
ild.class, "HARDWARE", GetC
atValue("hardware"));
XposedHelpers.se
tStaticObjectField(android.os.Bu
ild.class, "BOARD", GetCatValu
e("board"));
XposedHelpers.se
tStaticObjectField(android.os.Bu
ild.class, "SERIAL", GetCatValue
("serial"));
XposedHelpers.se
tStaticObjectField(android.os.Bu
ild.class, "DEVICE", GetCatValu
e("device"));
XposedHelpers.se
tStaticObjectField(android.os.Bu
ild.class, "ID", GetCatValue("id"
));
XposedHelpers.se
tStaticObjectField(android.os.Bu
ild.class, "PRODUCT", GetCat
Value("product"));
XposedHelpers.se
tStaticObjectField(android.os.Bu
ild.class, "DISPLAY", GetCatVal
ue("display"));
XposedHelpers.se
tStaticObjectField(android.os.Bu
ild.class, "FINGERPRINT", Ge
tCatValue("fingerprint"));
XposedHelpers.fin
dAndHookMethod("android.os.S
ystemProperties",mLpp.classL
oader, "native_get", new Object[
] {String.class,String.class,
new XC_Meth
odHook()
{
//
为了防止
某些
APP
跳过
Build
类
而直接
使用
SystemProperties.native_
get
获得参数
}});
//
修改系统版本
我看到世面上的软件基本上
都是不能修改系统版本的
从而造成了刷量后
很多渠
道最终会显示你的
APP
用户
全部使用的某一系统版本
//
这样的话数据
就太假了
.
XposedHelpers.se
tStaticObjectField(android.os.Bu
ild.VERSION.class, "RELEASE"
, GetCatValue("version"));
评论2