吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 22962|回复: 135
收起左侧

[Android 原创] 番茄小说要看视频才能下载离线阅读?嫩他

    [复制链接]
闷骚小贱男 发表于 2021-1-14 12:32
本帖最后由 闷骚小贱男 于 2021-6-10 08:41 编辑

为什么会有这个帖子

前几天看到一个番茄免费小说,下载了看了看还行,但是发现不能下载小说(不能离线阅读),于是就动起心思,跳过这个看视频才能下载的功能
111111.gif
[不建议注册账号阅读]


需要的工具

  1. 番茄3.8.0
  2. MT管理器
  3. NP管理器(因为小弟没大有闲钱开MT的VIP.所以MT和NP都用上)

开始实操

第一步arsc搜索

1.首先我们根据APP提示的"看一则小视频,即可免费下载全本小说!"
2.打开MT管理器resources.arsc中搜索"小视频"(当然了,你也可以搜索这句话中的别的文字)
3.搜索结果为下图:
2.png
4.发现长按xxxx/string/mt,ID为7f06020d,复制他的ID(MT自动复制为大写,NP管理器搜索需要搜索小写ID)

第二步dex中搜索ID

1.复制完ID之后,我们返回,点击dex编辑器++,把所有的5的dex都选中,点击确定
2.并搜索刚才复制的ID,类型为整数型
3-搜索ID.png
3.搜索结果:
4-搜索结果.png

查看分析搜索结果,并修改Smali代码

  1. 第一个R$string直接忽略
  2. 回到NP管理器中(主要是为了转换smali为java代码),用DEX编辑PLUS,打开DEX,并搜索小写的ID(7f06020d)[如果你MT管理器如果是VIP的话,是不需要用NP管理器的]
  3. 我们先看NewDetailFragment$40的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

    :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

    :pswitch_64  #pswitch_64就是case 2

    然后我们就可以把case 1改为case 2,把case 2改为case 1

    #原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代码以及注释
    .packed-switch 0x0 ##case  区域,从0开始,依次递增
        :pswitch_bf #JAVA中的case 0
        :pswitch_64 #JAVA中的case 1
        :pswitch_ab #JAVA中的case 2
    .end packed-switch

    再转换下,查看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是不太一样的】


成果

2222.gif

样品+成品下载地址:

番茄3.8 提取码为:52pj  地址:https://wwa.lanzouj.com/b03za5x1i
番茄3.8 提取码为:52pj  地址:https://wwa.lanzoui.com/b03za5x1i
注意!MT的签名和之前的签名不一样.所以不能不卸载
但是卸载可能会导致之前下载的书和数据丢失

免费评分

参与人数 27吾爱币 +31 热心值 +24 收起 理由
liusida1 + 1 + 1 我很赞同!
ierr + 1 + 1 我很赞同!
hero0281 + 1 + 1 谢谢@Thanks!
cjj3558955024 + 1 + 1 谢谢@Thanks!
52pojie210748 + 1 + 1 非常好的应用实例,支持分享
chinablank + 1 + 1 用心讨论,共获提升!
chen6666 + 1 感谢!
youku2020 + 1 谢谢@Thanks!
列明 + 1 + 1 離綫閲讀時長到期,看視頻繼續離綫閲讀90分鐘,點取消就返回,點看視頻就提.
阿难z + 1 用心讨论,共获提升!
qtfreet00 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
fdy8421 + 1 + 1 谢谢@Thanks!
许仙薇 + 1 + 1 用心讨论,共获提升!
landon-zeng + 1 能出个听书跳过视频广告吗?我按这个教程去查听书广告不知道怎么改
zrz444 + 1 + 1 听书时听了一会儿,它就不能连接了。其他都好,就这个不好。
i66235 + 1 + 1 谢谢@Thanks!
xiuji + 1 + 1 谢谢@Thanks!
skyn + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Saikit + 1 + 1 谢谢@Thanks!
txkkk + 1 + 1 我很赞同!
baobao107 + 1 + 1 必须给小贱贱加分,另外,我给你私信了。方便就看看。谢谢!
弧度 + 1 + 1 谢谢@Thanks!
无垠苍茫然若失 + 1 + 1 我很赞同!
xingdh + 1 + 1 谢谢@Thanks!
a747030886 + 1 谢谢@Thanks!看一会提示网页无法刷新,需要重新退出后台才能继续看。
qq63 + 1 + 1 用心讨论,共获提升!
featmellwo + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

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

 楼主| 闷骚小贱男 发表于 2021-1-14 18:37
a517753728 发表于 2021-1-14 17:45
论坛里有很多大神发过各种看小说的app 都还不错  为啥不尝试一下呢  不过 还得为楼主点赞  自己动手丰衣足 ...

我也是遇见了就研究研究..万一以后也能有类似的事呢..举一反三..之前我就没弄过类似case的反编译
而且..我要是想看小说的话..我也可以自己抓资源..自己写APP的..
a747030886 发表于 2021-1-14 12:39
xiaoone 发表于 2021-1-14 12:40
 楼主| 闷骚小贱男 发表于 2021-1-14 12:41
a747030886 发表于 2021-1-14 12:39
那个看一会需要退出后台的问题解决了吗?

...我还真没怎么用过..我下载了一个小说..还没开始看呢./.有空了看下
lswdla 发表于 2021-1-14 12:49
我没卸载,直接安装,显示签名失败
 楼主| 闷骚小贱男 发表于 2021-1-14 12:50
lswdla 发表于 2021-1-14 12:49
我没卸载,直接安装,显示签名失败

MT的签名和之前的签名不一样.所以不能不卸载.但是卸载可能会导致之前下载的书和数据丢失
rbj520 发表于 2021-1-14 13:07
謝謝分享
lifz888 发表于 2021-1-14 13:08
非常好的应用实例,支持分享
头像被屏蔽
dongse 发表于 2021-1-14 13:17
提示: 作者被禁止或删除 内容自动屏蔽
xingdh 发表于 2021-1-14 13:27
十分好用,非常感谢,安卓模拟器上也很OK,因为手机是IOS的,没法安装。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 13:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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