看不懂的请直接绕道,不解释
用过android上的x-plore与total*er应该都知道他们有使用时间限制,一但时间过了就必须购买或重新下载新的。
破解x-plore
首先从lcom/lonelycat*/xplore/browser;类入手,打开这个类,然后打开on*方法,可发现这段代码
invoke-static/range {v31..v31} lcom/lonelycat*/xplore/browserutils;->isinstalledfrommarket(landroid/*/context;)z
move-result v28
if-nez v28 :label_106
invoke-static/range {v31..v31} lcom/lonelycat*/xplore/browserutils;->getdex*time(landroid/*/context;)j
move-result-wide v10
invoke-static {} ljava/lang/system;->currenttimemillis()j
move-result-wide v28
sub-long v5 v28 v10
const-wide/32 v28 1209600000
cmp-long v28 v5 v28
if-ltz v28 :label_97
这段代码大概意思是,判断软件是不是从安卓商店下载的,如果不是则得到当前系统时间并和作者设定的时间作比较,在设定的范围之内可以用,否则弹出去安卓商店下载之类的提示。如果是从商店下载的则直接跳过时间比较。
这样我们只要修改 isinstalledfrommarket方法的返回值就行了,可发现isinstalledfrommarket方法在 lcom/lonelycat*/xplore/browserutils;类里面。
找到该类并打开,找到 isinstalledfrommarket方法打开,在return v2之前加入const/4 v2 1,也就是一直让这个方法返回true,保存....
破解total*er
打开lcom/ghisler/android/total*er/total*er;类(也就是到 /com/ghisler/android/total*er/目录下,打开total*er), 找到on*方法打开,可发现
invoke-static {} ljava/lang/system;->currenttimemillis()j
move-result-wide v6
const/16 v0 111
const/16 v1 11
const/16 v2 31
move v3 v8
move v4 v8
move v5 v8
invoke-static/range {v0..v5} ljava/util/date;->utc(iiiiii)j
move-result-wide v0
cmp-long v0 v6 v0
if-lez v0 :label_1094
大概意思就是当前时间与作者设定的时间作比较,如果超过设定时间就弹出dialog提示,且不能继续使用。
看这段代码 if-lez v0 :label_1094这是程序跳转的关键点,判断寄存器v0的值是否小于等于0,如果成立,跳转到label_1094(也就是可以继续使用)所以只要让v0的值不大于0就行了,在 if-lez v0 :label_1094前面加上const/4 v0 0。保存....
文件是破解之后的x-plore与total*er
用过android上的x-plore与total*er应该都知道他们有使用时间限制,一但时间过了就必须购买或重新下载新的。
破解x-plore
首先从lcom/lonelycat*/xplore/browser;类入手,打开这个类,然后打开on*方法,可发现这段代码
invoke-static/range {v31..v31} lcom/lonelycat*/xplore/browserutils;->isinstalledfrommarket(landroid/*/context;)z
move-result v28
if-nez v28 :label_106
invoke-static/range {v31..v31} lcom/lonelycat*/xplore/browserutils;->getdex*time(landroid/*/context;)j
move-result-wide v10
invoke-static {} ljava/lang/system;->currenttimemillis()j
move-result-wide v28
sub-long v5 v28 v10
const-wide/32 v28 1209600000
cmp-long v28 v5 v28
if-ltz v28 :label_97
这段代码大概意思是,判断软件是不是从安卓商店下载的,如果不是则得到当前系统时间并和作者设定的时间作比较,在设定的范围之内可以用,否则弹出去安卓商店下载之类的提示。如果是从商店下载的则直接跳过时间比较。
这样我们只要修改 isinstalledfrommarket方法的返回值就行了,可发现isinstalledfrommarket方法在 lcom/lonelycat*/xplore/browserutils;类里面。
找到该类并打开,找到 isinstalledfrommarket方法打开,在return v2之前加入const/4 v2 1,也就是一直让这个方法返回true,保存....
破解total*er
打开lcom/ghisler/android/total*er/total*er;类(也就是到 /com/ghisler/android/total*er/目录下,打开total*er), 找到on*方法打开,可发现
invoke-static {} ljava/lang/system;->currenttimemillis()j
move-result-wide v6
const/16 v0 111
const/16 v1 11
const/16 v2 31
move v3 v8
move v4 v8
move v5 v8
invoke-static/range {v0..v5} ljava/util/date;->utc(iiiiii)j
move-result-wide v0
cmp-long v0 v6 v0
if-lez v0 :label_1094
大概意思就是当前时间与作者设定的时间作比较,如果超过设定时间就弹出dialog提示,且不能继续使用。
看这段代码 if-lez v0 :label_1094这是程序跳转的关键点,判断寄存器v0的值是否小于等于0,如果成立,跳转到label_1094(也就是可以继续使用)所以只要让v0的值不大于0就行了,在 if-lez v0 :label_1094前面加上const/4 v0 0。保存....
文件是破解之后的x-plore与total*er