搞这个的主要目的是为了搞微信个人收款的回调,也就是俗称的免签,免签约。毕竟微信支付功能每年收费300块大洋还是很贵的,我等小户还是搞点省钱的吧。实现过程还算毕竟简单,稳定性还未测试,我自己支付了30多笔没有发现异常情况,只是需要一台Windows电脑用来挂微信与支付回调程序。
什么是HOOK
钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。
钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。
微信HOOK实现原理
由于Windows程序都有一个通用的内置函数叫做 LoadLibrary
用来加载Windows程序的链接库文件(dll),如果我们在微信程序的进程中开辟一块内存存放我们的链接库文件call.dll地址,并让 LoadLibrary
加载,那么call.dll将会被认为是微信在执行,它将能取得所有微信数据。这个call.dll程序被加载的过程一般叫注入,也叫附加调试。
只要我们能找到微信获取数据的内存地址,那么我们就能通过call.dll获得其数据,然后再通过其它手段(如TCP)传输回我们自己的程序中使用。最常见的就是微信机器人了,由于微信web端功能被关闭得差不多了,很多微信机器人都开始采用这种方式实现。
HOOK常用工具
由于HOOK是一种逆向技术,所以使用的软件大都与内存相关,吾爱破解上这种工具使用得最多,比如 Ollydbg
(OD)与 Cheat Engine
(CE),本文也是使用这两种工具。还有一款叫做 AsmToE
的汇编代码转机器码的软件。
Ollydbg:https://url67.ctfile.com/f/2768367-521584515-eaab62(访问密码:2048)
Cheat Engine:https://url67.ctfile.com/f/2768367-521584508-10d64f(访问密码:1024)
AsmToE:https://url67.ctfile.com/f/2768367-521584497-6a625e(访问密码:1024)
说说为什么要用易语言
由于博主熟悉的C#并没有提供操作内存与HOOK的方法,虽然有大佬用C++编译了EasyHook
,但教程太少,对于HOOK初学者来说难度太大。而易语言在破解与使用方面都较为方便,特别是其丰富的模块化代码,体验感直追Python。唯一的缺点就是容易被杀毒软件报病毒,不过没关系,仅仅是学习而已,学会了再去学学C++,就能解决这个问题了。
正式教程下一章开始。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/242053.html