吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4495|回复: 49
收起左侧

[Android 原创] 对《用小黄鸟破解某利说英语APP》破解方式的补充

  [复制链接]
du1263794094 发表于 2024-4-11 03:24
一、前言
《用小黄鸟破解某利说英语APP》https://www.52pojie.cn/thread-1909641-1-1.html的作者通过小黄鸟修改返回json的方式,破解了该App“情境实战”功能部分内容付费查看限制,作者也提到此帖是以我的《用小黄鸟破解某健身APP》https://www.52pojie.cn/thread-1907989-1-1.html作为模板所写的,身为小白的我倍感惊喜,因为那篇帖子是我在论坛发的第一篇实战分享帖,居然能够被借鉴,很意外;同时也感到一点不踏实,因为我在我的帖子里所用到的破解方法是比较简单的方法,不足之处在于要使破解生效,必须在每次打开软件时开启小黄鸟抓包重写数据才行,有点麻烦。尝试过用修改代码的方法去破解,可惜功底太薄,能力不足,那款健身软件代码被混淆了,看不懂一点,就暂时放弃了,但是我看完这位作者的帖子去复现的时候,发现这款app有些代码是没有被混淆的,那就可以尝试通过修改代码逻辑去破解。
二、破解过程
2.1整理逻辑
在已登录账号,已完成等级测试的前提下,点击情境实战,出现关卡列表,部分免费无锁,可以直接点击查看,往上翻就是收费有锁的了
093126qhz2aka8dd691ga2.jpg
那么此时有两种思路,一是修改用户身份,改为付费用户,点击这个功能自然就能畅享所有内容了,二是将付费有锁内容改为免费无锁内容,不论用户身份如何都能畅享所有内容,那么我们如何去找判断用户身份的代码?如何去找判断关卡是收费免费,是有所无锁的代码呢?原帖作者用小黄鸟抓包返回的数据给出了线索
091103zcnhinuc0kop8l16.jpg
从服务器返回的数据可以看到,这是关卡列表,每一关有它的id、taskId、image等等属性,而收费有锁关卡跟免费无锁关卡的不同之处在于,收费有锁关卡的url是没有的,hasPremiumIcon的值为true,locked的值为true,免费无锁的关卡则在这三处与之相反,那么将收费有锁关卡这三处进行修改就可以使他们变得像免费无锁关卡,也就能无偿使用了。这样我们就先用第二种思路,修改收费有锁关卡为免费无锁关卡。

2.2寻找代码
观察关卡列表里的内容,每一关都有各自不同的id、taskId等属性,那么必然存在对应的函数方法,如getId()、getTaskId()等,那我们选择最具代表性的hasPremiumIcon,到NP管理器搜索方法名 getHasPremiumIcon
(插一句:要先提取安装包,看app有没有壳,有壳要先脱壳,站内外有很多脱壳教程,在此不赘述,幸运的是此app无壳)
点击安装包>查看>点击任一classes文件>选择Dex编辑Plus>全选>确定>点击搜索选项卡>发起新搜索>查找内容输入"gethaspremiumicon”,搜索类型选择“方法名”>确定
qq_pic_merged_1712763611492.jpg qq_pic_merged_1712763675289.jpg

出现了四项结果,选择哪一个才对?再看看原帖有没有线索

090500njnuudbbj0n1jlhf.jpg
原帖作者画线所指的抓包数据网址有一个关键词"freetal...”,我想应该是跟搜索结果里的FreeTalkItem对应吧,点它,看看它是不是有获取关卡各项属性的方法,点击指南针导航
qq_pic_merged_1712764454751.jpg

往下翻,可以看出确实存在获取关卡各项属性的方法

qq_pic_merged_1712764610667.jpg

这种在smali语法下查看不够快,方法比较分散无序的话,可以转java看

qq_pic_merged_1712764777604.jpg qq_pic_merged_1712764804637.jpg qq_pic_merged_1712764993425.jpg qq_pic_merged_1712765009197.jpg qq_pic_merged_1712765035339.jpg qq_pic_merged_1712765228405.jpg

2.3代码修改(方法借鉴这篇帖子https://www.52pojie.cn/thread-1747613-1-1.html)
代码已经找到,前面也知道了收费有锁关卡跟免费无锁关卡的不同在于url是否有内容,haspremiumicon为true 还是 false , locked 为true 还是 false,
那么我们让服务器返回的关卡都变为免费无锁关卡,先把haspremiumicon和locked都改为false。它们俩的方法都是返回boolean类型的真假值,那就强行赋false。从java返回到smali语法下修改,
qq_pic_merged_1712766451900.jpg qq_pic_merged_1712766490428.jpg
这样从服务器返回的关卡都是免费无锁的了。
重点来了,url这个地方怎么改?原帖作者已经为我们解释了,免费无锁的关卡的url是有内容的,收费有锁的关卡的url是没有内容的,而且这个url的形成有一个规律,每个关卡对应的url只有中间部分不同,中间部分恰好是各个关卡对应的taskId,那么url的格式就是 url = 统一开头 + taskId + 统一结尾
也就是url = https://darwin-freetalk-v2.liulishuo.com/tasks/ + "taskId" + ?source=freetalk_list ,同时注意到每个关卡的taskId都是有的,那我们就可以写代码创建 url,补齐收费有锁关卡的url
我们修改思路也清晰了,先看服务器返回的url是不是空的,如果是空的,我们就创建一条url再作为方法的返回结果,如果不是空的,直接将服务器返回的url作为方法的返回结果
先找到getUrl这一方法
qq_pic_merged_1712767675486.jpg
怎么写判断url是否为空的代码?这里是smali语法,我也不太清楚该怎么写,但是我知道smali语句有其对应的java语句,我们可以先写java再转smali,复制粘贴进来就可以,
这里用到NP管理器的java转smali功能
qq_pic_merged_1712767977652.jpg qq_pic_merged_1712768030991.jpg
先定义一个字串符类型的变量并赋值,用isEmpty方法去判断并获取结果,写好后点击右上角保存图标右边的转换图标,获取到smali语法的isEmpty语句,复制过去

qq_pic_merged_1712768731998.jpg qq_pic_merged_1712768807318.jpg

复制到获取url的语句下面,再加上判断isEmpty结果的语句和跳转
每一句的含义看它上面的注释,
qq_pic_merged_1712770302606.jpg

再来看创建url的代码怎么写,先要获取taskId,我们可以调用getTaskId这个方法,把这个方法返回的结果赋给一个变量,再定义两个变量,分别赋统一开头和统一结尾,最后再按照次序把统一开头变量、taskId变量、统一结尾变量拼接起来,把拼接的结果赋给另一个变量,作为getUrl这个方法的返回结果
还是一样,我不会写smali语句,先写java再转

qq_pic_merged_1712773178837.jpg qq_pic_merged_1712774314138.jpg

看懂代码意思后就复制过去,再做修改。注意两个地方,一是我在java里写的getTaskId方法要由静态改为动态,因为我自己写的版本没有动态获取taskId,所以那时候必须用static修饰方法名,修改时要将getTaskId那句smali语句的invoke-static {}改为invoke-virtual {p0}

二是全类名修改,还是定位到getTaskId这句smali语句,修改前的全类名是LMain; 要改为Lcom/liulishuo/lingodarwin/profile/freetalk/FreeTalkItem;

调用getTaskId的smali语句修改前后对比
修改前
qq_pic_merged_1712775093848.jpg

修改后

qq_pic_merged_1712775129493.jpg

此外还要修改统一开头 统一结尾 这些字串符的值,改为实际网址,并且要调整寄存器的编号,从getUrl这一方法从前往后逐行逐个看,调整至符合逻辑
修改好后完整代码如下
qq_pic_merged_1712776559164.jpg

修改完后保存,签名,一气呵成,没有签名校验,成功启动。再登录账号,点击情境实战,已全部解锁,有效可用
Screenshot_20240411-031928_-.jpg

免费评分

参与人数 20威望 +1 吾爱币 +37 热心值 +18 收起 理由
quanq5 + 1 我很赞同!
正己 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
wangls10 + 1 热心回复!
pdcba + 1 + 1 谢谢@Thanks!
notproblem + 1 + 1 谢谢@Thanks!
cl19871004 + 1 用心讨论,共获提升!
wwb66668 + 1 + 1 用心讨论,共获提升!
wanfon + 1 + 1 热心回复!
Lsais + 1 我很赞同!
soyadokio + 1 + 1 用心讨论,共获提升!
timeni + 1 + 1 用心讨论,共获提升!
iid6 + 1 + 1 热心回复!
雨落惊鸿, + 1 + 1 用心讨论,共获提升!
fenglixia + 1 + 1 用心讨论,共获提升!
apple888 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
秋落葉 + 1 + 1 学习
wangyftr + 1 + 1 我很赞同!
zhen211 + 1 + 1 感谢大佬的补充。
tomhex + 1 + 1 热心回复!
st790211 + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

xiaoshu1688 发表于 2024-4-11 08:08
应该还有办法解决。
soyadokio 发表于 2024-4-11 14:27
思路写得清晰明了,甚至每一步怎么操作都写明白了,非常照顾新人。
但是排版是真的捉急,当然楼主已尽力排版了,主要是论坛排版很蛋疼。
gequ 发表于 2024-4-11 05:34
nonefree 发表于 2024-4-11 06:23
大佬牛逼
Lty20000423 发表于 2024-4-11 07:34

好好学英语,天天向上
jokaka 发表于 2024-4-11 07:46
说的非常详细 谢谢楼主分享 立马去尝试一下
st790211 发表于 2024-4-11 07:49
谢谢楼主分享,学到老,用到老
Corgibro 发表于 2024-4-11 07:54
愉快的学习之旅又要开始啦
文风 发表于 2024-4-11 08:03

说的非常详细 谢谢楼主分享,隔行如隔山,
yyysss153 发表于 2024-4-11 08:20
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-15 02:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表