吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 4241|回复: 52

[原创] 关于“请在X信客户端打开链接”的分析

  [复制链接]
jimmyzang 发表于 2019-11-19 16:51
本帖最后由 jimmyzang 于 2019-11-20 07:42 编辑

11-20日重新编辑排版
人生总有一些无奈,有的时候是需要把快过期的微课下载到本地,准备以后看看。或者是偷偷地帮自家的孩子投个票,
结果一头撞到“请在x信客户端打开链接”上头破血流。网上查阅了很多很多资料,大多语焉不详,有的说修改UA,
有的说抓包,到底为啥没有人说的清楚。我找了几个很有代表性的例子,给大家分析一下。

遇到这个提示一般是因为在其他浏览器中打开X信中的链接的时候,我这里分析的是在PC上,

分析工具:X信PC端, fiddler, olldebug, IDA可能分析过程中有疏漏或者错误,请大家斧正。

先搭建环境,简要介绍一下,olldebug启动xxchat PC端电脑登录, fiddler需要配置成可以抓取https模式(具体这里不展开,可以网上查找具体步骤)。

lDA分析 xxchatwin.dll (主要代码逻辑在这个dll中)

目前从我找到的这些例子看起来,一般的流程是:
1:当您在xxchat中点击某网址后,首先xxchat客户端浏览器发送请求到该网址。



2:该网址可能会判断是否有xxchat浏览器发出,如何判断,我这里看到的几个网站都是根据UA来判断。这也就是为什么很多网上教程说修改UA就可以生效。
请注意,有些网站的链接是同时支持PC端和xxchat 客户端,所以如果不修改UA的话,返回的是PC端适配的网页。后续步骤就全部都不同了,需要小心。


3:如果是xxchat浏览器发出,有些网站会多发一个302的重新定向请求(为了区分PC,和xxchat)。 微信1.png


4:这是这个网址的第二个页面,是调用xxchat的服务器API生成,大部分都类似于如下图:

微信2.png 微信3.png

需要注意红色部分,这里面此网站要根据X信给的私钥生成最关键的key。然后好玩的时候来了,有些网站或者是比较早期的时候,

key,pass_ticket(每次登陆唯一标识), uin(用户的唯一身份表示)这三个关键信息是有可能直接跟到Transfer这个网址后面的。
就是我红框的位置, 这样其实就很简单了,直接用就好了。

4:上一步是跳转到https://open.XXXX.XX.com/connect/oauth2/authorize。。。。这个网址,就像是你要访问的服务器已经给xxchat服务器说:

“老板,过一会要来一个客人,头戴草帽(pass_ticket),长得潇洒无比(uin),手拿我的定情信物(key)。 你千万不要拒之门外呀。”
于是乎这里还有两个验证,第一个验证就是地域验证,你是不是xxchat客户端,如果不是我还是照样可能拒绝你,这次可是X信的服务器拒绝你。
所以这里的UA还是要修改。也就是说,向这两个网站发出的UA都必须修改为xxchat客户端的UA,才可能通过。


第二个验证就是UIN,key, pass_ticket。
如果没有或者验证失败,也会出现 “请在X信客户端打开链接”,而且很恶心的是,给出的错误代码和没有配置UA是一样的。
所以很多小伙伴不停的怀疑是不是啥地方写错了,其实根本没错,就是因为UIN,Key,Pass_ticket不对或者不在而已。


第三步的时候,有些网站直接返回了这三个值,那就简单了,啥都不用管,你的系统浏览器自己会跳转的,恭喜你可以到第五步了。


现在需要看一下如果第三步中如果网站上没有给这三个值怎么办呢?(其实另外其他两个值我们可以自己在客户端获取,主要是key拿不到。)
如果没有给这三个字,一般都会带一个#xxchat_redirect字段,这就是你要访问的网站服务器告诉x信客户端,你等我的飞鸽传书吧!

5:简单回顾一下,如果如果第三步中如果网站上给出的是UID,key,xxchat的值,其实所有的工作就是把这三个网址的UA修改为

“Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 QBCore/4.0.1278.400 QQBrowser/9.0.2524.400 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2875.116 Safari/537.36 NetType/WIFI MicroMessenger/7.0.5 Windowsxxchat”


就可以解决了,但是这样的网站越来越少。我们看一下回复#xxchat_redirect字段,我们打开Olldebug跟踪一下:


微信4.png
本来有个断点在msg 接受那边的,结果怎么都找不到了,给大家断在数据库查找这边也是一样的,可以看到xxchat收到msg以后先存到数据库,

然后从数据库中取出这个url重新发送出去。


也就是带有#xxchatredirect字样的,应该是网站调用xxchat API把具体重定向地址发送给xxchat 服务器,
xxchat服务器发送这个信息给客户端,然后客户端的xxchat浏览器自动重定向到这个网页。这样我们的外部浏览器就真的没办法自动定向了。
因为无法单单依靠浏览器截获到xxchat服务器给xxchat发的消息。


本来想写一个xxchat插件,拦截这个消息的,但是后来想了想其实没有这么麻烦。
直接在fiddler里面抓这个URL就好,这里面都带了这三个参数。写一个插件还要解释插件本身没有病毒,也挺烦的。对于只想打开某个网页几次的同学,
直接用fiddler抓包就好,两个步骤,第一个,先用Fiddler发送第一个包,这个包属于你要看的网站,然后在发送第二个包,这个是给xxchat认证。

微信5.png
一般来说,这样就可以解决90%的问题。



不过有的网站还多一步检查,在第二步返回的页面,有关于对于xxchat的调用检查,真的好烦。。。比如
微信6.png
但是实际上,这个时候我们key拿到,uid拿到,pass_ticket拿到,还有啥好担心的呢?无非就是一些javescript而已,页面调试一下就好。



不过千万注意,这个地方如果出错,也会提示请在X信客户端打开链接。好吧,人间不值得。


那批量的操作应该咋做呢?Fiddler可是可以写插件的。用插件和你的python或者程序沟通,拿到那三个关键的数值,就可以批量抓取了。
需要注意的是这些值有过期时间,根据每个网站不同而言,需要定期重发一下,其中我见到过最严格的是10分钟过期。

基本上经过这么几步,你的PC上的浏览器就可以跑起来了,你也可对那些可怜的羔羊为所欲为了。 此文章只讨论可行性,不提供代码。请不要问我要代码实现啦,谢谢。

免费评分

参与人数 27威望 +1 吾爱币 +39 热心值 +24 收起 理由
lttzsn + 1 + 1 我很赞同!
Jack + 1 + 1 用心讨论,共获提升!
misakamikoto66 + 1 + 1 用心讨论,共获提升!
zishangwuse + 1 + 1 我很赞同!
bob518618 + 1 用心讨论,共获提升!
对影三人 + 1 + 1 谢谢@Thanks!
dreamlivemeng + 1 + 1 谢谢@Thanks!
生有涯知无涯 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
shadaw1 + 1 + 1 谢谢@Thanks!
sxwzxc + 1 + 1 我很赞同!
北上飞 + 1 谢谢@Thanks!
xiaoyxf + 1 + 1 没怎么看懂,但感觉很厉害的样子
bugof52pj + 1 + 1 谢谢@Thanks!
Hegemonism + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
wuyou520 + 1 + 1 我很赞同!
笙若 + 1 + 1 谢谢@Thanks!
Kevin-Register + 1 + 1 用心讨论,共获提升!
yndoc + 1 用心讨论,共获提升!
rmao189 + 1 + 1 我很赞同!
斜飞 + 1 + 1 我很赞同!
penGpng + 1 + 1 谢谢@Thanks!
John_Mac + 1 我很赞同!
独行风云 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Poner + 1 + 15 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
hahayuan + 1 + 1 我很赞同!
逍遥一仙 + 2 + 1 用心讨论,共获提升!
zh88664422 + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

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

 楼主| jimmyzang 发表于 2019-11-22 06:02
皇帝陛下万岁 发表于 2019-11-20 09:57
请问投票限制次数的,调用了xx 的api查用户,这个是不是没办法饶过了

具体问题具体分析,根据上面的逻辑,我们已经可以脱离x信的浏览器了,他调用api也是xxxbridge之类的,可以根据逻辑给他改一下.
不是没有成功的希望。要看服务器校验有多严格。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
皇帝陛下万岁 + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| jimmyzang 发表于 2019-11-20 19:08
a87399 发表于 2019-11-20 10:32
这里我就是想问一个问题,我在做网页授权的时候,好像没有遇到key,uin和pass_ticket情况,基本上都是网 ...

你可以再仔细看一下这个文档,里面写的很清楚:
第一步:用户同意授权,获取code

在确保x信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面
https:/xxxxxxxxxxxxxxxx/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

并且在后面强调了#wechat_redirect        无论直接打开还是做页面302重定向时候,必须带此参数

我的文章主要是讲,为啥必须带这个参数,你说的是做网页授权,是指的服务器端的web网页重定向到这个网址, 让用户发起这个https的请求。

那服务器为啥要让客户端带了这个参数,x信客户端的浏览器是如何处理这个参数的,为啥其他的浏览器不能处理,这是我这篇文章回答的问题。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
a87399 + 1 + 1 嗯嗯,明白了,谢谢!

查看全部评分

tzp371326 发表于 2019-11-19 16:59
 楼主| jimmyzang 发表于 2019-11-19 17:02
顺便记录一下两个个ollydbg的点,基地址F3F1000。
0FB509A5  |.  68 94D55D10   push WeChatWi.105DD594                   ;  navigateToUrl url:%s firstLoadUrl=%d
弹出网页重定向输出log。
0FB4D621  |.  68 30D25D10   push WeChatWi.105DD230                   ;  GET_A8KEY_SUCCESS_FULL:%s
Get A8 key 成功信息


1994Vampire 发表于 2019-11-19 17:06
就喜欢这种及时的回复和深度好文,在吾爱学到很多,】
sm3p666 发表于 2019-11-19 17:10
haohaohoah
hahayuan 发表于 2019-11-19 17:16
牛叉。大佬发财。。有这技术。。
传说中的五号 发表于 2019-11-19 17:20
pc微信远程调试下就行的吧
SRXHLB 发表于 2019-11-19 17:48
厉害/:strong
Wang17768161991 发表于 2019-11-19 18:15
感谢分享
a87399 发表于 2019-11-19 18:16
头戴草帽(pass_ticket),长得潇洒无比(uin),手拿我的定情信物(key)

以上不同的值不关怎么变,最终告诉网站,这是A用户

网站会记录A用户,然后网站就提醒A用户,不能重复操作
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:禁止回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2019-12-13 22:28

Powered by Discuz!

© 2001-2017 Comsenz Inc.

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