|
楼主 |
发表于 2019-3-3 00:44:32
|
显示全部楼层
湖南省长沙市
微信hook全底层源码,毛超说仅供学习交流
本帖最后由 毛超 于 2019-3-3 01:04 编辑
丨什么是逆向
逆向技术,是一种产品设计技术再现过程,即对一项目标产品进行逆向分析及研究,从而演绎并得出该产品的处理流程,以制作出功能一样,并且有你自己想法的程序
丨体会
逆向技术个人理解,软件的生存意义就在于攻与防,想必来精益的易友都有一颗想成为大神的心,看过世界安全大赛《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的功能地址都不一样,至于寻址,这个需要有汇编的基础才能继续,这个只能自行解)
这里是代码,可以自己琢磨,然后自己尝试写一份一样的,最后祝大家心想事成
|
|