首页
社区
课程
招聘
[原创]英语口语8000句(MP3版)破解
2012-6-18 17:08 19213

[原创]英语口语8000句(MP3版)破解

2012-6-18 17:08
19213
这两天开始学英语口语,下了一个英语口语8000句(http://as.baidu.com/a/item?docid=2669698034&pre=web_am_se),感觉可以,就老老实实的去下载了离线mp3,一百多兆,玩了没有几天竟然不能够播放mp3了,仔细看看原来是需要积分,获取积分的方式竟然是安装n多个应用,我晕,考虑到下了一百多兆的离线文件,不舍得放弃,只好破解了。

1 apktool反编译一下,搜索关键字符串,发现在strings.xml文件中

<string name="msg_lackpoint">您的积分已经不足啦,快快点击广告或者运行OFFER获取大量积分吧!</string>


2 既然是使用资源字符串,再搜索一下msg_lackpoint, 发现
smali/me/uubook/spoken8000/R$string.smali:.field public static final msg_lackpoint:I =0x7f040026 


3 搜索0x7f040026,找到弹出缺少积分的对话框地方,代码如下

.line 525
    .end local v1           #e:Ljava/lang/Exception;
    :cond_2
    :try_start_1
    sget-boolean v7, Lme/uubook/spoken8000/J;->hasPayed:Z

    if-nez v7, :cond_3

    .line 526
    invoke-virtual {p0}, Lme/uubook/spoken8000/Chapter;->getResources()Landroid/content/res/Resources;

    move-result-object v7

    const v8, 0x7f04001e

    invoke-virtual {v7, v8}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;

    move-result-object v7

    invoke-virtual {p0}, Lme/uubook/spoken8000/Chapter;->getResources()Landroid/content/res/Resources;

    move-result-object v8

    const v9, 0x7f040026

    invoke-virtual {v8, v9}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;

    move-result-object v8

    invoke-static {p0, v7, v8}, Lme/uubook/spoken8000/J;->showMessage(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V 

  goto :goto_0

#如果hasPayed变量为true的时候就可以跳到这里
    .line 532
    :cond_3                  
    invoke-static {}, Landroid/os/Environment;->getExternalStorageState()Ljava/lang/String;


4 显然hasPayed变量为true的时候就可以跳过,查找一下在哪里赋值的 grep -r hasPayed . 
./smali/me/uubook/spoken8000/Chapter.smali:    sget-boolean v7, Lme/uubook/spoken8000/J;->hasPayed:Z
./smali/me/uubook/spoken8000/Chapter.smali:    sget-boolean v7, Lme/uubook/spoken8000/J;->hasPayed:Z
./smali/me/uubook/spoken8000/J.smali:.field protected static hasPayed:Z
./smali/me/uubook/spoken8000/J.smali:    sput-boolean v2, Lme/uubook/spoken8000/J;->hasPayed:Z
./smali/me/uubook/spoken8000/J.smali:    sget-boolean v0, Lme/uubook/spoken8000/J;->hasPayed:Z
./smali/me/uubook/spoken8000/J.smali:    sput-boolean v0, Lme/uubook/spoken8000/J;->hasPayed:Z
./smali/me/uubook/spoken8000/J.smali:    sput-boolean v0, Lme/uubook/spoken8000/J;->hasPayed:Z
./smali/me/uubook/spoken8000/J.smali:    sput-boolean v2, Lme/uubook/spoken8000/J;->hasPayed:Z
./smali/me/uubook/spoken8000/J.smali:    sput-boolean v2, Lme/uubook/spoken8000/J;->hasPayed:Z

5 赋值的地方都在J.smali文件中(sput-boolean),打开文件,运气不错,除了构造函数之外,只有一处赋值为0,改成赋值1即可

6 还有一个比较讨厌的地方就是广告条了,关键代码如下(Chapter$1.smali),
.method public handleMessage(Landroid/os/Message;)V
    .locals 1
    .parameter "msg"

    .prologue
    .line 199
    iget v0, p1, Landroid/os/Message;->what:I

    packed-switch v0, :pswitch_data_0

    .line 209
    :cond_0
    :goto_0
    :pswitch_0
    return-void

    .line 204
    :pswitch_1
    sget-boolean v0, Lme/uubook/spoken8000/J;->adRemoved:Z

    if-nez v0, :cond_0

    .line 205
    iget-object v0, p0, Lme/uubook/spoken8000/Chapter$1;->this$0:Lme/uubook/spoken8000/Chapter;

    #calls: Lme/uubook/spoken8000/Chapter;->initAdContainer()V
    invoke-static {v0}, Lme/uubook/spoken8000/Chapter;->access$0(Lme/uubook/spoken8000/Chapter;)V

    goto :goto_0

    .line 199
    :pswitch_data_0
    .packed-switch 0x1
        :pswitch_0
        :pswitch_1
    .end packed-switch
.end method


7 发现只要if判断不成功就可以阻止广告条加入布局, 直接删除这几行就可以
 
 if-nez v0, :cond_0

    .line 205
    iget-object v0, p0, Lme/uubook/spoken8000/Chapter$1;->this$0:Lme/uubook/spoken8000/Chapter;

    #calls: Lme/uubook/spoken8000/Chapter;->initAdContainer()V
    invoke-static {v0}, Lme/uubook/spoken8000/Chapter;->access$0(Lme/uubook/spoken8000/Chapter;)V

8  收尾工作
卸载已经安装的程序,
重新打包,重新签名,安装

阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

上传的附件:
收藏
点赞3
打赏
分享
最新回复 (17)
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
藤本七海 2012-6-18 17:16
2
0
破解英语,有意思,支持你
雪    币: 1689
活跃值: (380)
能力值: ( LV15,RANK:440 )
在线值:
发帖
回帖
粉丝
hackerlzc 10 2012-6-18 17:37
3
0
学习破解android,顶LZ
雪    币: 226
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
implay 2012-7-5 08:24
4
0
**啦。。。。。
雪    币: 2083
活跃值: (1630)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
学习 2012-7-5 15:03
5
0
破解android学习,多来几编!楼主辛苦了!
雪    币: 317
活跃值: (67)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
iltgcl 1 2012-9-19 00:09
6
0
这个软件有新的版本(http://as.baidu.com/a/item?docid=1032180&pre=web_am_se),功能有一些改进,可惜我现在学习英语的动力没有了,^_^。作者对该软件防止破解方面做了许多改动,使得破解起来要比老版本困难的多。这里在放个新版的破解,给需要的童鞋们。破解教程就懒得写了。
破解方法就是想办法将积分变成最大整数,这样打的积分估计够你用了
软件启动后依次点击目录,再点击任意一章,进入后按菜单键,点击“我要vip”,选择最后一项,ok
上传的附件:
雪    币: 317
活跃值: (67)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
iltgcl 1 2012-10-11 14:52
7
0
自己用了下新版本,确实比老版本好多了。
雪    币: 558
活跃值: (107)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
小试锋芒 2 2012-11-11 20:46
8
0
在第6步中,你是如何找到关键代码在(Chapter$1.smali)这里的?
雪    币: 102
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wsclon 2012-11-25 14:12
9
0
看起来是搜索整个文件夹
雪    币: 139
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
seuer 2012-11-26 11:18
10
0
LZ这边文章是及时雨啊,我上次玩那个单机斗地主,积分不够就要安装软件,而且总是有广告条。我一定要把LZ这篇文章下载下来多精读几遍。再次感谢LZ分享!!
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hjjiang 2012-12-1 15:53
11
0
用JD-GUI逆向出java源码,更容易看明白点。
150 private void doReadMP3()
151 {
152 J.hasPayed = 1;
153 try
154 {
155 if (J.myMediaPlayer == null)
156 J.myMediaPlayer = new MediaPlayer();
157 if (J.myMediaPlayer.isPlaying())
158 {
159 J.myMediaPlayer.reset();
160 this.btnRead.setBackgroundResource(2130837529);
161 }
162 else
163 {
164 J.checkTime();
165 if ((!J.hasPayed) && (!J.adAvailable))
166 J.showMessage(this, getResources().getString(2130968606), getResources().getString(2130968608));
167 }
168 }
169 catch (Exception localException)
170 {
171 localException.printStackTrace();
172 }
173 if (!J.hasPayed)
174 {
175 J.showMessage(this, getResources().getString(2130968606), getResources().getString(2130968614));
176 }
177 else
178 {  
雪    币: 507
活跃值: (120)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
鬼谷子c 1 2012-12-9 07:38
12
0
#calls: Lme/uubook/spoken8000/Chapter;->initAdContainer()V
可能是根据广告条所使用的广告包,然后进行关键词搜索。
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
diqi 2013-4-12 12:55
13
0
谢谢分享.正好用到.
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cxuxcom 2013-9-15 19:45
14
0
英语,放了好久,谢谢啊
雪    币: 108
活跃值: (44)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
tuobaofeng 2013-9-15 20:37
15
0
学习,多谢楼主
雪    币: 14
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
大家一起学 2013-9-16 10:40
16
0
好方法,我喜欢
雪    币: 219
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
stman 2013-9-18 22:51
17
0
请问 “查找一下在哪里赋值的 grep -r hasPayed .”这个命令在哪里输入执行?
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
echoxy 2013-9-19 16:25
18
0
学习学习 谢谢楼主分享
游客
登录 | 注册 方可回帖
返回