逆天法修改模拟器deviceID

关于

最近玩模拟器的时候,下了一个软件,在新安装的设备上新注册的账号会有一些赠送的内容。看起来很平常,但是却吸引了我的注意力,我就很奇怪判断原理是什么,所以就深入研究了一番。本文只作为知识和技术分享。

判别原理

为了了解原理,我把模拟器里面的apk安装包导出,翻出我大一时玩安卓逆向的工具(那时其实还不会java,就是乱玩)。首先,对apk解压,copy出classes.dex,然后用dex2jar工具转换成jar包,接着用jd-gui打开了jar包,查看内部源代码。

看着a,b,c,d等字母命名的文件,感觉有点离谱,但是还是一个一个文件点开去看。看了不少文件,没有发现什么正经内容。最后,快看完的时候,出现了一个文件,里面出现了键值对的封装,很明显,这个是要从设备本地获取信息,然后形式化包装后,打包发送至后台服务器,用于判断。看了很多键名,直到发现一个"deviceId"的键名,感觉有点蹊跷,所以上网查了一下,各类解答众说纷纭,大部分解释是手机的设备id,是手机的标识符。

至此,我感觉这个所谓的deviceId应该就是判重的标准了,事实证明是这样的,但是故事还没结束。

手机中的标识符

因为知道deviceId就是标识符,所以我开始了解手机中的唯一标识符。

根据网上的大部分搜索结果,IMEI码才是标识一台设备的唯一标识符。一个解释是,IMEI用于在移动电话网络中识别每一部独立的手机等行动通讯装置,相当于移动电话的身份证,储存在移动设备中,可用于监控被窃或无效的移动设备。

于是乎,我以为deviceId就是这个IMEI码,所以,在模拟器设置中,修改设备的IMEI码,然后尝试重装app和重新注册,发现并没有什么用。我以为是当前的IMEI码被用过了,所以修改了多次后重新测试,结果都不对。

然后,我就知道这个IMEI码不是deviceId,IMEI码无法起到唯一确定性。

查看deviceId

因为了解到deviceId和IMEI码不是一个东西,所以,我感觉需要一个查看设备信息的软件。仔细查找一番,找到了一个名为Device ID的app,安装打开后,会发现显示了系统的所有信息,当然,区分开了device id和IMEI,同时还给出了很多其它信息。我发现IMEI的值会随着修改而改变,但是device id的值是一直没有变化的,所以,我就明白了app就是用deviceID来辨识唯一性。

逆天法修改模拟器deviceID_第1张图片

既然知道了这个deviceId才是真正的设备标识码,那么接下来就是怎么修改以表示不同的设备。

修改deviceId

既然要修改deviceId,我的第一想法是找一个能修改的app,寻找一番,居然真有一个,名字是Device ID Changer。点开一看,显示出了我当前的deviceId,然后我选择修改,界面上显示是已经修改了,我以为成功了,可是,点开Device ID app,我发现好像并没有改动。

逆天法修改模拟器deviceID_第2张图片

难道是因为没有重启吗?我重启了一下虚拟机,点开Device ID app,发现好像还是原来的那个,此时我有点懵。

然后,我感觉可能是因为我的操作问题,于是重复了几遍,但是还是没有改变。

经过了多次尝试,我明白了这些方法行不通,所以,我想起来,模拟器是以虚拟机形式创建启动的,所以,或许数据都在本地呢。于是乎,找到了模拟器软件的安装目录,一个一个文件夹进行查看,最后找到了这样的一个文件leidian0.config,打开一开,所有的设备信息居然都存在这个地方。

逆天法修改模拟器deviceID_第3张图片

于是我就手动修改然后关机重启了虚拟机,再次查看deviceId,居然真得修改为新的值了,此时我只想说声:6!

这个文件的具体地址是:你的安装目录+\LeiDian\LDPlayer4\vms\config,仅用于雷电模拟器。

总结

虽然只是深入了解app判重和手机唯一标识符的相关知识,但是感觉还是很有帮助,对于模拟器的原理和手机设备的鉴别方式有了更进一步的了解,希望能够给予相关读者相关方面的帮助。

你可能感兴趣的:(android)