Android逆向之DcseTBS获取设备ID原理

来源:互联网 发布:我家我设计软件 编辑:程序博客网 时间:2024/06/05 15:46

这款工具的就不说了,这不是文章的重点,今天我们要研究一下他的获取设备唯一ID的原理。
其实它获取设备唯一ID的方法跟别人的没啥区别,
实现代码:

TelephoneManager tm=TelephoneManager.getSystemService(Context.TELEPHONE_SERVICE);tm.getDeviceId();

代码非常的简单,所以破解它也非常的简单,用xposed模块hook即可修改,或者直接反编译修改也可以。

但重点不在这里,而是破解之后的情况,它的每个设备ID不充值是仅能使用一天的,所以我破解它的方法是让他每次返回随机设备ID,这样不就可以破解了,可是事实不是这样的,并没有破解(其实后来才知道已经破解了),每次打开显示错误,真是让我纠结了半天,以为他是用了反射或者通过其他方式获取了设备ID,或者把设备ID存储在了内存卡,通过我的验证,最后发现都没有,这就让我懵逼了,难道使用了我不知到的方法,就在我准备放弃的时候,我想到了一个被我忽略的地方,那就是我的网络IP地址,并且发现有时候错误的信息并不一样,到最后我终于发现了问题的关键点
原来是当它获取到新的设备ID时,并不会第一时间就出现试用信息,而是出现错误信息,并让你重启,正常在没破解的情况下,在第二次进入时就会出现试用信息了,但是当我们把它破解之后,每次获取的都是随机的设备ID,也就是当第二次重启时,又获取的是新的设备ID,这是又需要再重启一次,可是再获取一次又是新的设备ID,这样造成的结果就是永远不会出现试用信息!
既然明白了问题,那破解也就简单了,只要在每次过了试用期后,再返回一个新的设备ID即可!
真是一个非常巧妙地防止被破解的方法!

总结

1.破解遇到问题,一定要仔细观察错误的信息,或许原因就藏在那些之中!
2.其实往往看似复杂的东西其实很简单!

阅读全文
1 0
原创粉丝点击