1.传感器
主要入口:
1 2 3 4 |
Sensor.getVendor() / / 获取传感器厂商
Sensor.getMaximumRange() / / 获取传感器最大范围
Sensor.getResolution() / / 获取传感器精度
Sensor.getMinDelay() / / 获取传感器最小延迟
|
原理: 通过传感器信息对设备进行分析,可以结合大数据对设备指纹进行检测,也可以通过数据库对每一样设备的传感器进行对比检测作弊。
应用厂商:某盟、某美、某多、某宝、某音
2.文件系统
1 |
stat - f /
|
原理:ID是文件系统ID,每个设备都是不一样的,但是无论清除数据还是刷机都不会变。Blocks Total和Inodes Total是Blocks和Inodes的数量,一般情况下很难改变。
应用厂商:某多、某美、某宝
3.字体列表
1 |
ls / system / fonts
|
原理:读取/system/fonts可以获取到安卓的系统字体列表,可以通过md5或者sha-1进行标注,方便对系统ROM识别。因为一般情况下,同一个ROM字体数量、文件名都是基本相差无几
应用厂商:某美、某多、某音
4.OpenGL
1 2 3 4 5 6 7 |
com.google.android.gles_jni.GLImpl
String glGetString( int name);
name值:
GLVendor 7936 GPU厂商
GLRenderer 7937 GPU名称
GLVersion 7938 GPU驱动版本
|
原理:通过这些属性获取到GPU的相关信息(也可以通过native层获取,这里只演示Java层的),可以通过这些信息和机型数据对比即可得出是否有作弊。并且这些信息也可以用于设备指纹识别。
应用厂商:某盟、某美、某多等所有厂商
5、boot_id和uuid
1 2 |
cat / proc / sys / kernel / random / boot_id
cat / proc / sys / kernel / random / uuid
|
原理: 这些ID由安卓系统在开机时生成,并且在开机状态下不会改变。风控厂商通过这些ID进行关联检测,并且可以联合其他信息推断是否为同一设备操作。