添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

WxPcHook

Hook技术 可能已经没啥稀奇的了,但我是最近才了解,兴趣浓厚嗷,很多人说做这个是为了赚钱
在文章开头用老师的话说 “ 只用于技术交流,法律边界不得触碰

我在最近通过看视频等等也学到了很多。但从视频中学习有个缺点,就是别人已经告诉你怎么解决这个问题。比如去CE里搜索某些特征码之类的。比如下面我要讲的 “防撤回” 大佬们的教学一开始就让你搜索 revoke 这个关键字 (这是我找完CALL以后再看一些教程文章了) ,感觉多半还是有点运气成分在,所以我尝试通过之前学习的知识,自己解决一下这个问题。

我们能在接收消息CALL中获取以下参数
1. 谁发给你的?
2. 发了什么?
3. 什么类型?
4. 还有一串加密的类似hash的字符串(可能是标识作用)

如果我们是程序员,我们在做撤回功能的时候肯定得给函数传入参数应该就是消息的ID吧?

那我们现在对程序内部是一无所知的,所以我想通过我们看的到的去追寻我们看不到的。

查看看得见的变化

我们在wx中撤回一条消息,原信息消息,输出了一条 “某某某 撤回了一条消息”

所以在CheatEngine中搜索 “撤回”

返回了20多条结果
在这里插入图片描述
可以把 “Type” String Unicode 长度的大一些,这样我们就可以看到在这条记录后面跟着的很多数据。

20多条数据,测试起来很方便了,直接将他们拉下来进行进一步测试

第二步选定变量地址

我们重复撤回,寻找跟随变化的变量地址,乱码的变量就可以直接删掉了,因为是个临时变量。

这样就能更加精确的缩小范围。

第三步内存断点

函数在撤回消息的时候,肯定需要访问内存获取数据。
可以通过内存断点,查询堆栈中函数调用的情况

在这里插入图片描述
在这里我们看到了即将撤回的 消息内容,和即将输出的内容,这说明附近可能有我们要的函数地址。继续往栈底看。
在这里插入图片描述
有我们要撤回的消息,和消息中的那串加密字符串。 找到需要的参数数据!!
我就在此函数地址下断

  1. 收信的时候,不执行该幻术
  2. 撤回的时候,执行了该函数

这说明这是撤回操作需要的函数【很可能是我们要的】

mov eax,[arg.1] // 传入参数
test eax,eax
push eax
call 函数
add esp,0x4 // 平衡堆栈

我修改 call 直接 jmp 到下一个命令,发现消息并没有撤回,但是点击继续运行,消息撤回了!

这说明:这个函数是必经之路,但是不是最重要的,撤回的函数应该在其后面。

然后我傻乎乎的跟进函数,发现进入的一个循环。姑且认为是个消息循环,总之没跟随到。

再换一个思路…

之前断下的函数传入了一个参数 [arg.1],保存再eax,eax呢又压入了堆栈让即将调用的函数使用,那么问题来了,[arg.1]就是我们看到的堆栈esp中的一些参数

<?xml version="1.0" encoding="utf-8"?>
<sysmsg type="revokemsg">
  <revokemsg>
    <session>wxid_0h3n1axxxxxxxx</session> 佛系打码
    <msgid>1701xxxxx</msgid> 佛系打码
    <newmsgid>79069xxxxxxxxx</newmsgid> 佛系打码
    <replacemsg><![CDATA[":)" 撤回了一条消息]]></replacemsg>
  </revokemsg>
</sysmsg>
VOID func1(msg,param){
	// win 的消息循环
	switch(msg){
		case "撤回":
			revokeMsg(param);
			break;
		default:
			break;
// 我们当前的函数
VOID revokeMsg(param){
	func3(param); //我们要的call
VOID func3(arg_1){
	// 做了一些函数

所以说调用这个函数的函数,即外层函数,所以我们要继续外层找,看堆栈里。
在这里插入图片描述
看到这里,这儿已经是比较外层,再往下就没有消息的参数了,而且看到了

LASS SycnMgr 我也不知道这是啥

一种猜测
Mgr:MySQLGroupReplication
Sycn:同步
MySQL Group Replication 是MySQL官方推出的一个全新的高可用与高扩展的解决方案,提供高可用、高扩展、高可靠(强一致性)。

不管Wx的意思是不是这个,这个 可能 是一个消息循环【现在只是猜测,我没有告诉大家这就是一个消息循环的特征码】

我们跟进这个CALL下断点,发现这个CALL的调用是在我们之前断点之前的(这当然是理所当然的了,因为我们是通过堆栈的栈底找到的这里)

我直接使用F8尝试步过这个函数,发现界面上的消息还是没有撤回,说明这里还不是真正我们要的入口。那么在汇编代码窗口网上寻找,找到主函数入口,并且下断点。
在这里插入图片描述
撤回的时候,任然能够被断下。
直接修改汇编,push ebp 为 ret

暂时步去管会返回到哪里去,我们就先做个尝试,果然消息就不撤回了,并且程序也没有崩溃。

这样我们就轻松定位到了防止撤回的CALL的位置。

在回到那个 LASS SycnMgr,我是如何判断他是一个消息循环的特征字符呢?

在我们找到应该说是最外层调用的撤回函数,再外层就应该是消息循环了把???

不如动动手,追踪一下

这里大概才可以看出是个消息循环吧??
判断消息类型是啥???等等等等。。。

我使用的是最新版的 2.8的版本,有兴趣的小伙伴可以跟我一起研究。

本文只用于技术交流,法律边界不可触碰

运行程序,手机端微信扫描弹出的二维码即可登录网页版微信,程序会将网页版微信收到的所有消息都缓存下来,当检测到有消息(语音、文字、图片等)撤回时,将撤回消息的缓存版本通过文件传输助手发送到自己的手机上,如下图所示。 不知道大家有没有遇到过这种情况,微信收到消息,但是没有及时查看,然后闲暇时去看的时候,消息被撤销了,撤销了! 那时肯定是无比无语,挠心挠肺,究竟发了什么? 有没有一种神器可以消息撤销呢,有的!其实移动端和mac上已经有人做了相关的插件,但是PC端貌似没人来啃这块骨头。 当然也可能是我没找到,不过不... 本项目的撤回,实际上的原理是这个微信和你聊天的对象同处再一个群里,它会实时监控聊天记录,检测到消息状态为撤回,就会从撤回之前的保存的记录里,拿出这条数据,转发给出去,从而达到一个撤回的效果。通俗的讲就是实... 很多人想看到别人撤回的消息到底是什么,下面一个插件可以阻止别人撤回消息(本人电脑的微信版本是2.6.7.57,不知道在其他版本上是否也能用) 百度网盘下载链接:https://pan.baidu.com/s/1kKdXW8r79dx9v12O7slqrQ 提取码:zhps 下载解压之后是这个: 点击打开微信的根目录,将其移动到里面: 双击运行,并点击应用: 注意:在最后一步... 微信,大家工作中生活中用的最多的一款应用;很多公司喜欢用微信来作为工作沟通的工具,官方原版只支持登陆一个微信,这对于需要在电脑上登陆多个微信账号的朋友来说肯定是极其的不方便。另外有的时候别人撤回了一些重要消息,会导致我们错失部分重要内容。下面就给大家介绍一些微信多开及撤回的方式,亲测有效。 有时候经常有人给你发消息后撤回的,故想着怎么样才能撤回撤回的原理大概就是:在别人点击撤回的时候,他的微信会发送“指令“给服务器,服务器会发送“撤回指令"到我们的微信上,这时我们的微信,会把撤回的信息变成“xxx撤回了一条信息" 我们如果想实现撤回,可以拦截服务器发送“撤回指令”,也可以把微信撤回的信息变成“xxx撤回了一条信息"代码改掉微信撤回补丁适用:Win... 实际生活中,由于好奇朋友撤回微信图片信息,但直接去要又怎会是我的性格呢。由此萌生出做一个微信撤回程序(已向朋友说明)。当前网络上其实存在一些微信撤回程序,不过担心不正规软件存在漏洞,泄漏个人信息,这里也就不考虑此种方法。 这一次我们换个分析方式,知道微信代码里面很多调试的log,那么我们先打印这些这些log看看(关于hook log因为跟本文内容无关,这里就不做太多说明,如果有不懂的可以在下面留言),发... 在这个信息量大增的信息时代,每天脑袋要处理很大的信息量,还是需要了解一点底层逻辑。 你看中国的名家,它甚至把的问题基本都提到了,也就是中国在前神学时代,它压制不住人类思维向高层开,所以它的神学思脉、哲学思脉都.