声明:本文章仅做技术研究,请勿用于非法用途。
这个软件是日文手写输入法,对于工作当中经常要用日文进行书写的人来说还是很不错的,但是这个版本是体验版,有10天的限制,10天过后会弹出提示不能继续使用,如下图:
用到的工具:APKTOOL、JD-GUI、Notepad++
1、用APKTOOL反编译该程序,由弹出的过期提示,在smali文件中搜索关键字:"Expired",如下图:
其中isTrialExpired方法值得我们注意,由字面意思可以推测,这个方法应该是判读是否过期。因此,我们再次搜索关键字:isTrialExpired,如下图:
其中有对该方法的定义和调用该方法的地方,我们不妨先看看这个方法的定义,在smali\com\sevenknowledge\mazec\MazecIms.smali文件中的定义:
.method public isTrialExpired()Z
.locals 7
.prologue
const-wide/16 v5, 0x0
const/4 v2, 0x0
.line 207
sget-object v3, Lcom/sevenknowledge/common/BuildOption;->PRODUCT_TYPE:Lcom/sevenknowledge/common/BuildOption$ProductType;
sget-object v4, Lcom/sevenknowledge/common/BuildOption$ProductType;->TRIAL:Lcom/sevenknowledge/common/BuildOption$ProductType;
if-ne v3, v4, :cond_3
.line 209
iget-wide v3, p0, Lcom/sevenknowledge/mazec/MazecIms;->mExpireBase:J
cmp-long v3, v3, v5
if-ltz v3, :cond_0
iget-wide v3, p0, Lcom/sevenknowledge/mazec/MazecIms;->mExpireTime:J
cmp-long v3, v3, v5
if-gez v3, :cond_1
.line 210
:cond_0
invoke-direct {p0}, Lcom/sevenknowledge/mazec/MazecIms;->initExpireDate()V
.line 212
:cond_1
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v0
.line 213
.local v0, t:J
iget-wide v3, p0, Lcom/sevenknowledge/mazec/MazecIms;->mExpireBase:J
cmp-long v3, v0, v3
if-ltz v3, :cond_2
iget-wide v3, p0, Lcom/sevenknowledge/mazec/MazecIms;->mExpireTime:J
cmp-long v3, v3, v0
if-gez v3, :cond_3
:cond_2
const/4 v2, 0x1
.line 216
.end local v0 #t:J
:cond_3
return v2
.end method
public boolean isTrialExpired()
{
int i = 0;
if (BuildOption.PRODUCT_TYPE == BuildOption.ProductType.TRIAL)
{
if ((this.mExpireBase < 0L) || (this.mExpireTime < 0L))
initExpireDate();
long l = System.currentTimeMillis();
if ((l < this.mExpireBase) || (this.mExpireTime < l))
i = 1;
}
return i;
}
if-gez v3, :cond_3
:cond_2
const/4 v2, 0x1
.line 216
.end local v0 #t:J
:cond_3
[COLOR="Red"]const/4 v2, 0x0[/COLOR]
return v2
.end method
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
上传的附件: