最近再论坛看到了这篇帖子,没想到,我自己经常用的这个APP竟然没有加壳,也可以破解,所以就自己研究了一下,步骤跟帖子不太一样,不过也是有所参考,感谢~
1、所需工具
2、分析
2.1、app信息
image.png (229.41 KB, 下载次数: 0)
下载附件
2022-11-19 21:52 上传
2.2、看一下需要会员的地方
image.png (256.52 KB, 下载次数: 0)
下载附件
2022-11-19 21:53 上传
image.png (263.26 KB, 下载次数: 0)
下载附件
2022-11-19 21:54 上传
image.png (224.94 KB, 下载次数: 0)
下载附件
2022-11-19 21:55 上传
image.png (540.29 KB, 下载次数: 0)
下载附件
2022-11-19 21:56 上传
这些地方都与会员有关系
2.3、关键字"未开通"
咱们从这个未开通开始破解工作
jadx打开apk,所有”未开通“
image.png (64.71 KB, 下载次数: 0)
下载附件
2022-11-19 21:57 上传
很明显,这个文本肯定是在代码里面赋值的,点击第二条搜索结果进去
image.png (112.35 KB, 下载次数: 0)
下载附件
2022-11-19 21:59 上传
看,我们发现了什么,终身会员、会员、高级会员
我们来看截图的第2行和第9行,有两个关键的判断,点进去看看
image.png (21.41 KB, 下载次数: 0)
下载附件
2022-11-19 22:03 上传
image.png (21.1 KB, 下载次数: 0)
下载附件
2022-11-19 22:03 上传
看得出来c方法里面又调用了b方法,并且是 || 或的关系,所以我们指关注b方法即可,至此,我们可以得出一些分析结果:
[Asm] 纯文本查看 复制代码premiumMembership:高级会员
lifetimeMembership:终身会员
那么这个时候,就回想了,我们有没有可能通过URL代{过}{滤}理来直接修改自己账户的会员级别呢,不多说,上小黄鸟
2.4、小黄鸟
不多说怎么使用,咱们直接开始抓包吧
image.png (39.75 KB, 下载次数: 0)
下载附件
2022-11-19 22:08 上传
紧接着启动APP
image.png (592.61 KB, 下载次数: 0)
下载附件
2022-11-19 22:09 上传
请求很多,咱们直接搜索上一步怎们找到了关键字premiumMembership和lifetimeMembership
image.png (184.65 KB, 下载次数: 0)
下载附件
2022-11-19 22:10 上传
感觉与User相关,主要是截图里面的url,我们点进去看看相应是什么
[Asm] 纯文本查看 复制代码{
"premiumMembership":false,
"bindHuawei":false,
"chatEnabled":true,
"followersCount":1,
"usernameOrDescSpam":false,
"likedAuthorsCount":0,
"listsPrivacy":0,
"autoCopyToChild":false,
"ipAddressForShow":null,
"isAdmin":false,
"male":true,
"studyPlansPrivacy":0,
"ban":false,
"lifetimeMembership":false,
"autoHide":false,
"receivedLikesCount":0,
"didFixLikedWorksCountIfNeeded3":true,
"likedWorksCount":5,
"publicListsCount":0,
"xczNumberId":122017478,
"username":"xxx",
"bindWechat":true,
"studyDays":0,
"xczId":"111",
"postsPrivacy":0,
"membership":false,
"attributesForAdmin":{
},
}
我们很明显的发现:
[Asm] 纯文本查看 复制代码 "premiumMembership":false,
"lifetimeMembership":false,
这个。。。是不是太容易了些呢
那就简单了,我们把这些值都改成true,不就行了嘛,哈哈哈,so easy啊
image.png (171.42 KB, 下载次数: 0)
下载附件
2022-11-19 22:14 上传
不多说,直接重写,然后重启APP
呵呵呵,惊不惊喜,意不意外,还是没有变成会员
[color=](本人纯小白,最后也没明白是什么原因,有大佬知道,可以指教一下~)
2.5、MT管理器
既然如此,咱们还是回到代码分析上来:
咱们可以把方法b直接返回true是不是就可以了呢,说做就做
不多说,直接用MT管理器的Dex编辑器++打开所有的dex文件
image.png (198.24 KB, 下载次数: 0)
下载附件
2022-11-19 22:19 上传
然后直接搜索,咱们之前定位的关键字premiumMembership
只有一条结果,我们直接定位到了b方法
image.png (284.82 KB, 下载次数: 0)
下载附件
2022-11-19 22:21 上传
2264行,返回了p0,我们知道肯定是false,所以我们需要修改为true
image.png (128.07 KB, 下载次数: 0)
下载附件
2022-11-19 22:23 上传
在2263行,直接给p0赋值为true
然后咱们保存、重新打包,卸载之前的app,然后安装我们修改后的apk,启动app看看
image.png (80.6 KB, 下载次数: 0)
下载附件
2022-11-19 22:25 上传
可以看到已经增加了vip的标识,我们再来看搜索是否还会有成为会员字段
image.png (204.17 KB, 下载次数: 0)
下载附件
2022-11-19 22:26 上传
也没有了,完美啊~~~~
我们看看是不是可以添加书了
image.png (616 KB, 下载次数: 0)
下载附件
2022-11-19 22:27 上传
虽然显示已经是高级会员,但是点击的时候,还是会报错,所以。。。
2.6、关键字"点击领取"
image.png (597.56 KB, 下载次数: 0)
下载附件
2022-11-20 08:21 上传
看这一张图,我们以这些字作为切入点,搜索看看
image.png (55.72 KB, 下载次数: 0)
下载附件
2022-11-19 22:28 上传
是Android里面的布局文件activity_book_info.xml,点进去看看
image.png (96.1 KB, 下载次数: 0)
下载附件
2022-11-20 08:18 上传
然后我们看下activity_book_info.xml这个文件谁使用了
image.png (86.64 KB, 下载次数: 0)
下载附件
2022-11-20 08:22 上传
使用的类叫做BookIntroActivity,然后在这个类里面搜一下xml里面的id
image.png (113.05 KB, 下载次数: 0)
下载附件
2022-11-20 08:25 上传
赋值给了w,因为是个按钮,肯定是有点击事件的,我们找下
image.png (23.36 KB, 下载次数: 0)
下载附件
2022-11-20 08:25 上传
找到了,是e,继续跟
image.png (31.2 KB, 下载次数: 0)
下载附件
2022-11-20 08:26 上传
又调用了y,继续
image.png (36.1 KB, 下载次数: 0)
下载附件
2022-11-20 08:26 上传
又。。。又。。。调用了h,
image.png (50.63 KB, 下载次数: 0)
下载附件
2022-11-20 08:27 上传
领取成功!!!!!感觉终于要成功了啊
我们可以看到领取成功之后,主要是执行了x方法,所以我们是不是可以把那个if判断给去掉呢。
来继续上MT
image.png (495.89 KB, 下载次数: 0)
下载附件
2022-11-20 08:31 上传
直接把57行去掉,然后编译
image.png (595.1 KB, 下载次数: 0)
下载附件
2022-11-20 08:37 上传
3、结果
成为了高级会员,并且可以领取书籍了
4、扩展
MT管理器,帮我们进行了编译、打包和签名,如果不依赖MT管理器,是否也可以呢,后续研究一下。