目前市场上的APK,对于数盟可信ID的认可度已经变的很高了。从数盟的官网,96%的识别率已经在业内是很高的了。依靠如此单一的业务能够存活6年之久的公司,说明了这个技术的厉害之处。
处于对于此技术的好奇,今天我们就探讨下它的基本原理。
测试验证
1.同型号的不同手机,相同ROM版本,数盟ID不一样
2.同一台手机,不同ROM版本,数盟ID保持不变
3.同一台手机,修改设备信息(IMEI,MAC,sn,androidID...),数盟ID保持不变
结论:数盟ID不会根据设备信息及ROM版本的变化而变化。用做应用的可信ID是完全没问题的。
代码分析
从市面上接入使用数盟ID的应用分析,可以发现技术核心源码编译到了libdu.so当中。那么很多人会想要通过逆向工程去解读so的原理。这么大一家公司,如此核心的技术怎么可能那么轻易就被破解呢。
另辟蹊径,通过分析系统被调用情况,我们可以发现他的基本工作原理。
libdu.so被应用程序加载后做了什么事情?
1.尝试未授权的情况获取MAC,deviceID,imsi等设备信息。android8及以上已经权限限制了。所以可看到访问受限。
2.通过sensors-hal获取了相关传感器信息
3.通过OpenGL接口,进行了GPU相关的操作行为。
4.其他细节信息。系统排查当中,后续更新。
总结
不同的硬件器件(包括各种传感器,GPU等)在生产时存在细微物理差异。那么对应数据的处理能力上也会存在细微的变化。通过硬件数据处理结果,加上对应的算法提取其中特定的指纹特征。完全可以实现可信ID的实现方案。
世界上没有完全相同的两片树叶。这就是数盟可信ID技术可实现的基础。
PS:以上信息仅供学习研究。欢迎大牛探讨。
重点来了:
经过两周持续验证分析,笔者发现之前分析的方向都是错误的。
- GPU的差异性。
此差异是存在的。但是安卓上层是无法通过所谓的厉害的算法运算得出GPU的特征指纹。
所以无法用来生成可信ID。 - sensors信息差异性。
此差异是存在的。但是相同的机器,同样的器件是一致的。
所以无法用来生成可信ID。 - MAC,deviceID,imsi的差异性。
此差异是存在的。但是及其容易被修改伪装。
所以无法用来生成可信ID。
那么如何生成“所谓的”可信ID呢?(注意:笔者说的是“所谓的”)
还是通过底层获取了手机硬件的特定ID,生成了“所谓的”可信ID。
市面宣传说的靠各种厉害的算法及大数据能有效生成可信ID,但其实主动权在google测。而且类似数盟这种不敢开源的技术基本都是经不住有效性认证的。华丽的包装下是否有真实的内在,不得而知。
通过测试我们已经发现可以在不换rom不更改任何硬件器件的情况下更改此可信ID。
只需要通过技术手段修改手机端某特定ID即可。
PS:此技术不便公开,仅个人学习研究。就像为什么此类公司不敢公开技术一样的,靠的就是这个信息差存活下来。