你的不足,我来补

查看 154|回复 11
作者:PPZ丿皮皮智   
准备工具:
1.反编译工具
2.抓包工具
3.ksweb
演示软体:
飒漫画 3.3.22
(目前最新3.3.23 我懒惰更新)                        
收费限制:
1.vip章节
2.付费章节
3.超前章节
新机可领取3天白金会员(无需登录)
教程开始:
关于本地解锁部分教程不会细谈
以及广告的处理这也不会讲解
这里主要谈谈3天vip结束后 vip章节都无法观看问题
由于软件有3天试用 很多人在破解的时候 以为改了本地限制就完成了,其实不然,软件是有服务器验证的,3天vip结束后,vip以上的章节都不会有链接,所以就会导致vip章节白屏的情况。


Screenshot_20210721-210900.jpg (86.83 KB, 下载次数: 0)
下载附件
2021-7-22 01:16 上传

至于本地限制
主要就是判断章节是否vip,收费或超前
只要把相关限制解除 就能观看了
(前提是 本身得是真正的vip会员)
这里只给出关键词
细节则请自行抓包分析
isvip 解锁vip章节限制
is_open_draw 解锁超前章节限制
chapter_charge_status 解锁收费章节限制
另外也可以把price结果改0
以上修改仅仅在还是试用会员的情况下 解除超前与收费章节限制
接下来就是试用会员结束后的处理
从文中可以知道软件提供新机3天试用
聪明的网友可能想到了搞个随机数 每3天或每次打开都是新用户
可是 它有个问题 这软件属于阅读类 阅读历史极为重要 如果每次都新用户 也就说明 不会有阅读记录保存 那即使达到了解锁vip
但也无法达到使用上的满足
这里可以换个思路 整个软件真正限制的地方在于阅读的时候 需要付费解锁
所以是不是就可以只修改阅读部分的限制?
有了想法 就开始抓包吧
主要分析这一条数据包
[ol]
  • https://m.samh.xndm.tech/api/v1/comics/getcomicinfo_body
  • [/ol]复制代码
    图中为返回的数据 已对重要位置做了标记


    Screenshot_20210721-223751_MT Manager.jpg (267.72 KB, 下载次数: 0)
    下载附件
    2021-7-22 01:17 上传

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


    Screenshot_20210721-224510_Browser.jpg (322.77 KB, 下载次数: 0)
    下载附件
    2021-7-22 01:17 上传

    现在知道为什么会白屏了吧?
    因为到期后 vip以上的链接不提供了 导致软件无法读取 所以即使修改本地限制也无用 因为最终验证在服务器。
    从免费章节的数据里可以发现
    除了红线处会根据chapter_id产生变化之外,source_url的链接 基本是一样的。


    Screenshot_20210721-225108_MT Manager.jpg (314.35 KB, 下载次数: 0)
    下载附件
    2021-7-22 01:17 上传

    这是不是就说明 可以自行把残缺的部分补上?
    这里给出3种思路 但只给出一种适合我的演示,同时这些思路不仅仅只适用于此,具体请自行发挥想象。
    1.通过正则重写getcomicinfo_body的返回数据 将残缺部分补上
    2.为了保留历史,可以只对getcomicinfo_body的uid进行修改
    (注:经过分析发现只要对uid进行修改即可重新拥有3天vip)
    可是当我搜索dex发现 有多处使用getcomicinfo_body


    Screenshot_20210721-230410_MT Manager.jpg (239.19 KB, 下载次数: 0)
    下载附件
    2021-7-22 01:18 上传

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


    Screenshot_20210721-230726_MT Manager.jpg (230.72 KB, 下载次数: 1)
    下载附件
    2021-7-22 01:18 上传

    由于以上的思路 我得通过电脑写个Java代码去完成 可是我又不想打开电脑
    然后又如我这般的懒人就衍生出了思路3
    通过php重写数据 这样我就可以全程使用手机完成
    使用php首先需要一台服务器
    (有服务器的可以绕过这段)
    没服务器的可以借助ksweb 在自己手机上搭建一个
    ksweb属于傻瓜式一键安装
    安装好后运行软件 会看到如下界面
    我这里直接使用默认配置


    Screenshot_20210721-232431_Samsung capture.jpg (152.85 KB, 下载次数: 0)
    下载附件
    2021-7-22 01:18 上传

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

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


    Screenshot_20210721-232706_Browser.jpg (258.15 KB, 下载次数: 0)
    下载附件
    2021-7-22 01:18 上传

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


    Screenshot_20210721-234809_MT Manager.jpg (9.08 KB, 下载次数: 0)
    下载附件
    2021-7-22 01:18 上传

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


    Screenshot_20210721-234832_MT Manager.jpg (16.5 KB, 下载次数: 0)
    下载附件
    2021-7-22 01:19 上传

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


    20210722_001747.jpg (88.23 KB, 下载次数: 0)
    下载附件
    2021-7-22 01:19 上传

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


    Screenshot_20210721-233217_MT Manager.jpg (111.48 KB, 下载次数: 0)
    下载附件
    2021-7-22 01:18 上传

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


    Screenshot_20210721-234711_MT Manager.jpg (166.03 KB, 下载次数: 0)
    下载附件
    2021-7-22 01:18 上传

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


    Screenshot_20210722-001502_MT Manager.jpg (339.99 KB, 下载次数: 1)
    下载附件
    2021-7-22 01:19 上传

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


    Screenshot_20210721-211501.jpg (291.82 KB, 下载次数: 0)
    下载附件
    2021-7-22 01:17 上传

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

    下载次数, 下载附件

  • 开始123   


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

    本来是希望给你们自己跟着图抄一遍的 这样才可以记住
    不过没关系 需要的话这里补上
    [ol]
  • $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
  • [/ol]复制代码
  • 加奈绘   


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

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

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

    真高手啊!
    tata190711   

    厉害,向大佬学习。
    义丶父   

    强啊!!!!真的很强
    Wapj_Wolf   

    感谢分享啊
    kwangyeonc   

    学会了,感谢分享!
    义丶父   

    没学会…
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部