参考:http://blog.renren.com/blog/239362558/903375190
一些简单逆向工程时的笔记,没有仔细整体,欢迎交流。基本的结论是:
1. 微信划分了http模式(short 服务)和 tcp 模式(long 服务),分别应对状态协议和数据传输协议
2. 从抓包观察到的流程看,其协议不是太复杂,但是代码混淆较重,逆向代价较大
1. 使用逆向工程的工具,主要照顾安卓版
在mac下使用brew比较容易:brew install apktool
2. 下载最新的微信apk,4.5 2013 - 04 - 12
3. 反编译后建立工程
apktool d com.tencent.mm.apk weixin
可以在生成的weixin文件夹,浏览其工程结构,但是smali文件本身看的实在是头疼,用 dex2jar 工具 (https://code.google.com/p/dex2jar/ )简单转换为一个jar包后使用 jd-gui 查看。
3.1 使用 d2j-dex2jar.sh 转换为jar包
3.2 使用 jd-gui 阅读
结构:
1. com.tecent.mm.booter.CoreService 可以看到核心入口,可以看到这是一个activity
2. com.tecent.mm.ad -> com.tecent.mm.network 这个是网络核心包,做了极度的混淆
到这里发现实在没有精力去猜测了,还是直接抓包方便一些
协议抓包:
1. 先获取手机的root权限,刷机,应该申请一个方便一键刷机的机型。
http://jingyan.baidu.com/article/e8cdb32b847aa937052bad35.html
2. 获取一个安卓版本的tcpdump
http://www.eecs.umich.edu/~timuralp/tcpdump-arm
3. 获取一些dump数据
3.1 ./tcpdump -p -s 0 -w /sdcard/capture.pcap
3.2 登陆微信,进行一些发送接受操作
3.3 ctrl-c 掉 tcpdump
3.4 将 capture.pcap adb pull回来
4. 用wireshark进行分析
tshark -r capture.pcap -Vx > capture.ana
tshark -r capture.pcap -Vx -z expert,ip.addr==180.153.218.191 > capture.long
tshark -r capture.pcap -Vx -z expert,ip.addr==180.153.82.27 > capture.short
5. 结论:
微信包含了两类服务器 short (short.weixin.qq.com) 和 long (long.weixin.qq.com)
其中long的量较多,dns可以查到6台入口,short有2台
long 服务分析:
long.weixin.qq.com: type A, class IN, addr 180.153.218.191
Name: long.weixin.qq.com
Type: A (Host address)
Class: IN (0x0001)
Time to live: 12 minutes, 56 seconds
Data length: 4
Addr: 180.153.218.191 (180.153.218.191)
long.weixin.qq.com: type A, class IN, addr 101.226.62.23
Name: long.weixin.qq.com
Type: A (Host address)
Class: IN (0x0001)
Time to live: 12 minutes, 56 seconds
Data length: 4
Addr: 101.226.62.23 (101.226.62.23)
……
1. 抓包的结果是看到大量的http-alt,如果不意外的话,应该是LVS集群,提供长连接的tcp服务。
2. 数据的收发相关的应该从这里进行,协议为纯二进制
short 服务分析:
short.weixin.qq.com: type A, class IN, addr 180.153.82.27
Name: short.weixin.qq.com
Type: A (Host address)
Class: IN (0x0001)
Time to live: 10 minutes, 47 seconds
Data length: 4
Addr: 180.153.82.27 (180.153.82.27)
short.weixin.qq.com: type A, class IN, addr 180.153.218.192
Name: short.weixin.qq.com
Type: A (Host address)
Class: IN (0x0001)
Time to live: 10 minutes, 47 seconds
Data length: 4
Addr: 180.153.218.192 (180.153.218.192)
1. 安卓wifi场景下,连接到 180.153.82.27 服务器
2. 汇报状态
POST /cgi-bin/micromsg-bin/statreport
content 长度 360
可以反查到 com/tencent/mm/modelstat/a 为状态汇报逻辑
3. 汇报strategy
POST /cgi-bin/micromsg-bin/reportstrategy
content 长度 248
可以反查到com/tencent/mm/plugin/c/b/k 为汇报strategy 逻辑
看了下代码,是一个奇怪的数字308,待猜
4. 服务器通过http传过来几个 micromsgresp.dat
这里不明觉历,该文件没找到
看了下,推过来的数据是2个,正好我的未读消息显示的泡也是2个,有可能是它们
5. 自动验票
POST /cgi-bin/micromsg-bin/downloadpackage
反查到 com/tencent/mm/w/i
没看明白,里面包含一些ticket逻辑,待猜
6. 服务器再次推送过来 micromsgresp.dat
结合上面的验票,有可能是离线QQ的相关内容?
7. 再次汇报状态
POST /cgi-bin/micromsg-bin/statreport
两次汇报的时间戳:
1. Arrival Time: May 4, 2013 22:27:08.276868000 CST
2. Arrival Time: May 4, 2013 22:27:10.449625000 CST
猜测微信将汇报状态作为某种心跳,其间隔为2s
8. 服务器再次推送过来 micromsgresp.dat
待猜
9. 再次汇报状态
POST /cgi-bin/micromsg-bin/statreport
时间戳:
Arrival Time: May 4, 2013 22:27:12.606075000 CST
相关推荐
Airkiss是微信提出的一种无线应用层协议,主要用于给无法交互的硬件设备进行网络配置, 如(智能)插座,灯泡,飞机杯等. 其原理是将硬件设备的网卡置于监听模式(monitor mode), 又称为混杂模式(promiscuous mode), 从而...
支持c++写的冒泡排序饿的的算法,性能怎么样需要最测试,纯属研究,谨慎下载
关于微信交互协议和加密模式的研究,值得借鉴。
这个是PC微信2.6.3.68的协议源码,分享给大家,一起研究!
微信演示微信协议Demo源码:包括ipad,mac,pc三套,仅用于研究学习,不保证可以使用
微信mac / ipad协议Demo源码 声明 直接自己学习研究使用,不保证可用,引起任何法律纠纷概不负责 QQ交流群
非常详细的介绍了怎么从逆向的教程研究PC端微信,作者的研究思路步步深入,跟着动手做,学会不少东西。
微信协议 1. 协议简介 微信协议源码、SDK开发包、API接口 为开发者提供功能丰富、对接简单、高并发、低延时的二次开发协议技术支持 可用于开发各类基于微信个人号的爆粉接粉云控系统、拉群炒群客服系统、智能回复...
重要声明:本微信小程序会话管理客户端代码是探索阶段的产物,仅供研究学习,其使用的协议、算法均未和微信最新的要求对齐。生产环境请移步使用 Wafer。 微信小程序会话管理中间件 微信的网络请求接口 wx.request() ...
最近想研究下微信小程序,拿自己网站的接口做了一个 遇到的几个小问题给大家分享下 一、异步请求的网址只支持https协议,所以调用接口用另外的一个域名做了一个跳转 二、下拉刷新 直接在js中监听这个事件就行,下拉...
基于TLS1.3的微信安全通信协议mmtls介绍 聊聊HTTPS和SSL/TLS协议 微信开发者工具 小程序基于的浏览器内核 微信小程序运行在三端:iOS、Android 和 用于调试的开发者工具 在 iOS 上,小程序的 javascript 代码是运行...
这个是PC微信2.5.76的协议源码,分享给大家,一起研究!
摇一摇周边是微信针对低功耗蓝牙硬件(支持iBeacon协议,下文简称iBeacon设备)提供的连接入口。在手机蓝牙打开的状态下,当用户在微信中打开摇一摇时,如果周围有iBeacon设备,会自动出现周边入口。此时用户摇一摇...
自己写的基于微信小程序的手机端拍照并通过websocket协议上传至PC同时根据上传的图片做一个简单的工件缺陷的标注处理,写的非常简单,没有什么算法之类的,只是对自己学习图片传输及处理的一个记录,同时也是对自己...
我也是在csdn下载的。已经能运行了,win32位系统vs2013,看看大家有没有一起研究的。调试后只能接收消息,无法获取好友和群以及公众号列表。
iPad微信协议712 ipad协议提供网络服务,提供源码部署服务github的代码为c#合理参考; 目前主要功能: 扫码登录,62数据登录等获取用户信息,用户相关信息(获取,搜索,添加,修改等)通讯录消息,消息同步等群...
微信开发sdk,微信二次开发SDK,微信开发API接口协议。非微信ipad协议、非mac协议,非安卓协议,api可实现微信99%功能; 无需扫码登录、可收发朋友圈、查看朋友圈、朋友圈互动点赞、评论、 好友列表、微信消息收发、...
ipad协议demo(分享一套协议)自己封装了一套协议,提供给大家研究交流。
最近微信连通一切的口号这么火,突然想研究微信认证能否和CAS整合。 环境: 微信 6.1 Android版 CAS 3.4.12 手头的老版本 ##二、微信认证简介 微信授权大致和Oauth协议差不多,主要步奏为: 源自: 第一步:用户同意...