首页
社区
课程
招聘
6
[原创]破解7notes with mazec体验版的10天限制
发表于: 2012-11-26 12:43 16709

[原创]破解7notes with mazec体验版的10天限制

2012-11-26 12:43
16709

声明:本文章仅做技术研究,请勿用于非法用途。


 


  这个软件是日文手写输入法,对于工作当中经常要用日文进行书写的人来说还是很不错的,但是这个版本是体验版,有10天的限制,10天过后会弹出提示不能继续使用,如下图:


  



  用到的工具:APKTOOL、JD-GUI、Notepad++


  


  1、用APKTOOL反编译该程序,由弹出的过期提示,在smali文件中搜索关键字:"Expired",如下图:


  


  其中isTrialExpired方法值得我们注意,由字面意思可以推测,这个方法应该是判读是否过期。因此,我们再次搜索关键字:isTrialExpired,如下图:


  


  其中有对该方法的定义和调用该方法的地方,我们不妨先看看这个方法的定义,在smali\com\sevenknowledge\mazec\MazecIms.smali文件中的定义:


  


  


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
.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


由于smali语句不太方便阅读,因此我们用JD-GUI工具来阅读对应的JAR文件,上面这一段代码对应的java语句:


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 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;
  }
   


  很明显,返回值决定了是否过期,返回值i=0时,没有过期,i=1时,过期。所以,我们在这里可以改变返回值,让i始终=0,就可以永不过期。


  在smali文件中,我们在该方法的末尾如此修改:


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 6
支持
分享
赞赏记录
参与人
雪币
留言
时间
伟叔叔
为你点赞~
2024-5-31 06:31
心游尘世外
为你点赞~
2024-5-31 03:23
QinBeast
为你点赞~
2024-5-31 03:14
飘零丶
为你点赞~
2024-4-1 03:12
shinratensei
为你点赞~
2024-2-2 05:40
PLEBFE
为你点赞~
2023-3-7 00:38
最新回复 (8)
雪    币: 247
活跃值: (42)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
不错 学习了~~~~
2012-11-26 16:35
0
雪    币: 107
活跃值: (424)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
呵呵..他们为什么都没加混淆??
2012-11-27 14:43
0
雪    币: 247
活跃值: (42)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
很明显欺负我们不懂日文,所以没有加      
2012-11-27 17:37
0
雪    币: 37
活跃值: (29)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
电视机。。。。。。。。。。。
2012-11-27 17:53
0
雪    币: 302
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不错,最新版是1.5.0,不过方法一样,没有大的变化
2012-11-27 18:09
0
雪    币: 465
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
不错,最新版是1.5.0,
2012-12-1 23:32
0
雪    币: 507
活跃值: (255)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
个人认为,在下面这段代码中
  if-gez v3, :cond_3

    :cond_2
    const/4 v2, 0x1

    .line 216
    .end local v0           #t:J
    :cond_3
    const/4 v2, 0x0
    return v2
.end method

将红色部分if-gez修改为if-lez即可,将判断进行修改,然后可以不限制使用时间
2012-12-9 07:30
0
雪    币: 1556
活跃值: (1701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
正在学习中!!
2013-7-27 00:16
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册