微信逆向 hook 2.8.0.121 源码分享

最近在一个淘客行业的公司搬砖,主要做的是后台开发的工作,偶尔也参与参与一些业务~😝

一开始我们用的发单工具都是第三方的,市面上的发单工具也都用过,这里就不一一例举了。

随着业务的发展,发现三方工具很难满足需求,找定制开发呢代价又不菲,于是老板决定自己搞一个微信的发单工具,经过调研发现pc微信的逆向似乎要简单一些,稳定性也还ok!于是乎撸起袖子开干。

经过一段时间的学习研究(枯燥乏味😔),终于是有了些进展,搞出了一个微信2.8.0.121版本微信助手,在这个助手的基础上做了一个发单工具,跟后台配合试用。

这中间走了很多弯路,也跌了很多坑,搞了易语言,弄了C++,最后还用了C#来做客户端,一路摸爬滚打也是不易,头都快挠秃😄

最近刚迭代好微信版本3.2.1.154,功能全面,包含了大部分功能,也做了一个通用的微信工具,仿wetool的。

需要体验的小伙伴可以留言!!

为了初学逆向的小伙伴们少走些弯路,这里把之前做的2.8.0.121版本的源码分享出来,主要实现了这些功能:

登录回调

个人信息获取

数据库读取

通讯录读取

好友操作(删除、改备注、自动通过)

接收消息

发送消息

  虽然功能不怎么全,但也可以让初学的小伙伴们借鉴一下。微信助手库是使用c++实现的,采用窗口的消息机制进行通讯。客户端是使用c#写的,这部分源码就不放出了,涉及到一些公司的业务逻辑。

这里分享一下C#客户端微信多开代码

using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;

namespace util
{
    
    public enum DllInjectionResult
    {
        DllNotFound,
        RunExeFail,
        InjectionFailed,
        Success
    }
    public class DllInjector
    {
        static readonly IntPtr INTPTR_ZERO = (IntPtr)0;

        

        static DllInjector _instance;

        UInt32 INFINITE = 0xFFFFFFFF;
        Int32 PAGE_EXECUTE_READWRITE = 0x40;
        Int32 MEM_COMMIT = 0x1000;
        Int32 MEM_RESERVE = 0x2000;
        Int32 MEM_RELEASE = 0x8000;

        public static DllInjector GetInstance
        {
            get
            {
                if (_instance == null)
                {
                    _instance = new DllInjector();
                }
                return _instance;
            }
        }

        DllInjector() { }

        //多开并注入dll
        public DllInjectionResult Inject(string sExeName, string sDllPath,int port, ref int wxPid,string sDllPath2, bool isMutl=false)
        {
            string PortReleaseGuid = "8975BE8E-2D5B-10DE-B294-6917E6D89593";

            var mutex = new Mutex(false,
                string.Concat("Global/", PortReleaseGuid));
            mutex.WaitOne();
            try
            {
                if (isMutl)
                {
                    this.CloseWxMutex();
                }

                if (!File.Exists(sDllPath))
                {
                    return DllInjectionResult.DllNotFound;
                }

                STARTUPINFO si = new STARTUPINFO();
                PROCESS_INFORMATION pi = new PROCESS_INFORMATION();
                si.dwFlags = 1;
                si.wShowWindow = 5;//SW_SHOW*/
                StringBuilder exename = new StringBuilder(100
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dugujin263

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值