Android逆向之路---让我们试试另一种方法看漫画-(2)
前言
上次我们分析到了快看漫画的协议部分,这次我们根据他的协议来手动写个脚本,然后执行以后,可以把他的漫画自动下载到电脑上面,
然后自动拼接图片,这样就可以实现在电脑上当成一个长图来看漫画了,没有广告,没有app的一些限制,先上图,一起看看成果
本文分析基于:快看漫画5.2.0(52000)
事先说明,这是一个系列,关于快看漫画的系列,不过在今天写看漫画这个系列的时候,博主后面的工作也还没有做呢,也希望在大家的监督之下一点一点的全部完成吧。
ps:避免广告嫌疑,以下统称kk漫画了。
为什么选择这个app?
排名靠前啊,反正就选到了,
有对别的感兴趣的同学也欢迎投稿,博主会尽自己所能,给大家带来点好玩的。
觉得看好多地方比较突然的,可以先转到上一篇,然后再来看这篇文章。
传送门:
Android逆向之路---让我们试试另一种方法看漫画-(1)
找到正确的协议
上次我们找到了了协议的大概位置,这次我们要针对整个请求的过程进行精准的分析。包括每个接口的作用。
首先把log清空,然后点击他的开始阅读,我抓到了以下log
我以漫画:《李泰和方小甜的平行世界》为例子
经过我的分析,先和大家说结果:
1,4主要就是请求漫画的接口了
3,6主要是请求了一些广告信息
7可以理解为上传一些打点数据
2主要是获取了一些评论回复信息
5可能是和一些社交相关的,这个是我猜的
首先根据Log信息,我们能发现这些接口的作用,当然了,博主还有另一种办法,我们根据这些接口信息,依次的去找源码
源码分析
先分析
https:// api.kkmh.com/v2/comic/2 2535?is_preview=0
我在源码里面搜v2/comic/,为什么这么搜,因为真正有开发经验的人是知道的,后面的一般开发的时候会写成可变的参数,
前面的url一般也是,我们开发的时候会有测试服务器和正式服务器,前面的是会变的,
搜索结果如下:
.method public abstract getComicDetail(JI)Lretrofit2/Call;
.param p1 # J
.annotation runtime Lretrofit2/http/Path;
value = "comic_id"
.end annotation
.end param
.param p3 # I
.annotation runtime Lretrofit2/http/Query;
value = "is_preview"
.end annotation
.end param
.annotation system Ldalvik/annotation/Signature;
value = {
"(JI)",
"Lretrofit2/Call",
"Lcom/kuaikan/comic/rest/model/API/ComicDetailResponse;",
.end annotation
.annotation runtime Lretrofit2/http/GET;
value = "/v2/comic/{comic_id}"
.end annotation
.end method
怎么样,这个看着太费劲了,我还是手动转成java来看
@GET("/v2/comic/{comic_id}")
@Query("is_preview")
@Path("comic_id")
public abstract Call.retrofit2 getComicDetail();
根据方法名字其实就已经可以猜的可以了,然后利用动态调试,我们可以在APIRestClient.smali里面调用的地方打好断点,
(具体的动态调试方法,以前也说过,不熟悉的同学可以去翻我以前的文章)
const/4 v0, 0x1
:goto_0
invoke-interface {v1, p1, p2, v0}, Lcom/kuaikan/comic/rest/SignInterface;->getComicDetail(JI)Lretrofit2/Call;