haisimao / WeChook

一个基于DLL注入的微信PC客户端API项目。简单地说,通过这个项目,你可以通过你所熟悉的程序语言来控制微信PC客户端的行为。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

WeChook - 微信PC客户端API

一个基于DLL注入的微信PC客户端API项目。简单地说,通过这个项目,你可以通过你所熟悉的程序语言来控制微信PC客户端的行为。

在使用这个项目前你可能需要知道:

  • 本项目基于兴趣开发,目前还处在非常前期的开发阶段,不对稳定性作任何保证,也不对后续开发进度有任何保证(如果你对此有需求,阅读下一条)。当然,相对应的,本项目完全开源,你可以任意下载、修改、使用这里的代码,你甚至可以通过PR来帮助这个项目变得更加美妙

  • 本项目由该Github项目 启发。该项目是一个以微信PC客户端为例的面向PC逆向工程的教学项目,项目源码中提供了很多通过Hook微信二进制改变程序运行的方式。在该项目的README.md中项目作者介绍自己还有一个可供商用的闭源项目,完全出于对他的教程的感谢之理由,我建议有商用目的的读者前往他的项目了解详细信息。

  • 本项目核心运作原理是对二进制的逆向工程,坦白得讲,作为开发者,我是绝对不会允许除我以外的其他作者的此类软件运行在我的计算机上的。再坦白一点讲,如果我是邪恶的,运行本项目将会造成诸如被木马、被盗号乃至被破坏系统的后果。所以呢这边建议您,如果你不清楚运行这个软件的风险但还是想要尝试运行本项目,那你就必须发自内心地对一个如果不是因为这个项目而可能和你八竿子打不着儿的人——也就是我——完全信任。当然,清者自清,反正我都开源了,欢迎有识之士指着我的源码批判一番,共商改进大业。

  • 当然,如果你不想对一个八竿子打不着儿的人发自内心完全信任,你也可以给我捐个十万八万的美其名曰项目外包。一来我有动力维护这个项目,二来你也可以出于“额外的”理由来信任我,岂不美哉?

如果你只是想要使用本项目提供的功能:

你需要:

  1. Visual Studio (开发环境是VS2017)

按照下列任一方式来编译工程:

  1. 使用VS打开项目,然后右键项目“重新编译项目”(ctrl+alt+f7);
  2. 左下角搜索“Developer Command Prompt”开启开发者命令行,cd到项目根目录后运行compile.bat。

使用项目:

  1. 进入项目根目录中的Debug目录,运行DllLoader.exe便可以注入WeChook.dll。此时,WeChook.dll会在后台开启一个socket服务器(port: 50526),你可以使用任何可以与socket交互的语言来使用api。
  2. 本项目中PythonClient文件夹中的testClient.py提供了一个供参考的python客户端程序。你可以使用任何版本的python3来执行python脚本观察运行结果。

可能会有的更新:

  1. 对于api调用的封装,使用户在不直接与socket交互的情况下使用api

如果你是开发者:

这里将介绍整个项目的结构:

  1. DllLoader:

    1. 这是一个单独的exe程序,可以在整个系统空间中搜索WeChat.exe然后注入WeChook.dll。
    2. 未来将变成一个针对任意进程注入任意dll的工具
  2. Hook:

    1. 这里是所有的Hook组件。
    2. 目前有三个Hook组件,分别为Hook_Eject,Hook_RecvMsg,Hook_SendMsg,他们都继承于Hook_BaseClass类。
    3. Offsets_x_x_x_xx.h中是hook偏移量的宏定义。文件名中的x代表了版本号。
  3. HooksManager:

    1. 这是一个统一管理Hook注入和弹出的管理器。你可以阅读WeChook项目中的WeChook.cpp来查看使用方式。
  4. MessageDispatcher:

    1. 这是一个任务分配器,根据socket传来的json数据中cmd字段的内容,来运行指定的函数,并传入json中args字段中的参数。使用方式可以查看WeChook.cpp。
  5. Socket:

    1. 封装了对于socket的调用。很简单得提供了pull和push来实现字符串的“接收”与“发送“
  6. TempTest:

    1. 没啥用,用来测试可行性的暂时的项目。未来会被移除。
  7. UTF8UnicodeConverter:

    1. 因为微信客户端内部的数据都是Unicode,所以这里提供了一些utf8和unicode相互转换的函数
  8. WeChook:

    1. dll入口。

未来,这里将会提供全部api的表格以及更加详细的开发帮助文档。

About

一个基于DLL注入的微信PC客户端API项目。简单地说,通过这个项目,你可以通过你所熟悉的程序语言来控制微信PC客户端的行为。


Languages

Language:C++ 99.9%Language:Python 0.1%Language:C 0.0%Language:Batchfile 0.0%