王小劣 发表于 2019-2-12 17:31

记一次某直播聚合app破解经过

本帖最后由 王小劣 于 2019-2-13 09:29 编辑

一次偶然的机会,我被人发了条 app 推广广告,仔细一看是出售直播聚合 APP 时长的,于是就下载下来研究下如何破解时长限制.



抓包
移动端的 APP下载后出于习惯免不了要抓包看看,结果发现它每次点进直播间后会发送一个请求来判断用户时长是否到期,而且完全是明文传输,内容如下

## 针对 http://p.xxxxx.com/mobile/index/checkUser 的抓包记录

### 请求 Request:

POST /mobile/index/checkUser HTTP/1.1
Host: p.xxxxx.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
Connection: keep-alive
Accept: */*
User-Agent: SmartValleyCloudSeeding/9.0 (iPhone; iOS 11.3; Scale/2.00)
Accept-Language: zh-Hans-CN;q=1, en-CN;q=0.9, zh-Hant-CN;q=0.8, vi-VN;q=0.7
token: ff3a873f33d2e40bbf7181ecb48c9bf3
Accept-Encoding: gzip, deflate





### 请求 Response:

HTTP/1.1 200 OK
Date: Sat, 09 Feb 2019 10:57:02 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Server: WAF/2.4-12.1
Content-Encoding: gzip

{"code":0,"msg":"操作成功","data":{"app_sys_msg":"\b抵制网上淫秽色情,倡导并践行绿色网络!发现违规请举报!"}}

====
该记录由 Stream 抓取,仅用于分析和学习。
知道了判断方式就很好办了,由于 hook app 方法比较麻烦,而且还需要自己签名安装,于是打算从伪造请求返回数据下手



伪造数据(需要有服务器)
首先配置一下 nginx,把/mobile/index/checkUser 拦截后返回想要的数据,然后把其他的原封不动转发给原服务器
server {
      listen      80;
      server_namep.xxxxx.com;
      #charset koi8-r;
      #access_loglogs/host.access.logmain;
      add_header Cache-Control private;
      charset utf-8;
      fastcgi_intercept_errors on;
      location / {
          proxy_pass   http://p.xxxxx.com;
          proxy_set_header Host      $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
      location /mobile/index/checkUser {
          proxy_pass   http://xxx.xxx.xxx.xxx:8081/api4.php;
          proxy_set_header Host      $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }

}
伪造数据返回的 php 代码如下,如使用其他语言请注意在 header 里设置 Date: Sat, 09 Feb 2019 10:57:02 GMT (当前时间)
<?php
header('Content-Type: application/json; charset=utf-8');
header('Server: WAF/2.4-12.1');
header('Vary: Accept-Encoding');
header('Date:'+gmdate('D, d M Y H:i:s T'));
echo '{"code":0,"msg":"操作成功","data":{"app_sys_msg":"\b抵制网上淫秽色情,倡导
并践行绿色网络!发现违规请举报!"}}';
?>

测试成果
想办法修改自己的 hosts为xxx.xxx.xxx.xxx p.xxxxx.com
如果修改 hosts 不方便,可以在服务器上搭建 dns 服务器,然后修改手机 dns 即可
打开软件后发现任何直播间都不受剩余时长限制了

帖子只提供破解此类 app 的思路,不会提供 app 下载方式
如果不违规的话可以 pm 我获取原始app 下载方式.

yqzlove030621 发表于 2019-2-12 21:14

成不成品无所谓学到的才是自己的

paulz2018 发表于 2019-2-12 22:03

本帖最后由 paulz2018 于 2019-2-12 22:07 编辑

这个好,要学习。简单明了,一击就中。好{:1_921:}

王小劣 发表于 2019-4-12 17:59

zhangxiangyu 发表于 2019-3-15 12:15
这样会不会更麻烦了呢,逆向将app的时长判断修改会不会更好一些

hook 进入直播间前的判断肯定简单 ,但是需要自己签名安装 ,我没有个人证书用.

余生请多指教 发表于 2019-2-12 17:55

求个成品@

多幸运遇见baby 发表于 2019-2-12 17:57

用心讨论,共获提升!

王小劣 发表于 2019-2-12 17:57

余生请多指教 发表于 2019-2-12 17:55
求个成品@

大兄弟看看版规.

cheninye 发表于 2019-2-12 18:52

大佬给个成品呗

sye.k 发表于 2019-2-12 19:19

大佬给个成品呗

CCHEN 发表于 2019-2-12 20:27

大大大佬上个接口{:1_918:}

zjk414 发表于 2019-2-12 23:08

求个成品
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 记一次某直播聚合app破解经过