// L007CInjector.cpp : 定义应用程序的入口点。
//
#include "framework.h"
#include "L007CInjector.h"
#include "resource1.h"
#include <string.h>
#include <TlHelp32.h>INT_PTR CALLBACK DialogProc(_In_ HWND   hwndDlg, _In_ UINT   uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam);int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR    lpCmdLine, _In_ int nCmdShow)
{DialogBox(NULL, MAKEINTRESOURCE(IDD_MAIN), NULL, &DialogProc);return 0;
}char DllFileName[] = "C:\\Users\\Visual Studio 2019\\Desktop\\L004CHookDll.dll";
DWORD strSize = strlen(DllFileName) + 1;INT_PTR CALLBACK DialogProc(_In_ HWND   hwndDlg, _In_ UINT   uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam)
{switch (uMsg){case WM_COMMAND:if (wParam == ID_INJECT){wchar_t buff[0x100] = { 0 };DWORD weChatProcessID = 0;//1)  遍历系统中的进程,找到微信进程(CreateToolhelp32Snapshot、Process32Next)HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);swprintf_s(buff, L"CreateToolhelp32Snapshot=%p", handle);OutputDebugString(buff);PROCESSENTRY32 processentry32 = { 0 };processentry32.dwSize = sizeof(PROCESSENTRY32);BOOL next = Process32Next(handle, &processentry32);while (next == TRUE){if (wcscmp(processentry32.szExeFile, L"WeChat.exe") == 0){weChatProcessID = processentry32.th32ProcessID;break;}next = Process32Next(handle, &processentry32);}if (weChatProcessID == 0){MessageBox(NULL, L"没找到微信", L"错误", MB_OK);return 0;}//2)  打开微信进程,获得HANDLE(OpenProcess)。HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, weChatProcessID);if (hProcess == NULL){MessageBox(NULL, L"打开微信进程失败", L"错误", MB_OK);return 0;}//3)  在微信进程中为DLL文件路径字符串申请内存空间(VirtualAllocEx)。LPVOID allocAddress = VirtualAllocEx(hProcess, NULL, strSize, MEM_COMMIT, PAGE_READWRITE);if (NULL == allocAddress){MessageBox(NULL, L"分配内存空间失败", L"错误", MB_OK);return 0;}swprintf_s(buff, L"VirtualAllocEx=%p", allocAddress);OutputDebugString(buff);//4) 把DLL文件路径字符串写入到申请的内存中(WriteProcessMemory)BOOL result = WriteProcessMemory(hProcess, allocAddress, DllFileName, strSize, NULL);if (result == FALSE){MessageBox(NULL, L"写入内存失败", L"错误", MB_OK);return 0;}//5) 从Kernel32.dll中获取LoadLibraryA的函数地址(GetModuleHandle、GetProcAddress)HMODULE hMODULE = GetModuleHandle(L"Kernel32.dll");FARPROC fARPROC = GetProcAddress(hMODULE, "LoadLibraryA");if (NULL == fARPROC){MessageBox(NULL, L"查找LoadLibraryA失败", L"错误", MB_OK);return 0;}//6) 在微信中启动内存中指定了文件名路径的DLL(CreateRemoteThread)。//也就是调用DLL中的DllMain(以DLL_PROCESS_ATTACH为参数)。HANDLE hANDLE = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)fARPROC, allocAddress, 0, NULL);if (NULL == hANDLE){MessageBox(NULL, L"启动远程线程失败", L"错误", MB_OK);return 0;}}break;case WM_CLOSE:EndDialog(hwndDlg, 0);break;default:break;}return FALSE;
}

示例来源:
网易云课堂《2019 PC 微信探秘》

交流QQ群:

456197310

【PC微信探秘】用C++编写一个微信DLL注入器相关推荐

  1. 自己动手用Android和Xposed编写一个微信聊天机器人——《微信聊天精灵》实现关键词自动回复。

    出于爱好和需要,想着自己来编写一个微信聊天机器人,能实现以下功能: 能实时获取到微信聊天消息: 能进行文本自动回复: 能够设置关键词: 能够根据关键词匹配,进行内容回复: 能实现聊天消息云端备份: 已 ...

  2. 一个微信公众号接入另一个微信公众号的内容

    摘要:近日来了这么一个需求,就是客户想在他们的微信公众号里面直接接入我们微信公众号的文章,于是我便开始baidu,google,最后发现了一个新的搜索引擎:"搜狗微信搜索",该搜索 ...

  3. 如何建立自己的微信小程序,做一个微信小程序大概多少钱?

    如今,小程序的功能越来越强大,也越来越受欢迎,它不仅能帮助企业和商家做推广,还能给他们带来很多好处.所以,很多企业都开始建立自己的小程序.但是对于如何建立自己的微信小程序,以及做一个微信小程序大概多少 ...

  4. android 多个微信图标下载不了,一个微信不够用?微信多开方法

    今天和大家分享的是各个平台微信多开的方法,总的原则是尽量不安装过多的软件,用已有功能解决问题. 首先,并不是所有人都需要微信的多开功能,但是现实情况是,不少设计师朋友反映说,工作和生活越来越难分开,过 ...

  5. html做微信logo,纯CSS实现一个微信logo,需要几个标签?_html/css_WEB-ITnose

    博客已迁移至http://lwzhang.github.io. 纯CSS实现一个微信logo并不难,难的是怎样用最少的 html 标签实现.我一直在想怎样用一个标签就能实现,最后还是没想出来,就只好用 ...

  6. idea可以使用flash框架吗_这个框架厉害了,使用它几分钟就可以编写一个微信插件...

    大家好,我是章鱼猫. 今天给大家推荐的这个项目是「Wechat Spellbook」-- 一个使用 Kotlin 编写的开源微信插件框架,底层需要 Xposed 或 VirtualXposed 等 H ...

  7. 从零开始编写一个微信小程序(微信开发者工具+JS+WuxUI组件库+云开发)万字整理,建议收藏!

    微信小程序-魔镜 笔记&源码(微信开发者工具+JS+UI组件库+云开发) 效果展示 视频演示 经历了一次升级之后,我的小程序怎么样了? 文章目录 微信小程序-魔镜 笔记&源码(微信开发 ...

  8. 0基础编写一个微信社群工具+机器人 设计+结果

    有一天忽然想写一个社群工具了.包括微信的群控和机器人. 好,现在开始讲下社群思路和项目截图. 1.学习板块 平台上传的各种视频,包括收费和免费视频.学员可以自己选择看或者不看. 这里推出积分的概念,可 ...

  9. 【微信小程序】注册一个微信小程序

    小程序是一种新的开放能力,开发者可以快速地开发一个小程序.小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验.这里注册一个小程序账号体验一下. 如果不是VIP,请去我的个人网站浏览全文. 接 ...

最新文章

  1. 第二章 实验设计的考虑因素
  2. 一个简单的Apriltag,数字,动物水果分类器
  3. 回顾2009,展望2010
  4. 张朝阳:搜狐Q3广告业务稳健游戏业务超预期 有望全年实现盈利
  5. 简单搭建es6编译环境
  6. 纯Git实现前端项目打包部署
  7. 三位深度学习之父共获2019年图灵奖,学术人生令人赞叹!!!
  8. 高性能定时器3——时间轮
  9. [转] 数学原理浅谈一下《黑客帝国》
  10. 九八寒露——HRBUST OJ 1269 小把戏
  11. 索尼投屏无法显示服务器,支持索尼Xperia 1投屏到电脑的方法推荐
  12. 手机端input控制键盘弹出
  13. 老王的电影网站 - 推荐系统入门(一)
  14. 成为或不成为开发者的拥护者
  15. 1504.ICCVPartial Person Re-Identification 论文笔记
  16. CSS基础(14)- 更多的样式
  17. 机房防雷,做到这一点很重要
  18. iOS推送流程(APNS)
  19. Java编写简易计算器
  20. webView简单使用:网页中有电话,在客户端点击打电话(一)

热门文章

  1. 网络摄像头第一篇(原理)
  2. JAVA Fiel、递归 总结
  3. 使用jq实现ajax传递json数据,使用jQuery的$ .ajax()将多个Json对象作为数据传递
  4. 【VIBE: Video Inference for Human Body Pose and Shape Estimation】论文阅读
  5. 长春理工大学之中山研究院
  6. 一款基于 Python+flask 的态势感知系统(附完整源码)
  7. 卷皮九块邮官方svip邀请码32gxpo
  8. Ubuntu(20.04)中安装Pycharm(2020.1.2)详细教程
  9. 经济学人最新社论_社论:您想在2017年学到什么?
  10. 【网络通信】简易MFC程序的创建与命令行工具cl.exe、linker.exe的使用