PC微信多开源代码-消息钩子+ZwQuerySystemInformation

本文介绍了如何利用消息钩子和ZwQuerySystemInformation函数实现PC微信的多开。分析了Windows单例实现方法,并探讨了关闭句柄的不同策略。提供了作者的GitHub源代码链接,以帮助读者理解并实现微信多开。
摘要由CSDN通过智能技术生成

目录

  1. 效果图
  2. 分析借鉴别人的文章--->https://www.52pojie.cn/thread-608108-1-1.html
  3. 知识点分享
  4. 其他实现多开的方式
  5. 源代码下载
  6. 后续

 

 

    点击开启,正常打开微信就可以无限多开,通过消息钩子,自动注入微信。 

 

2:分析思路

虽然我看的别人思路,但看时候其实自己也想了一些。

  • windows单例实现方法,CreateEvent CreateMutex FindWindow(不是很好,有可能出现多个,鼠标点的快的话) , 主流就这几个吧。作为单例标准:我认为是跟进程有关资源,当进程结束掉,就会释放资源。这是非常关键的,一旦不具备这样条件,程序异常退出,用户是打不开程序,因为资源还占用。所以写文件或者注册表这种方式是不合适的。根据这个条件那么命名管道,Socket Bind 理论上也可以作为单例方法,只是大家用的不多而已. 我们顺推就可以分析这些作为句柄。试着用工具ProcessXp关闭是否能多开
  • 上面方式算是黑盒,所以不一定能百分百分析,可以通过OD 给ExitProcess 通过堆栈分析到他们的单例代码?这样子无能用什么方法,都能分析出来。(前期需要有这个分析能力和经验)(IDA静态分析也可以)

 

3: 知识点

  • 前提选择关闭句柄的方式(引用为0情况下就会释放),开始我 注入 微信 CreateMutex 打开然后CloseHandle 能关闭句
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
以下是一个简单的 C++ 代码示例,演示了如何使用 `ZwQuerySystemInformation` 函数来遍历系统中的进程并隐藏指定进程。 注意:这仅是一个示例代码,仅供学习和参考。在实际使用中,请确保您已经理解代码的含义,并且不要滥用这个功能。 ```cpp #include <Windows.h> #include <iostream> typedef NTSTATUS(WINAPI* pfnZwQuerySystemInformation)(ULONG, PVOID, ULONG, PULONG); int main() { // 要隐藏的进程名 const wchar_t* processName = L"Demo.exe"; // 加载 ntdll.dll 并获取 ZwQuerySystemInformation 函数地址 HMODULE ntdll = LoadLibrary(L"ntdll.dll"); pfnZwQuerySystemInformation ZwQuerySystemInformation = (pfnZwQuerySystemInformation)GetProcAddress(ntdll, "ZwQuerySystemInformation"); if (ZwQuerySystemInformation == nullptr) { std::cerr << "Failed to get ZwQuerySystemInformation address." << std::endl; return 1; } // 获取系统进程信息 ULONG bufferSize = 0; ZwQuerySystemInformation(SystemProcessInformation, nullptr, 0, &bufferSize); PVOID buffer = VirtualAlloc(nullptr, bufferSize, MEM_COMMIT, PAGE_READWRITE); if (buffer == nullptr) { std::cerr << "Failed to allocate memory." << std::endl; return 1; } ULONG returnLength; NTSTATUS status = ZwQuerySystemInformation(SystemProcessInformation, buffer, bufferSize, &returnLength); if (status != STATUS_SUCCESS) { std::cerr << "Failed to get system process information." << std::endl; VirtualFree(buffer, 0, MEM_RELEASE); return 1; } // 遍历进程信息并隐藏指定进程 PSYSTEM_PROCESS_INFORMATION current = (PSYSTEM_PROCESS_INFORMATION)buffer; PSYSTEM_PROCESS_INFORMATION previous = nullptr; while (current != nullptr) { if (wcscmp(current->ImageName.Buffer, processName) == 0) { // 隐藏进程 if (previous != nullptr) { previous->NextEntryOffset += current->NextEntryOffset; } else { // 如果是第一个进程,则需要更新 ProcessInfoListHead 指针 ((PSYSTEM_PROCESS_INFORMATION)buffer)->NextEntryOffset = current->NextEntryOffset; } } // 移动到下一个进程 previous = current; current = (PSYSTEM_PROCESS_INFORMATION)((PUCHAR)current + current->NextEntryOffset); } // 释放内存并退出 VirtualFree(buffer, 0, MEM_RELEASE); return 0; } ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值