前言
我们知道很多APP都有第一次使用的体验功能,如Wifi伴侣,手机第一次使用时就会免费时长;还有很多的APP活动,比如百度糯米、安客居等,还有以前360应用的下载赚金币等等,都是手机的初次使用时才有。很显然,他们识别初次的方法就是手机的IMEI或者IMSI,如果能有一种方法,让APP启动时都像第一次启动那样被服务器端识别的话,那么Wifi伴侣就有无限的使用时长了,或许百度糯米也可以无限领优惠了..(意淫结束 与钱挂钩的东西,从来没有那么容易的。。)下面就说说随机的方法。
该方法来源于好友 @晴天 的分享。
一开始的考虑是直接产生随机数。先写Java代码 然后再转化为Smali的话,必然是一大串,这就增加了错误的几率,那有没有一种更简单的。唉 不做引诱了,也不多说明了,老累%>_
修改IMSI:示例是我是车神_Ver1.2.6
.local v1, "telManager":Landroid/telephony/TelephonyManager;
invoke-virtual {v1}, Landroid/telephony/TelephonyManager;->getSubscriberId()Ljava/lang/String;
move-result-object v0
//获取系统的时间
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v0
invoke-static {v0, v0}, Ljava/lang/String;->valueOf(J)Ljava/lang/String;
move-result-object v0
//获取长度
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v1
//截取15位
add-int/lit8 v1, v1, -0xf
invoke-virtual {v0, v1}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v0
.local v0, "imsi":Ljava/lang/String;
修改IMEI:示例是追魂3_Ver1.0
invoke-virtual {v0}, Landroid/telephony/TelephonyManager;->getDeviceId()Ljava/lang/String;
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v0
invoke-static {v0, v0}, Ljava/lang/String;->valueOf(J)Ljava/lang/String;
move-result-object v0
iget-object v1, p0, Lcom/call3/VerifyActivity;->c:Landroid/widget/TextView;
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v2
add-int/lit8 v2, v2, -0x6
invoke-virtual {v0, v2}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v0然后谢谢 @Allen 大神的指导,唉 基础不行..
图片
添加之后打log: