implementation 'fairy.easy:mobilehardware:{latest-version}'
PackageHelper.getPackageInfo(getApplicationContext())
{
"appName":"MobileInfo",
"packageName":"com.mobile.mobileinfo",
"packageSign":"521cec5eb6984bc70f5b2a27e437b979",
"appVersionCode":"1",
"appVersionName":"1.0"
}
数据键 |
数据类型 |
数据解释 |
appName |
String |
app名字 |
packageName |
String |
app包名 |
packageSign |
String |
app包签名 |
appVersionCode |
String |
app版本号 |
appVersionName |
String |
app版本名 |
ListAppHelper.mobListApp(getApplicationContext())
[
{
"packageName":"com.huawei.android.tips",
"versionName":"1.0",
"versionCode":"1",
"isSystem":"false"
}
]
数据键 |
数据类型 |
数据解释 |
packageName |
String |
app包名 |
appVersionCode |
String |
app版本号 |
appVersionName |
String |
app版本名 |
isSystem |
String |
是否是系统app |
AudioHelper.mobGetMobAudio(getApplicationContext())
{
"maxVoiceCall":"15",
"currentVoiceCall":"3",
"maxSystem":"15",
"currentSystem":"0",
"maxRing":"15",
"currentRing":"0",
"maxMusic":"15",
"currentMusic":"0",
"maxAlarm":"15",
"currentAlarm":"0"
}
数据键 |
数据类型 |
数据解释 |
maxVoiceCall |
String |
最大通话音量 |
currentVoiceCall |
String |
当前通话音量 |
maxSystem |
String |
最大系统音量 |
currentSystem |
String |
当前系统音量 |
maxRing |
String |
最大铃声音量 |
currentRing |
String |
当前铃声音量 |
maxMusic |
String |
最大音乐音量 |
currentMusic |
String |
当前音乐音量 |
maxAlarm |
String |
最大提示声音音量 |
currentAlarm |
String |
当前提示声音音量 |
BandHelper.mobGetBandInfo()
{
"baseBand":"21C30B323S006C000,21C30B323S006C000",
"innerBand":"STF-AL00 8.0.0.360(C00GT)",
"linuxBand":"$unknown"
}
数据键 |
数据类型 |
数据解释 |
baseBand |
String |
基带版本 |
innerBand |
String |
内部版本 |
linuxBand |
String |
linux内核版本 |
BatteryHelper.mobGetBattery(getApplicationContext())
{
"br":"74.0%",
"status":"charging",
"plugState":"usb",
"health":"good",
"present":"true",
"technology":"Li-poly",
"temperature":"33℃",
"voltage":"4.068V",
"power":"3100.0mAh"
}
数据键 |
数据类型 |
数据解释 |
br |
String |
电量百分比 |
status |
String |
电池状态 |
plugState |
String |
电池充电状态 |
health |
String |
电池健康状况 |
present |
String |
是否有电池 |
technology |
String |
电池的技术制造 |
temperature |
String |
电池温度 |
voltage |
String |
电池电压 |
power |
String |
电池总电量 |
CpuInternals.getInstance().getCpuSampler().start();
CpuInternals.getInstance().getCpuSampler().getCpuList();
CpuInternals.getInstance().getCpuSampler().stop();
BluetoothHelper.mobGetMobBluetooth(getApplicationContext())
{
"bluetoothAddress":"$unknown",
"isEnabled":"true",
"device":[
{
"name":"iPhone",
"address":"E4:9A:79:89:C7:24",
}
],
"phoneName":"Honor"
}
数据键 |
数据类型 |
数据解释 |
bluetoothAddress |
String |
蓝牙地址 |
isEnabled |
String |
蓝牙是否打开 |
device |
JSONArray |
连接的手机的信息 |
name |
String |
连接手机的蓝牙地址 |
address |
String |
连接手机的蓝牙名字 |
phoneName |
String |
手机设置的名字 |
BuildHelper.mobGetBuildInfo()
{
"board":"STF",
"bootloader":"unknown",
"brand":"HONOR",
"device":"HWSTF",
"display":"STF-AL00 8.0.0.360(C00GT)",
"fingerprint":"HONOR/STF-AL00/HWSTF:8.0.0/HUAWEISTF-AL00/360(C00GT):user/release-keys",
"hardware":"hi3660",
"host":"WUH1000129106",
"id":"HUAWEISTF-AL00",
"manufacturer":"HUAWEI",
"model":"STF-AL00",
"product":"STF-AL00",
"radio":"21C30B323S006C000,21C30B323S006C000",
"serial":"8BN0217901012695",
"tags":"release-keys",
"time":"1553851883000",
"type":"user",
"user":"test",
"osVersion":"HONOR/STF-AL00/HWSTF:8.0.0/HUAWEISTF-AL00/358(C00GT):user/release-keys",
"releaseVersion":"8.0.0",
"codeName":"$unknown",
"incremental":"360(C00GT)",
"sdkInt":"26",
"previewSdkInt":"0",
"securityPatch":"2019-04-05"
}
数据键 |
数据类型 |
数据解释 |
board |
String |
主板名称 |
bootloader |
String |
系统引导程序版本号 |
brand |
String |
系统定制商 |
device |
String |
设备参数 |
display |
String |
显示屏参数 |
fingerprint |
String |
硬件名 |
hardware |
String |
内核命令行中的硬件名 |
host |
String |
host |
id |
String |
标签 |
manufacturer |
String |
硬件厂商 |
model |
String |
版本 |
product |
String |
手机厂商 |
radio |
String |
无线电固件的版本字符串 |
serial |
String |
获取硬件序列号 |
tags |
String |
描述Build的标签 |
time |
String |
time |
type |
String |
type |
user |
String |
user |
osVersion |
String |
os版本 |
releaseVersion |
String |
版本 |
codeName |
String |
当前开发代码名称 |
incremental |
String |
基础源代码控件用于表示此构建的内部值 |
sdkInt |
String |
SDK的版本 |
previewSdkInt |
String |
SDK的预览版本 |
securityPatch |
String |
用户可见的安全补丁程序级别 |
CameraHelper.getCameraInfo(getApplicationContext())
{
"cameraInfo":[
{
"cameraFacing":"back",
"cameraLevel":"limited",
"cameraFlashInfo":"true",
"outputFormats":[
"raw_sensor",
"jpeg",
"private",
"yuv_420_888",
"depth16"
]
}
]
}
数据键 |
数据类型 |
数据解释 |
cameraInfo |
JSONArray |
摄像头信息 |
cameraFacing |
String |
摄像头的位置 |
cameraLevel |
String |
摄像头支持水平 |
cameraFlashInfo |
String |
是否有闪光灯 |
outputFormats |
JSONArray |
摄像头支持的格式 |
CpuHelper.mobGetCpuInfo()
{
"cpuName":"0",
"cpuFreq":"1844000KHZ",
"cpuMaxFreq":"1844000KHZ",
"cpuMinFreq":"533000KHZ",
"cpuHardware":"hi3660",
"cpuCores":"8",
"cpuTemp":"36℃",
"cpuAbi":"arm64-v8a,armeabi-v7a,armeabi"
}
数据键 |
数据类型 |
数据解释 |
cpuName |
String |
CPU名字 |
cpuFreq |
String |
CPU频率 |
cpuMaxFreq |
String |
CPU最大频率 |
cpuMinFreq |
String |
CPU最小频率 |
cpuHardware |
String |
CPU硬件名 |
cpuCores |
String |
CPU核数 |
cpuTemp |
String |
CPU温度 |
cpuAbi |
String |
CPU架构 |
DebugHelper.getDebuggingData(getApplicationContext())
{
"isOpenDebug":"true",
"isDebugVersion":"true",
"isDebugging":"false",
"isReadProcStatus":"false",
"isAllowMockLocation":"false"
}
数据键 |
数据类型 |
数据解释 |
isOpenDebug |
String |
是否开启了调试模式 |
isDebugVersion |
String |
是否是Debug版本 |
isDebugging |
String |
是否正在调试 |
isReadProcStatus |
String |
读取id判断是否在调试 |
isAllowMockLocation |
String |
是否打开位置模拟 |
EmulatorHelper.mobCheckEmulator(getApplicationContext())
{
"checkBuild":"false",
"checkPkg":"false",
"checkPipes":"false",
"checkQEmuDriverFile":"false",
"checkHasLightSensorManager":"false",
"checkCpuInfo":"false"
}
数据键 |
数据类型 |
数据解释 |
checkBuild |
String |
build |
checkPkg |
String |
包名修改 |
checkPipes |
String |
管道检测 |
checkQEmuDriverFile |
String |
驱动程序检测 |
checkHasLightSensorManager |
String |
光传感器检测 |
checkCpuInfo |
String |
cpu架构检测 |
HookHelper.isXposedHook(getApplicationContext())
{
"xposedInfo":{
"checkXposedPackage":"false",
"checkXposedHookMethod":"false",
"checkXposedJars":"false",
"checkClassLoader":"false",
"checkNativeMethod":"false",
"checkSystem":"false",
"checkExecLib":"false",
"checkCheckman":"false",
"checkXposedBridge":"false"
},
"substrateInfo":{
"checkSubstratePackage":"false",
"checkSubstrateHookMethod":"false",
"checkSubstrateJars":"false"
},
"fridaInfo":{
"checkRunningProcesses":"false",
"checkFridaJars":"false"
}
}
数据键 |
数据类型 |
数据解释 |
xposedInfo |
JSONObject |
Xposed信息 |
checkXposedPackage |
String |
包名检测 |
checkXposedHookMethod |
String |
检测调用栈中的可疑方法 |
checkXposedJars |
String |
检测内存中可疑的jars |
checkClassLoader |
String |
检测载入Xposed工具类 |
checkNativeMethod |
String |
判断系统方法调用钩子 |
checkSystem |
String |
虚拟检测Xposed环境 |
checkExecLib |
String |
寻找Xposed运行库文件 |
checkCheckman |
String |
内核查找Xposed链接库 |
checkXposedBridge |
String |
环境变量特征字判断 |
substrateInfo |
JSONObject |
Substrate信息 |
checkSubstratePackage |
String |
包名检测 |
checkSubstrateHookMethod |
String |
检测调用栈中的可疑方法 |
checkSubstrateJars |
String |
检测内存中可疑的jars |
fridaInfo |
JSONObject |
Frida信息 |
checkRunningProcesses |
String |
检测进程信息 |
checkFridaJars |
String |
检测内存中可疑的jars |
LocalHelper.mobGetMobLocal()
{
"country":"CN",
"language":"zh"
}
数据键 |
数据类型 |
数据解释 |
country |
String |
当前国家 |
language |
String |
当前语言 |
MemoryHelper.getMemoryInfo(getApplicationContext())
{
"ramMemoryTotal":"3.90 GB",
"ramMemoryAvailable":"1.56 GB",
"romMemoryAvailable":"40.22 GB",
"romMemoryTotal":"56.30 GB",
"sdCardMemoryAvailable":"40.20 GB",
"sdCardMemoryTotal":"56.28 GB"
}
数据键 |
数据类型 |
数据解释 |
ramMemoryTotal |
String |
RAM全部内存 |
ramMemoryAvailable |
String |
RAM可用内存 |
romMemoryAvailable |
String |
ROM可用内存 |
romMemoryTotal |
String |
ROM全部内存 |
sdCardMemoryAvailable |
String |
内存卡可用内存 |
sdCardMemoryTotal |
String |
内存卡全部内存 |
MoreOpenHelper.checkVirtual(getApplicationContext())
{
"checkByPrivateFilePath":"false",
"checkByMultiApkPackageName":"false",
"checkByHasSameUid":"false"
}
数据键 |
数据类型 |
数据解释 |
checkByPrivateFilePath |
String |
检测私有路径 |
checkByMultiApkPackageName |
String |
maps检测 |
checkByHasSameUid |
String |
ps检测 |
NetWorkHelper.mobGetMobNetWork(getApplicationContext())
{
"type":"WIFI",
"networkAvailable":"true",
"haveIntent":"false",
"isFlightMode":"false",
"isNFCEnabled":"true",
"isHotspotEnabled":"false",
"hotspotSSID":"$unknown",
"hotspotPwd":"$unknown",
"encryptionType":"$unknown"
}
数据键 |
数据类型 |
数据解释 |
type |
String |
网络类型 |
networkAvailable |
String |
网络是否可用 |
haveIntent |
String |
是否开启数据流量 |
isFlightMode |
String |
是否是飞行模式 |
isNFCEnabled |
String |
NFC功能是否开启 |
isHotspotEnabled |
String |
是否开启热点 |
hotspotSSID |
String |
热点账号 |
hotspotPwd |
String |
热点密码 |
encryptionType |
String |
热点加密类型 |
RootHelper.mobileRoot(getApplicationContext())
ScreenHelper.mobGetMobScreen(getApplicationContext())
{
"densityScale":"3.0",
"densityDpi":"480",
"width":"1080",
"height":"1920",
"isScreenAuto":"false",
"isScreenAutoChange":"false",
"screenBrightness":"114"
}
数据键 |
数据类型 |
数据解释 |
densityScale |
String |
当前屏幕密度与标准屏幕密度的比值 |
densityDpi |
String |
屏幕密度 |
width |
String |
屏幕宽度 |
height |
String |
屏幕高度 |
isScreenAuto |
String |
亮度是否为自动调节 |
isScreenAutoChange |
String |
屏幕亮度 |
screenBrightness |
String |
屏幕是否开启自动旋转 |
SDCardHelper.mobGetSdCard()
{
"isSDCardEnable":"true",
"getSDCardPath":"/storage/emulated/0"
}
数据键 |
数据类型 |
数据解释 |
isSDCardEnable |
String |
SDCard是否可用 |
getSDCardPath |
String |
SDCard的路径 |
SettingsHelper.mobGetMobSettings(getApplicationContext())
{
"androidId":"f573c0f6ca5178a2"
}
数据键 |
数据类型 |
数据解释 |
androidId |
String |
androidId |
SignalHelper.mobGetNetRssi(getApplicationContext())
{
"type":"WIFI",
"bssid":"82:2a:a8:1b:58:de",
"ssid":"GPNL",
"ipAddress":"192.168.1.73",
"ipAddressIpv6":"$unknown",
"macAddress":"D8:C7:71:E4:48:B9",
"networkId":"93",
"linkSpeed":"86Mbps",
"rssi":"-53",
"level":"4",
"supplicantState":"COMPLETED",
"proxy":"false",
"proxyAddress":"$unknown",
"proxyPort":"$unknown"
}
数据键 |
数据类型 |
数据解释 |
type |
String |
网络类型 |
bssid |
String |
bssid |
ssid |
String |
ssid |
ipAddress |
String |
ipv4 |
ipAddressIpv6 |
String |
ipv6 |
macAddress |
String |
mac地址 |
networkId |
String |
网络id |
linkSpeed |
String |
网络速度 |
rssi |
String |
信号强度 |
level |
String |
信号等级 |
supplicantState |
String |
连接状态 |
proxy |
String |
是否开启代理 |
proxyAddress |
String |
代理地址 |
proxyPort |
String |
代理端口号 |
SimCardHelper.mobileSimInfo(getApplicationContext())
{
"sim1Imei":"$unknown",
"sim2Imei":"866957032955878",
"sim1Imsi":"460037121038284",
"sim2Imsi":"$unknown",
"simSlotIndex":"0",
"meid":"A000007ADE42E2",
"sim1ImsiOperator":"CT",
"sim2ImsiOperator":"$unknown",
"sim1Ready":"true",
"sim2Ready":"false",
"isTwoCard":"false",
"isHaveCard":"true",
"operator":"CT"
}
数据键 |
数据类型 |
数据解释 |
sim1Imei |
String |
卡1IMEI |
sim2Imei |
String |
卡2IMEI |
sim1Imsi |
String |
卡1IMSI |
sim2Imsi |
String |
卡2IMSI |
simSlotIndex |
String |
有流量的卡的卡槽id |
meid |
String |
MEID |
sim1ImsiOperator |
String |
卡1运营商 |
sim2ImsiOperator |
String |
卡2运营商 |
sim1Ready |
String |
卡1是否激活 |
sim2Ready |
String |
卡2是否激活 |
isTwoCard |
String |
是否有两张卡 |
isHaveCard |
String |
是否有卡 |
operator |
String |
流量卡运营商 |
StackSampler.getStackInfo(Thread.currentThread())
PhoneIdHelper.getPsuedoUniqueID()
UserAgentHelper.getDefaultUserAgent(getApplicationContext())
XposedHookHelper.checkXposedInjet(getApplicationContext())
{
"xposedApp":"false",
"xposedImei":"false",
"xposedImsi":"false",
"xposedSerial":"false",
"xposedSsid":"false",
"xposedMac":"false",
"xposedAddress":"false",
"xposedAndroidId":"false",
"xposedLatitude":"false",
"xposedLongitude":"false"
}
数据键 |
数据类型 |
数据解释 |
xposedApp |
String |
是否hook了本APP |
xposedImei |
String |
是否hook了IMEI |
xposedImsi |
String |
是否hook了IMSI |
xposedSerial |
String |
是否hook了序列号 |
xposedSsid |
String |
是否hook了SSID |
xposedMac |
String |
是否hook了MAC地址 |
xposedAddress |
String |
是否hook了蓝牙地址 |
xposedAndroidId |
String |
是否hook了AndroidId |
xposedLatitude |
String |
否hook了纬度 |
xposedLongitude |
String |
是否hook了经度 |