小鲤鱼 发表于 2020-5-14 10:10

【ios】终极蛇皮之charles修改洪恩双语绘本,有小朋友的进来看看,超详细的哦

本帖最后由 小鲤鱼 于 2020-5-21 10:11 编辑


## 教程有时效性,有能力的请支持正版,本教程仅供学习使用,切勿用于商业用途。请勿转发(本人博客除外)。
## 不会用charles的看下这个(https://blog.930113.xyz/2020/05/09/0001/)
## 还是不会的话ios有个软件叫http catcher,是付费的,json文件用法:全选复制json文件(不用下载) -> 打开网球->更多->重写->右上角+ ->在文本编辑器编辑-> 全选粘贴完成即可
# 之前的帖子:
(https://www.52pojie.cn/thread-1176231-1-1.html)
这个没有实际效果,熟悉下修改的流程,还修改了蜗牛读书
(https://www.52pojie.cn/thread-1175270-1-1.html)
这个修改的app是轻听英语
[必杀技之利用charles体验fit健身软件vip。理论安卓ios都可以](https://www.52pojie.cn/thread-1177250-1-1.html)
这个修改的是fit软件,健身用的
# 写这篇文章的目的
前面的分享包括了英语,健身,读书的软件,有一个老哥去我的github上提了个issues问我能不能改一个儿童故事类的软件,叫洪恩双语绘本,经过一番苦战终于搞定了。所以我又来了

# 使用到的软件
- charles,论坛中有大佬分享了破解版,搜索一下安装即可
- charles设置ssl成功,没配制好的上面的链接配置一下
- 洪恩双语绘本,给小朋友看故事书的。

# 教程开始
本教程默认ssl已经装好并且手机已经信任了证书。
1.看下不是vip的情况。对于需要vip的书籍只能试看几页就不行了。可以看出,这个app的会员是需要通过app store订阅的。
[!(https://s1.ax1x.com/2020/05/14/Ywvoo6.md.png)](https://imgchr.com/i/Ywvoo6)
[!(https://s1.ax1x.com/2020/05/14/Ywv7FK.md.png)](https://imgchr.com/i/Ywv7FK)
2. 打开charles和该app。先搜索user试试,定位到get_user_info这个接口,可以看到vip_status,我们将它改为1,感觉是不是结束了,然而并没有成功。
[!(https://s1.ax1x.com/2020/05/14/YwxTns.md.png)](https://imgchr.com/i/YwxTns)
3. 什么原因呢?可以看到_s这个字段里面有个debug_signsrc和sk,初步推断可能是加密请求服务器。如果是这种情况下的话,我们下载付费书可能服务器只会下发包含特定页面的链接,也就是下载到本地的书就只有试看的那几页。
4. 尝试下一本付费书看下。接口在resource/ios/books/下面,好在这个没有加密,是个压缩包打开可以看到是一本完整的书。打脸了,不过好事是为下面的修改打下了基础。
5. debug_signsrc字段中还有vip_status.expire_time,再修改一下试试,同样get_usr_info下还有一个get_purchase_list接口,同样这样修改试下,发现还是没用。又打脸了。可能存在有加密,这种情况下就没办法修改了。
```
userinfo.uid=7673475&userinfo.vip_status.expire_time=
&userinfo.vip_status.pack_list=&
userinfo.vip_status.vip_type=0
```
6. 难道就这样放弃了吗?突然想到里面还有免费的书籍,看看免费的是怎么判断的啊。通过比较付费的和免费的或许可以提供点思路。先点开哪吒闹海然后再点开付费的睡美人看下接口情况。 额,唯一的区别就是book_id不同,打脸那么多次过后再次推断可能会有个接口判断对应的book_id是否需要会员,需要会员的话再比较自身账号是否是。
[!(https://s1.ax1x.com/2020/05/14/Y0ZKbT.md.png)](https://imgchr.com/i/Y0ZKbT)
7. 本着大脸不过三,我又去找接口了,终于在get_book_info找到了,我摸着肿起来的脸陷入了沉思,这次会成功吗?可以看到上图中需要付费的book_id=0011赫然出现在这里,一同出现的还有它的下载链接,对比发现是他是他就是他。修改is_vip再试试看吧。
[!(https://s1.ax1x.com/2020/05/14/Y0eQyt.md.png)](https://imgchr.com/i/Y0eQyt)
8. 看下效果
[!(https://s1.ax1x.com/2020/05/14/Y0mm7T.md.png)](https://imgchr.com/i/Y0mm7T)
终于不用打脸了。
[!(https://s1.ax1x.com/2020/05/14/Y0meBV.md.png)](https://imgchr.com/i/Y0meBV)

重点来了,写了这么多,其实只用修改一个接口就行,尴尬。
网球使用,对应接口:/v3/get_book_info
正则表达式:
```
is_vip"\s*:\s*\d
is_vip": 0
```
# 软件逻辑
总结下这个软件的逻辑:
1. 打开app时先请求get_usr_info下还有get_purchase_list接口判断用户是否是会员,这两个接口有加密信息在,不好修改。
2. 有一个get_book_info接口会给定书籍是否需要会员,需要会员的话就只提供几页试读。

# 网球json白嫖
[洪恩双语](https://github.com/yukerui/httpCatcher-rules/blob/master/%E6%B4%AA%E6%81%A9%E5%8F%8C%E8%AF%AD%E7%BB%98%E6%9C%AC.json)

# 最后
事实证明,打脸还是有好处的,这个程序百密一疏啊,居然直接返回个json到本地判断,直接在服务器上判断如果不是会员的话就只提供试看的zip岂不是更好。
有需要的去提issues哦,顺便求star一波,好惨,这种教程看的人好少,我的博客根本没人看。哎,感觉没啥动力

xiaohong 发表于 2020-5-14 18:16

有时候测试也会用这种方式,但用的 Map Local,,不懂

cxl008 发表于 2021-2-22 16:43

abctime

var obj = JSON.parse($response.body);
obj['data']["stars"] = "9999";
obj['data']['expire_time'] = 1631424246
obj['data']['end_date'] = '2021-09-12'
obj['data']['subcribe'] = 1
var levelList = {"cid":0,"start_time":1599703219,"end_time":1631424246,"spareDate":365}
obj['data']['levelList'].push(levelList)
obj['data']['isPayNow'] = "畅玩月卡"
obj['data']['validProduct'] = 2
obj['data']['buyLevel']= "畅玩APP"
$done({body: JSON.stringify(obj)});

某天大魔王 发表于 2020-5-14 10:12

所以这是高手了。谢谢分享

爱星爷爱拉芳 发表于 2020-5-14 10:25

感想开通会员就看到这个帖子,完美

zctoler 发表于 2020-5-14 10:32

楼主666,省了开会员的钱了

老道人来疯 发表于 2020-5-14 10:33

刚开了永久识字+阅读。 早知道就好了

小鲤鱼 发表于 2020-5-14 10:44

老道人来疯 发表于 2020-5-14 10:33
刚开了永久识字+阅读。 早知道就好了

开了也好啊,这个不知道什么时候就不能用了,被发现了估计就改了

ppxxoo365 发表于 2020-5-14 10:51

下下来jason用不了啊 咋回事

Cyntec 发表于 2020-5-14 10:57

PHPer,和移动端调试时经常用抓包工具,有时候测试也会用这种方式,但用的 Map Local,没用正则。

小鲤鱼 发表于 2020-5-14 10:59

Cyntec 发表于 2020-5-14 10:57
PHPer,和移动端调试时经常用抓包工具,有时候测试也会用这种方式,但用的 Map Local,没用正则。

Map Local也可以啊,你把response复制下来新建一个json,把里面的is_vip改成1再指向这个文件就可以了

wuji84131421 发表于 2020-5-14 11:01

高手我就看看{:1_911:}
页: [1] 2 3 4 5 6 7 8
查看完整版本: 【ios】终极蛇皮之charles修改洪恩双语绘本,有小朋友的进来看看,超详细的哦