前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信hook源码思路讲解

微信hook源码思路讲解

原创
作者头像
宗亲立牧
修改2019-09-09 12:10:42
1.8K0
修改2019-09-09 12:10:42
举报
文章被收录于专栏:宗亲立牧宗亲立牧
114740epg7eeghipbg7bs7.png
114740epg7eeghipbg7bs7.png

什么是逆向

逆向技术,是一种产品设计技术再现过程,即对一项目标产品进行逆向分析及研究,从而演绎并得出该产品的处理流程,以制作出功能一样,并且有你自己想法的程序

体会

逆向技术个人理解,软件的生存意义就在于攻与防,想必来精益的易友都有一颗想成为大神的心,看过世界安全大赛《Pwn2Own》,360 team 在上面为国争光的表现,是否内心已经隐隐触动了

见解 (个人理解)

偶然机会接触到 hook,发现其中的魅力,他不同于逆向协 yi,因为如果是协 yi,那么你需要对服务器的交互来完成完整的组合收包、发包,并且这是非常危险及维护系数非常高的一种形式,假设服务端更新协 yi 格式,那么协 yi 将失效,并且这是不可控的,也就是人家可以随时随地更新,那么接下来介绍 hook 了,简单来说,他就是类似于抓包软件一样,他可以拦截目标软件的各种功能的交互,换句话说,我根本不需要知道软件内部进行了多么复杂的加密处理,一样可以控制软件的功能,就是这么直观的体验

正题 - 微信 hook 原理

1. 下面用到的微信 hook 原理为进程注入,什么是进程注入?简单的描述一下,具体大家可以去自行了解,不然就偏题了,大家知道每个进程都可以加载自己的 dll,进程注入也就是让你的目标软件无声的加载你自己编写的 dll,然后运行,这样你的 dll 就变成了他的程序一部分,可以读取他的任何数据,来进行接下来的拦截过程 在精益模块中可以用到 线程_注入 dll()方法来实现

第一步:因为已经注入,所以微信启动时,这里作为他加载的 dll,一样跟着启动,然后开始安装 hook,也就是安装我们口中的“拦截器”了

2. 接下来是 dll 内的部分,记住这个模块名“WeChatWin.dll”这是微信核心 dll,我们需要的收发消息、转账、发图统统都在这里,所以只需 hook 这里面的功能也就完成了我们需要的功能,

公式 hook 地址 = 基址(“WeChatWin.dll”的基址)+ 偏移地址(这个是变化的,每个要 hook 的功能地址都不一样,至于寻址,这个需要有汇编的基础才能继续,这个只能自行解)

这里是代码,可以自己琢磨,然后自己尝试写一份一样的,最后祝大家心想事成

本文链接:https://www.death-note.cn/notes-43.html 首发于阿信冲鸭,转载复制片段望签名。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是逆向
  • 体会
  • 见解 (个人理解)
  • 正题 - 微信 hook 原理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档