前因后果
1、来到吾爱半年有余,一直没什么长进,只能算是一个新手;
2、今天工作单位领导需要导出某一个公众号的历史图文,交给我代办;
3、图文大概200+条,手动麻烦,上网找工具,好用的收费,免费的不好用;
4、找到一款收费工具,名叫微信公众号文章搜索导出助手,打算破解。
破解过程
软件功能介绍就不细说了,试用版本只能爬取文章列表,无法下载到本地。大致原理是用fidder的命令行工具获得PC微信cookies,然后爬取微信公众号历史详细页面所有数据。可能是hook了一些微信的函数,程序对微信版本有要求。我找到的破解版本可以获取文章列表,但是无法下载。索性更新到软件最新版本,尝试破解。
试用版在下载图文的时候,会有个弹窗提示,说这是收费功能,需要氪金。开始计划下断到这个弹窗。后来考虑这样做耗时费力,不划算(其实是自己不怎么熟练),准备另找他法。
后来看到这个软件采用的是在线验证模式,微信扫码登录然后获得帐号信息。猜想是否可以通过改服务器的返回数据来伪装成付费用户。
于是上fidder,重新开启软件,却没有捕获到登录的数据。百度后得知fidder不适用于c\s模式。这个好办,可以用Proxifier解决,Proxifier 是一款功能非常强大的客户端,可以让任何程序走HTTPS或SOCKS代{过}{滤}理。
详细步骤
1、打开fidder的工具-选项-连接选项,设置并查看代{过}{滤}理端口;
2、打开fidder的工具-选项-HTTPS选项,设置证书,以便捕获HTTPS;
3、打开Proxifier-配置文件-代{过}{滤}理服务器选项,添加fidder的代{过}{滤}理地址和端口;
4、打开Proxifier-配置文件-代{过}{滤}理服规则选项,将微信公众号文章搜索导出助手.exe、PC微信、fidder按照如图设置,注意,fd是微信公众号文章搜索导出助手自带的fidder命令行工具,需要设置为不走代{过}{滤}理;
5、设置妥当后,重新打开微信公众号文章搜索导出助手,切换到关于软件选项卡,点击微信头像旁边的刷新信息,就可以看到fidder里捕捉到如下一对数据包:
POST http://api.自己试试.com/api/soft/soft_ckeck_login.php HTTP/1.1
Connection: Keep-Alive
Content-Type: application/x-www-form-urlencoded; Charset=UTF-8
Accept: */*
Accept-Language: zh-cn
Cookie: __cfduid=c70fb9780040698639931584068244; PHPSESSID=reb6m1g9gk785; loginToken=25a1657a242cb8eb019ed8412b28b; userName=00000000; userId=457000000000; avatarUrl=http%3A%2F%2Fthirdwx.qlogo.cn%2Fmmopen%2Fvi_32%2FDYAIOgq83epCKX6gXgpBFDVvwjkicbXEjJOznoZXfOCea6nA%2F132; BAEID=4859A429106AA562CA93E95733793B81; loginFrom=softLogin; macCode=v3@db39578b087fc5a3b3a440721b61f0d3e1240fdd; softId=10; softNameEn=weixinSearch; token=11ac3aa4e94c6bfdab5d52c129b251feeaa6; timestamp=1584068239; kami=sdasdasasd;
Referer: http://api.自己试试.com/api/soft/soft_ckeck_login.php
User-Agent: Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1)
Content-Length: 17
Host: api.自己试试.com
doType=checkLogin
HTTP/1.1 200 OK
Date: Fri, 13 Mar 2020 08:10:47 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: 自己试试.com
Vary: Accept-Encoding
X-Powered-By: PHP/7.2.16
Server: qianxin-waf
WZWS-RAY: 1121-1584115847.531-s3jhg
Content-Length: 155
{"status":true,"message":"\u4f2a\u88c5\u5f00\u901a\u4f1a\u5458","code":200,"vipStatus":-1,"vipExpTime":"\u4f2a\u88c5\u5f00\u901a\u4f1a\u5458","level":null}
6、很明显,验证是否付费就是它了,把响应包保存下载。修改vipStatus为1,修改level为1,vipExpTime为文字显示,这里改成“伪装开通用户”(闹着玩)
7、我们用fidder来实现数据包的拦截和伪造,点击自动响应,设置规则、添加修改好的响应包。
8、好了,返回微信公众号文章搜索导出助手,刷新信息,发现已经成为“伪装开通用户”,成功。
最后
经过测试,程序可以正常使用,虽然写得繁琐,只是为了详细记录。自我感觉比动态调试要简单很多,而且方法和思路比较通用。基本起到四两拨千斤的效果。
我是新手,希望能抛砖引玉。让大神们见笑了。
另外,真心希望能有大神和我探讨一下爱加密的脱壳问题。
|