馬上加入Android 台灣中文網,立即免費下載應用遊戲。
您需要 登錄 才可以下載或查看,沒有帳號?註冊
x
本帖最後由 圣光奇迹 於 2015-8-19 13:18 編輯
0x1 购买时取消支付成功
因为是支付宝内购,所以搜索支付宝特征9000的16进制0x2328,结果明显是第一个smali
此smali的第一个0x2328处,可见以下内容-
0x2328 -> 成功
0xfa0 -> 系统繁忙
0x1771 -> 用户取消
....
点击0x2328 -> :sswitch_0
见到
0xfa1 -> :sswitch_3
0x1771 -> :sswitch_1 #取消
0x1772 -> :sswitch_2
0x1f40 -> :sswitch_4
0x2328 -> :sswitch_0 #成功
所以把此处的sswitch_1 修改为sswitch_0即可
或者sswitch_1下加goto :sswitch_0也行。
然后支付---取消支付,恭喜,变会员了!
0x2 打开程序就是注册版
利用第1步变成会员后,通过re管理器查看存档,重要内容如下
<boolean name="ad_close_show" value="true" />
< int name="vip_grade" value="1" />
< boolean name="ad_show" value="true" />
< boolean name="first_use" value="false" />
< int name="times" value="5" />
< int name="speak_language" value="2" />
此时有2种思路-
1.搜索vip_grade,赋值vip_grade等于1。(尝试,无果)
2.因为vip_grade是int name,可将一个不重要的的int name修改为vip_grade,并固定其永久等于1.
此时因为vip_grade永久等于1,ad_show和ad_close_show的值可不用管,也能达到无广告。
于是搜索"times"吧。它是记录软件运行次数的值,无伤大雅的。
通过搜索"times"和分析,在MainActivity.smali中发现,
const-string v2, "times"
const/4 v3, 0x0
invoke-interface {v1, v2, v3}, Landroid/content/SharedPreferences;->getInt(Ljava/lang/String;I)I
move-result v1
和
const-string v1, "times"
iget v2, p0, Landroid/translate/xuedianba/MainActivity;->J:I
add-int/lit8 v2, v2, 0x1
invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences$Editor;->putInt(Ljava/lang/String;I)Landroid/content/SharedPreferences$Editor;
它的意思就是"times"初始为0,每运行1次软件,"times"值增加1.
所以修改其为 "vip_grade" ,且令其初始为1,并永久为1.
const-string v2, "vip_grade"
const/4 v3, 0x1
invoke-interface {v1, v2, v3}, Landroid/content/SharedPreferences;->getInt(Ljava/lang/String;I)I
move-result v1
和
const-string v1, "vip_grade"
iget v2, p0, Landroid/translate/xuedianba/MainActivity;->J:I
add-int/lit8 v2, v2, 0x0
invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences$Editor;->putInt(Ljava/lang/String;I)Landroid/content/SharedPreferences$Editor;
意思就是"vip_grade"初始为1,每运行1次软件,"vip_grade"值都为1.
修改后运行,测试下高级功能,ok,广告也没有了。
至此完成最终破解。
工具用吾爱的:
下载
|