番茄小说要看视频才能下载离线阅读?嫩他
本帖最后由 闷骚小贱男 于 2021-6-10 08:41 编辑# 为什么会有这个帖子
前几天看到一个番茄免费小说,下载了看了看还行,但是发现不能下载小说(不能离线阅读),于是就动起心思,跳过这个看视频才能下载的功能
[不建议注册账号阅读]
---
# 需要的工具
1. 番茄3.8.0
2. MT管理器
3. NP管理器(因为小弟没大有闲钱开MT的VIP.所以MT和NP都用上)
---
# 开始实操
## 第一步arsc搜索
1.首先我们根据APP提示的"看一则小视频,即可免费下载全本小说!"
2.打开MT管理器resources.arsc中搜索"小视频"(当然了,你也可以搜索这句话中的别的文字)
3.搜索结果为下图:
4.发现长按xxxx/string/mt,ID为7f06020d,复制他的ID(MT自动复制为大写,NP管理器搜索需要搜索小写ID)
## 第二步dex中搜索ID
1.复制完ID之后,我们返回,点击dex编辑器++,把所有的5的dex都选中,点击确定
2.并搜索刚才复制的ID,类型为整数型
3.搜索结果:
## 查看分析搜索结果,并修改Smali代码
1. 第一个R$string直接忽略
2. 回到NP管理器中(主要是为了转换smali为java代码),用DEX编辑PLUS,打开DEX,并搜索小写的ID(7f06020d)[如果你MT管理器如果是VIP的话,是不需要用NP管理器的]
3. 我们先看NewDetailFragment$40的JAVA源码
```java
public void onClick(View view) {
onClick(view);
if (!PatchProxy.proxy(new Object[]{view}, this, a, false, 7416).isSupported) {
if (e.a().j()) {
NewDetailFragment.k(this.c, this.b);
} else if (e.a().f(NewDetailFragment.d(this.c))) {
NewDetailFragment.s(this.c).downloadBook(NewDetailFragment.d(this.c), "active", "detail");
} else if (c.a().g("video_book_download")) {
switch (a.z().h) {
case 0:/* 分析:当a.z().h=0时,执行*/
NewDetailFragment.k(this.c, this.b);
break;
case 1:/* 分析:当a.z().h=1时,执行downloadAfterAddPrivilege,根据字面意思,应该是=1时可以下载小说,那我们尝试修改smali*/
NewDetailFragment.s(this.c).downloadAfterAddPrivilege(NewDetailFragment.d(this.c), "active", "detail");
break;
case 2:/* 分析:当a.z().h=2时,提示要看视频才能下载 */
q qVar = new q(this.c.getActivity());
qVar.d(this.c.getString(2131100173));/* 16进制7f06020d转换10进制为2131100173*/
qVar.a(this.c.getString(2131100171), new 1(this));
qVar.c(this.c.getString(2131100170));
qVar.a().show();/* 显示弹窗 */
NewDetailFragment.s(this.c).reportInspireVideoEvent("show_ad_enter");
break;
default:
break;
}
} else {
NewDetailFragment.k(this.c, this.b);
}
NewDetailFragment.l(this.c).b(NewDetailFragment.d(this.c), "download");
NewDetailFragment.e(this.c).v.setVisibility(8);
h.a().f(true);
}
}
```
我们按下返回,搜索downloadAfterAddPrivilege,往上拉发现:pswitch_ab说明:pswitch_ab就是a.z().h=1,也就是case 1
```smali
:pswitch_ab #case 1 分支1,可下载
iget-object p1, p0, Lcom/dragon/read/pages/detail/fragment/NewDetailFragment$40;->c:Lcom/dragon/read/pages/detail/fragment/NewDetailFragment;
invoke-static {p1}, Lcom/dragon/read/pages/detail/fragment/NewDetailFragment;->s(Lcom/dragon/read/pages/detail/fragment/NewDetailFragment;)Lcom/dragon/read/pages/detail/BookDetailHelper;
move-result-object p1
iget-object v1, p0, Lcom/dragon/read/pages/detail/fragment/NewDetailFragment$40;->c:Lcom/dragon/read/pages/detail/fragment/NewDetailFragment;
invoke-static {v1}, Lcom/dragon/read/pages/detail/fragment/NewDetailFragment;->d(Lcom/dragon/read/pages/detail/fragment/NewDetailFragment;)Ljava/lang/String;
move-result-object v1
const-string v2, "active"
const-string v3, "detail"
invoke-virtual {p1, v1, v2, v3}, Lcom/dragon/read/pages/detail/BookDetailHelper;->downloadAfterAddPrivilege(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
goto :goto_ce
```
然后我们搜索7f06020d,发现case 2
```smali
:pswitch_64#pswitch_64就是case 2
```
然后我们就可以把case 1改为case 2,把case 2改为case 1
```smali
#原APP的smali代码以及注释
.packed-switch 0x0 ##case区域,从0开始,依次递增
:pswitch_bf #JAVA中的case 0
:pswitch_ab #JAVA中的case 1
:pswitch_64 #JAVA中的case 2
.end packed-switch
```
修改后为
```smali
#修改后的smali代码以及注释
.packed-switch 0x0 ##case区域,从0开始,依次递增
:pswitch_bf #JAVA中的case 0
:pswitch_64 #JAVA中的case 1
:pswitch_ab #JAVA中的case 2
.end packed-switch
```
再转换下,查看JAVA:
```java
switch (a.z().h) {
case 0:
NewDetailFragment.k(this.c, this.b);
break;
case 2:/* 之前这给分支是1 我们通过修改SMALI之后变成了2 */
NewDetailFragment.s(this.c).downloadAfterAddPrivilege(NewDetailFragment.d(this.c), "active", "detail");
break;
case 1:/* 之前这给分支是2 我们通过修改SMALI之后变成了1 */
q qVar = new q(this.c.getActivity());
qVar.d(this.c.getString(2131100173));
qVar.a(this.c.getString(2131100171), new 1(this));
qVar.c(this.c.getString(2131100170));
qVar.a().show();
NewDetailFragment.s(this.c).reportInspireVideoEvent("show_ad_enter");
break;
default:
break;
}
```
然后我们保存后,签名,安装APP后再次尝试下载,结果发现还是不行。
但是当时搜索7f06020d的时候是有两条的,那我们把a$29的另一条也按照上述方法修改case 1和2之后签名安装APP。之后发现可以跳过看视频就能下载小说了。
【需要注意的是:a$29和NewDetailFragment$40中的要跳转的地址pswitch_XX是不太一样的】
---
## 成果
# 样品+成品下载地址:
番茄3.8 提取码为:52pj地址:https://wwa.lanzouj.com/b03za5x1i
番茄3.8 提取码为:52pj地址:https://wwa.lanzoui.com/b03za5x1i
注意!MT的签名和之前的签名不一样.所以不能不卸载
但是卸载可能会导致之前下载的书和数据丢失
a517753728 发表于 2021-1-14 17:45
论坛里有很多大神发过各种看小说的app 都还不错为啥不尝试一下呢不过 还得为楼主点赞自己动手丰衣足 ...
{:1_907:}我也是遇见了就研究研究..万一以后也能有类似的事呢..举一反三..之前我就没弄过类似case的反编译
而且..我要是想看小说的话..我也可以自己抓资源..自己写APP的..{:1_907:} 那个看一会需要退出后台的问题解决了吗? 消灭0回复 a747030886 发表于 2021-1-14 12:39
那个看一会需要退出后台的问题解决了吗?
...我还真没怎么用过..我下载了一个小说..还没开始看呢./.有空了看下 我没卸载,直接安装,显示签名失败 lswdla 发表于 2021-1-14 12:49
我没卸载,直接安装,显示签名失败
{:1_907:}MT的签名和之前的签名不一样.所以不能不卸载.但是卸载可能会导致之前下载的书和数据丢失 謝謝分享{:1_921:} 非常好的应用实例,支持分享 十分好用,非常感谢,安卓模拟器上也很OK,因为手机是IOS的,没法安装。