这个app看起来很精致,但不是pro版本的话会有限制,无法使用换肤等功能。
要破解也很简单,Follow Me!
1、APKtool反编译该APK。
2、根据弹出的提示,搜索字符串"Unlock Pro Version",在
3、在\res\values\strings.xml目录下找到该字符串,string name = "pro"
4、继续搜索"pro",在\clear\res\values\public.xml文件中对应的ID是"0x7f08000c"
5、然后在smali文件中搜索"0x7f08000c",看看是哪里调用了。结果是在\smali\com\xuchdeid\clear\activity\ProVersionDialog.smali 调用了。
6、我们来到该smali文件,或者用JD-jui查看更明朗,在ProVersionDialog的OnCreate方法中调用了
7、通过分析,ProVersionDialog这个类继承了Activity类,那我们继续顺藤摸瓜,看在哪里调用ProVersionDialog。
8、搜索出的结果,有几个地方调用了,其中\smali\com\xuchdeid\clear\activity\ClearActivity.smali 是这样调用的:
[AppleScript] 纯文本查看 复制代码 .method static synthetic v(Lcom/xuchdeid/clear/activity/ClearActivity;)V
.locals 2
new-instance v0, Landroid/content/Intent;
const-class v1, Lcom/xuchdeid/clear/activity/ProVersionDialog;
invoke-direct {v0, p0, v1}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V
const/4 v1, 0x4
invoke-virtual {p0, v0, v1}, Lcom/xuchdeid/clear/activity/ClearActivity;->startActivityForResult(Landroid/content/Intent;I)V
return-void
.end method
很明显,这里没有经过任何判断,就直接对ProVersionDialog进行初始化并启动这个Activity,所以不是我们关注的重点。
另外一个调用地方是\smali\com\xuchdeid\clear\manager\h.smali
这里有一个条件判断,if-nez v0, :cond_0,如果v0不等于0,那么就跳到cond_0处,而这个v0的值是方法Lcom/xuchdeid/clear/manager/d;->b()Z的返回值。
9、下面去分析方法Lcom/xuchdeid/clear/manager/d;->b()Z
[AppleScript] 纯文本查看 复制代码 .method public final b()Z
.locals 1
iget-boolean v0, p0, Lcom/xuchdeid/clear/manager/d;->d:Z
return v0
.end method
这个方法的返回值是一个布尔类型的值。如果我们强制让返回值为真,那么v0就不等于0,从而就不会启动ProVersionDialog这个Activity了。
我们修改如下:
[AppleScript] 纯文本查看 复制代码 .method public final b()Z
.locals 1
iget-boolean v0, p0, Lcom/xuchdeid/clear/manager/d;->d:Z
const/4 v0, 0x1
return v0
.end method
保存修改,重新编译打包,签名,测试OK!成功破解!
|