明:本公众号大部分文章来自作者日常学习笔记,部分文章经作者授权及其他公众号白名单转载。 未经授权严禁转载。 如需转载,请联系开百。
请不要利用文章中的相关技术从事非法测试。 由此产生的任何不良后果与文章作者及本公众号无关。
目前大图推送仅针对常读、加星的公众号显示。 建议大家“把潇湘新安定为明星”,不然可能看不到!
本文已经作者@苏雅图师师许可转发至公众号。 如果喜欢的话可以阅读他的原创文章以及其他文章。
文章来源:博客园(苏雅图)
原文地址:https://www.cnblogs.com/arrdres/p/17335376.html
0x01 开门见山
首先我们来回顾一下“微信绑定手机号数据库被下库”的事件。 我也第一时间得知了这个消息,然后跟踪了整个事件的经过。 以下是该事件的相关截图以及近期泄露的10000个数据样本:
我个人认为这件事没什么。 最好关注一下此前的45亿快递数据查询通道近日疑似复活的消息。
消息就是这样传开的。 真实性尚未确定,因为作者不会冒风险,查询个人信息就意味着账号和个人信息必然会测试是否真实,但我们可以知道的是,之前的查询渠道名为“星链”,现在称为星盾。
我为什么要提到这两件事呢? 因为我要写的微信小程序抓包教程和第一个事件有关。 也可以说是受到“坐一旁”的启发。 事件发生后,“如何获取某个微信账号的wxid”的问题迅速在某个圈子里火爆,也有人很快给出了思路。 方法也很简单。 我在这里简单地重现一下:
特别说明:此思路仅适用于iOS系统(苹果系统)
1. 从 Apple App Store 安装“Stream”软件:
2. 配置代理并安装证书。 内置教程,此处省略。
3. 开始抓包。 (为了方便我在iPad上测试)
4.在群里找到目标,点头头像,右上角进行投诉。
选择任何投诉原因。 注意,这并不是真正的投诉,只是获取加载的数据包。 最后一步不需要提交。 返回工具页面,点击上传流量即可查看数据包。
选择“按域名”查看数据。 一般情况下,上报功能会请求weixin110子域名。
选择红框中的POST请求,exposeh5cgi是标识符。
选择请求模块以查看请求的数据包。
然后向下滚动并单击以查看请求正文。
箭头处的realChatUser是“投诉用户”的wxid。 获得wxid意味着即使不知道对方的微信名也能找到用户的手机号码。
这就是我今天要分享的抓包思路。 同理,微信小程序也是可以的。 我应该不是第一个知道的,但是实战中有一些细节需要注意。 我会在文章最后讲到。 因为可能有人要反驳我,微信小程序抓包不是有很多思路吗? 确实,你是对的。 毫不夸张地说,你所知道的想法我都明白,但问题是很多想法很容易失败。 这里我列出一些基本的想法。
第一种:使用Burpsuite配合模拟器进行抓包
众所周知,Burpsuite是渗透测试必备的抓包工具。 从微信小程序中抓包也应该很方便。 您可以通过在模拟器中配置证书来抓包。
起初这个想法大家都知道,但后来微信改变了规则,这个方法就失效了。 前几个月有消息称微信似乎禁止登录模拟器,检测到会警告账号被封禁。 该消息是否属实尚未得到证实。 当然,更专业的同学可以安装“Xpose框架”之类的东西,让模拟器更加强大,或者说可以绕过微信检测机制吗?
第二种:使用Fiddler在微信PC端抓包
Fiddler 也是一个功能强大的数据包捕获工具,或数据包分析工具,可以调试计算机上的 HTTP 流量。
有些事情Burpsuite做不到,它可以,而且我个人用得比较少。 Fiddler既适用于微信PC端,也适用于模拟器,但这个想法似乎从去年11月左右就已经过期了,具体细节尚未确认。
第三种方法:微信PC端使用Charles抓包
根据官网介绍,Charles是一个HTTP代理和HTTP监控工具,主要适用于网页浏览器。
查尔斯俗称“花瓶”。 应该说,它是安全圈中的“后来者”抓包工具。 我平时经常使用它,因为这个工具可以捕获某些“特殊”数据包,例如JavaScript触发的数据。 包? 我也不知道怎么形容。
需要补充的是,上述三种思路还可以结合在苹果手机上设置“网络代理”,使用“电脑工具”来捕获手机的数据包。 具体来说,还可以用来捕获“微信小程序”或“手机QQ”的一些数据包。这个想法笔者亲自测试过,但目前还不清楚是否仍然有效。
之前的代码为了能够分享当前文章到QQ我是这样写的
shareToQQ(){
let url=`https://connect.qq.com/widget/shareqq/index.html?url=https://我的网站/#/article/${this.id}&source=https://我的网站.com&title=${this.article.title}&summary=${this.article.content.slice(0, 42)}&desc=${this.article.title}&pics=https://我的网站.com${this.article.cover_image}`
window.open(url)
}
结果出现了发给好友,好友打开的不是文章详情页,而是网站的首页,思考了几天,最后在一个地方发现别人的写法:
<a class="lqq" target="_blank" href="javascript:void(0);" οnclick="window.open('http://connect.qq.com/widget/shareqq/index.html?url=' + encodeURIComponent(document.location.href) + '
&desc=邀请详情&title=标题&summary=简介&pics=&flash=&site=邀请人或网站&callback=" title="QQ登录">qq</a>
发现它的url外面有encodeURIComponent(document.location.href)包裹,于是我改了下自己的代码:
shareToQQ(){
let href=`https://我的网站.com/#/article/${this.id}`
let url=`https://connect.qq.com/widget/shareqq/index.html?url=${encodeURIComponent(href)}&source=https://我的网站.com&title=${this.article.title}&summary=${this.article.content.slice(0, 42)}&desc=${this.article.title}&pics=https://我的网站.com${this.article.cover_image}`
window.open(url)
}
问题解决!主要的区别就是把网址单独写了一个变量并用encodeURIComponent()方法包裹,可能是QQ那边不支持我原有的写法吧,也希望大家能够帮忙解答一下,不过最后还是解决了问题。
天发布了一篇破解豪迪QQ群发的破解笔记 http://www.52pojie.cn/thread-628301-1-1.html
贴中有坛友提出想要一个QQ登陆器的破解 @AquariusSign
正好昨晚有时间,就下载下来简单看了一下,发现和群发破解思路差不多,正好拿来练习一下,笔记如下:
一、查壳加区段
大神们都说,养成好习惯!所以第一步还是安装豪迪QQ登陆器2017.6.28版本。查壳,加区段以做备用
使用ExeinfoPE查壳,发现程序无壳,为Delphi编写程序
使用StudyPE增加一个52pojie区段,同时得到内存偏移地址:00596000
二、破解本地验证
初步运行程序,点击注册按钮,发现和QQ群发注册界面基本相仿,确定本地破解思路也基本一致
打开OD程序,载入HDLoginQQ.exe
中文搜索 UNICODE,查找 已注册版本
通过代码,我们可以确定内存地址0x548074为存放是否注册成功地址,如果值为1则为已注册
这里我们查找所有常量,得到五处地址
第1处,直接赋值0,我们将0改为1
第2处,进行数值比较,如果没注册就跳转,为保险起见,我们将JE行NOP掉
第3处,此处分析代码,初步本地验证注册码,我们直接强制跳到赋值1处 即 jmp 00533FF4
第4处,这里判断条件,直接改为代码赋值 mov byte ptr ds:[0x548074],0x1
第5处,比较数值,没注册版本跳转,我们这里直接把JE行NOP掉,让它永远是注册版本哈
修改好以上几处,保存文件,重新载入运行
三、破解网络验证及自动更新
由于我们强行将注册内存地址数值改为1,这里我们运行发现,已经触发了网络验证
出现了 正在验证...字样,我们尝试使用中文搜索,结果直接搜到地址
通过分析此段代码发现
该地址为验证注册地址,那么我们即可继续查找常量 0x5444B0 共查到6处
第1处,取出后直接赋值1,不做修改
第2处,取出后直接赋值0,改为1
第3处,取出后进行比较,此处下面有个JE,可以直接NOP掉,或不修改,因为下面我们会把整段RETN
第4处,取出后直接赋值0,改为1
第5处,取出后直接赋值1,不做修改
第6处,取出后直接赋值0,改为1
这样程序无论是本地验证还是网络验证,均为注册状态
然后我们保存文件后 返回 正在验证... 地址 005315CB
通过跟踪程序我们发现,些段为网络验证及自动更新获取信息函数,我们可以直接到段首 retn 掉
四、破解注册窗口输入注册码点确定后网络验证注册码
OD运行脚本 各语言按钮事件 “Delphi & VB事件断点查找脚本.osc”
运行程序,进入注册窗口,输入12位数字,点击确定后OD中断在 00534290
单步跟入会发现连接网址 http://www.hd466.com/cgi/check.d ... 8123654789012365478 进行验证
通过网站返回信息进行验证。
进入CALL,直接 retn 4 掉,之后我们保存重新载入运行,点注册后
程序显示注册成功后,会自动重启进行验证,当然,重启还是注册版本,哈哈
五、破解自校验
注册处理完毕后,我们即尝试输入几个QQ号后点开始登陆
看到这个提示,我们确定程序有自校验功能.
根据破解QQ群发经验,校验前会加载 Desklog.dll 文件,我们中文搜索此文件名,直接来到
继续跟入,来到关键CALL点
跟入发现自校验代码段
这时我们需要使用OD载入原版本程序,设置 004D68B2 处断点,运行程序到代码处会暂停,此时程序窗口还没有启动,注册观察EBX值为6
程序窗口打开后,我们随便添加个QQ号和密码,点击开始登陆,程序会再次暂停,此时EBX值为10
数据窗口跟随,得到16位校验二进制码 BE 2F DB 17 22 E8 E6 21 72 44 34 4B 93 12 25 A2
这时我们进行代码修改
保存文件后重新运行程序,已经可以正常登陆QQ,说明修改自校验成功
六、破解登陆QQ个数限制
通过以上修改后,当选择的QQ个数超过3个时,还会出现提示
为什么我们修改成已经注册的版本还会出现此提示呢?这就是程序设置的暗桩吗?
于是重新加载程序,运行按钮事件脚本,运行程序,点登陆后中断
单步跟入,分析整个代码段,找到关键代码点
这里将JLE改为JMP,即不管数值是多少,都启动登陆QQ程序
原以为程序到此已经完成破解,即运行程序,随便点击按钮测试,突然发现
设置选项里有此功能,软件作者会不会在此也加入暗桩呢?
答案是肯定的!!!
当我们尝试双击分别登陆QQ,登陆到第四个QQ时,依然会出现提示:未注册版本只能登陆3个QQ
那我们依然运行按键事件,双击第4个QQ运行,程序中断,继续单步跟入,发现关键代码
此代码段和上面的基本一样,那还等什么,果断将JLE改为JMP
全部保存后,再次运行程序,无论如何登陆QQ,程序均一切正常。^_^
七、总结
简单的对注册窗口等处做下修改。
此次破解虽然和QQ群发很多地方相似,但也用了几个小时进行调试
总体来说,有了上一次的学习笔记,给这次破解打下了基础,也少走了不少的弯路
本想本次修改使用内存补丁工具,省得过自校验那里,苦于修改代码较多,懒得去整理,于是还是爆破吧
感谢吾爱论坛提供这么好的平台,让我能不断的成长和学习!
各位看官到此是不是也看累了,加分时间到了!!! 哈哈
来看下最后的成品图
需要的软件的可以关注我们 联系作者
*请认真填写需求信息,我们会在24小时内与您取得联系。