低调(d-iao) 发表于 2021-7-22 01:20

你的不足,我来补

准备工具:
1.反编译工具
2.抓包工具
3.ksweb

演示软体:
飒漫画 3.3.22
(目前最新3.3.23 我懒惰更新)                        

收费限制:
1.vip章节
2.付费章节
3.超前章节

新机可领取3天白金会员(无需登录)


教程开始:

关于本地解锁部分教程不会细谈
以及广告的处理这也不会讲解

这里主要谈谈3天vip结束后 vip章节都无法观看问题

由于软件有3天试用 很多人在破解的时候 以为改了本地限制就完成了,其实不然,软件是有服务器验证的,3天vip结束后,vip以上的章节都不会有链接,所以就会导致vip章节白屏的情况。


至于本地限制
主要就是判断章节是否vip,收费或超前
只要把相关限制解除 就能观看了
(前提是 本身得是真正的vip会员)
这里只给出关键词
细节则请自行抓包分析

isvip 解锁vip章节限制
is_open_draw 解锁超前章节限制
chapter_charge_status 解锁收费章节限制

另外也可以把price结果改0

以上修改仅仅在还是试用会员的情况下 解除超前与收费章节限制


接下来就是试用会员结束后的处理

从文中可以知道软件提供新机3天试用

聪明的网友可能想到了搞个随机数 每3天或每次打开都是新用户

可是 它有个问题 这软件属于阅读类 阅读历史极为重要 如果每次都新用户 也就说明 不会有阅读记录保存 那即使达到了解锁vip
但也无法达到使用上的满足

这里可以换个思路 整个软件真正限制的地方在于阅读的时候 需要付费解锁

所以是不是就可以只修改阅读部分的限制?
有了想法 就开始抓包吧

主要分析这一条数据包

https://m.samh.xndm.tech/api/v1/comics/getcomicinfo_body


图中为返回的数据 已对重要位置做了标记


接着用浏览器访问免费章节的source_url看看 可以发现 是章节的链接


现在知道为什么会白屏了吧?
因为到期后 vip以上的链接不提供了 导致软件无法读取 所以即使修改本地限制也无用 因为最终验证在服务器。

从免费章节的数据里可以发现
除了红线处会根据chapter_id产生变化之外,source_url的链接 基本是一样的。


这是不是就说明 可以自行把残缺的部分补上?

这里给出3种思路 但只给出一种适合我的演示,同时这些思路不仅仅只适用于此,具体请自行发挥想象。

1.通过正则重写getcomicinfo_body的返回数据 将残缺部分补上

2.为了保留历史,可以只对getcomicinfo_body的uid进行修改
(注:经过分析发现只要对uid进行修改即可重新拥有3天vip)

可是当我搜索dex发现 有多处使用getcomicinfo_body


接着我又发现 get数据的uid是封装好后直接被多处调用


由于以上的思路 我得通过电脑写个Java代码去完成 可是我又不想打开电脑
然后又如我这般的懒人就衍生出了思路3
通过php重写数据 这样我就可以全程使用手机完成

使用php首先需要一台服务器
(有服务器的可以绕过这段)

没服务器的可以借助ksweb 在自己手机上搭建一个
ksweb属于傻瓜式一键安装

安装好后运行软件 会看到如下界面
我这里直接使用默认配置


接着使用浏览器访问               
http://localhost:8080/

http://127.0.0.1:8080/
出现如图中结果即为成功


接着sdcard目录下会有一个htdocs目录
这个目录是http访问的目录,可以把php放进这里


这里新建一个目录 命名为xndm


接下来反编译dex,搜索getcomicinfo_body,随便点一个进入
如图跟随


可以看到 会在这里调用域名,然而这个域名也会在多处被调用,所以不能直接修改为本地服务器地址,不然会导致所有链接都会变成调用本地域名,那就需要写个判断 仅仅只实现指定的链接


图为修改后 修改好了就可以打包了


接下来需要写一份php代码
在xndm目录新建index.php文件
接着文本打开 写入如图代码


好了 现在可以打开软件了 可以发现收费章节已经可以正常观看了


本次教程今天就到这里


后记:
这次主要是通过php利用3天试用达到阅读效果
如果有天不再有3天试用 依旧可以利用php通过正则重写json数据 把source_url补全
不过以后的事以后再说
同样的不想通过php可以使用思路2 在java层把getcomicinfo_body的参数重新封装 也能达到一样的效果

今天的教学 你学会了吗?

低调(d-iao) 发表于 2021-7-22 11:18

☆千年琥珀☆ 发表于 2021-7-22 10:56
膜拜大佬!这个PHP文件方便分享下吗?

本来是希望给你们自己跟着图抄一遍的 这样才可以记住
不过没关系 需要的话这里补上


<?php
header("Content-type: text/json; charset=utf-8");
error_reporting(0);

$file = "uid";

if(file_exists($file)){
getcomic(file_get_contents($file));
}else{
getcomic(rand_device_id(18));
}

function getcomic($uid){
   foreach (getallheaders() as $name => $value) {
       if(stristr($name,"uid")){
          $header[] = $name.": ".$uid;
       }else if(stristr($name,"host")){
         
       }else if(stristr($name,"user-agent")){
          $useragent = $value;
       }else{
          $header[] = $name.": ".$value;
       }
   }
   
    $requestUrl = 'https://m.samh.xndm.tech/api/v1/comics/getcomicinfo_body?'.'comic_id='.$_GET["comic_id"].'&gender='.$_GET["gender"].'&vip_form='.$_GET["vip_form"].'&client-channel='.$_GET["channel"].'&channel='.$_GET["channel"].'&productname='.$_GET["productname"].'&udid='.$_GET["udid"].'&android_id='.$_GET["android_id"].'&version='.$_GET["version"].'&platform=android&platformname=android&uid='.$uid.'&sessionid='.$_GET["sessionid"];
   
    $ch = curl_init();
    $timeout = 5;

    curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
    curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
    curl_setopt ($ch, CURLOPT_URL, $requestUrl);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_ENCODING, "gzip" );
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
   
    $file_contents = curl_exec($ch);
    curl_close($ch);
    unset($header);
    if(strpos($file_contents, '"source_url":""') || empty($file_contents)){
       getcomic(rand_device_id(19));
    }else{
      $fileopen=fopen("uid", "w");
      fwrite($fileopen, $uid);
      fclose($fileopen);       
      echo $file_contents;
    }

}

function rand_device_id($len)
{
        $chars = array('0','1','2','3','4','5','6','7','8','9');
        $charsLen = count($chars) - 1;
        shuffle($chars);   
    for ($i=0; $i<$len; $i++)
    {
      $output .= $chars;
               
    }
    return $output;
}


?>

低调(d-iao) 发表于 2021-7-25 00:31

hello008 发表于 2021-7-24 23:44
手机打这么多代码。。。神啊

这算少了。。。我还有更多的 2000多行吧:lol

PPZ丿皮皮智 发表于 2021-7-22 01:32

看完了。大概的思路为搭建一个本地服务器作为中间层进行生成可以免费看vip章节的uid然后返回给软件这样吗。。那这样的话可以通过云函数去搭建一个接口去搞这东西

开始123 发表于 2021-7-22 02:37

真高手啊!

加奈绘 发表于 2021-7-22 06:51

厉害,向大佬学习。

AQ98 发表于 2021-7-22 06:54

强啊!!!!真的很强

0x07c00 发表于 2021-7-22 07:10

感谢分享啊

tata190711 发表于 2021-7-22 07:26

学会了,感谢分享!

义丶父 发表于 2021-7-22 07:27

没学会…

Wapj_Wolf 发表于 2021-7-22 07:34

确实是我的不足,没入门,得空按大佬的教程,试验一下。

kwangyeonc 发表于 2021-7-22 07:37

这个一定要顶~ 谢谢
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 你的不足,我来补