目录

程序运行

代码与实例

源码打包下载


程序运行

运行程序:

点击确定:

本人微信对应的版本如下:

微信版本如下:

代码与实例

这里直接用CE,然后用二分法去找基址就可以。最后发现是在

WeChatWin.dll加上0x13972DC的偏移上,这里给出其他信息的偏移:

关键代码如下:

注入器:

#include <iostream>
#include <windows.h>
#include <string>
#include <TlHelp32.h>
#include <atlbase.h>
#include <atlconv.h>
using namespace std;bool Inject(LPCTSTR DLLPath, DWORD ProcessID){HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessID);if(!hProcess){cout << "OpenProcess failed!" << endl;return false;}SIZE_T pathSize = (_tcslen(DLLPath) + 1) * sizeof(TCHAR);LPVOID startAddress = VirtualAllocEx(hProcess, NULL, pathSize, MEM_COMMIT, PAGE_READWRITE);if(!startAddress){cout << "VirtualAllocEx failed" << endl;return false;}if(!WriteProcessMemory(hProcess, startAddress, DLLPath, pathSize, NULL)){cout << "WriteProcessMemory failed" << endl;return false;}PTHREAD_START_ROUTINE pfnStartAddress = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(_T("kernel32.dll")), "LoadLibraryW");if(!pfnStartAddress){cout << "GetProcAddress failed" << endl;return false;}HANDLE hThread = CreateRemoteThreadEx(hProcess, NULL, NULL, pfnStartAddress, startAddress, NULL, NULL, NULL);if(!hThread){cout << "CreateRemoteThreadEx failed" << endl;return false;}WaitForSingleObject(hThread, INFINITE);CloseHandle(hThread);CloseHandle(hProcess);return true;
}int main(int argc, int *argv[]){HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);if(!hProcess){cout << "CreateToolhelp32Snapshot failed!" << endl;getchar();return 0;}PROCESSENTRY32 info;info.dwSize = sizeof(PROCESSENTRY32);if(!Process32First(hProcess, &info)){cout << "Process32First failed!" << endl;getchar();return 0;}DWORD wxPid;while(true){USES_CONVERSION;if(strcmp("WeChat.exe", W2A(info.szExeFile)) == 0){wxPid = info.th32ProcessID;break;}if(!Process32Next(hProcess, &info)){wxPid = 0;break;}}if(wxPid == 0){cout << "Process32Next over! unfind pid!" << endl;getchar();return 0;}//开始注入if(Inject(L"E:\\vs2012\\hackWechat\\Debug\\hackDll.dll", wxPid)){cout << "inject successfully!" << endl;}getchar();return 0;
}

注入的dll关键代码:

#include "stdafx.h"
#include "My.h"
#include <stdio.h>
#include <stdlib.h>void getAllInfo(){MessageBoxA(NULL, "开始解析", "报告首长", NULL);//WeChatWin.dll的基址DWORD weChatWinAddr = (DWORD)GetModuleHandle(L"WeChatWin.dll");char wxID[0x1000] = {0};DWORD weIDDW = weChatWinAddr + 0x13972DC;//wxID[0] = (char)(*(DWORD*)weIDDW);for(int i = 0; i < 40; i++){wxID[i] = (char)(*(DWORD*)weIDDW);if(wxID[i] == '0'){break;}weIDDW += 0x1;}MessageBoxA(NULL, wxID, "报告首长", NULL);
}

这里要注意,这个版本的微信,使用sprinf_s和memcpy会有问题,会被拦截,大家可以试试,只有用这种一个字节,一个字节的读,不会出现问题!

源码打包下载

https://github.com/fengfanchen/CAndCPP/tree/master/hookWeChat

C++笔记-利用远程线程注入获取PC版微信个人昵称相关推荐

  1. WinAPI【远程注入】利用远程线程注入DLLDelphi版

    { WinAPI[远程注入]利用远程线程注入DLLDelphi版} (okwary) 小叹的学习园地 ( SDK文档里是这样描述的:进程是一个正在运行的程序,它拥有自己的地址空间,拥有自己的 ...

  2. Python获取PC版微信安装路径

    最新做了一个小东西,需要使用Python定时给微信群发消息,在程序运行时,首先需要判断下有没有安装PC版的微信. Python版本:3.11.1 x64 Window版本:Win10 22H2 专业版 ...

  3. 远程注入利用远程线程直接注入

    利用远程线程无DLL直接注入 (okwary) 小叹的学习园地 注入代码到其他进程地址空间的方法是使用WriteProcessMemory API.这次你不用编写一个独立的DLL而是直接复制你的代码到 ...

  4. 远程线程注入DLL到PC版微信

    一.远程线程注入的原理 1.其基础是在 Windows 系统中,每个 .exe 文件在双击打开时都会加载 kernel32.dll 这个系统模块,该模块中有一个 LoadLibrary() 函数,可以 ...

  5. 详细解读:远程线程注入DLL到PC版微信

    一.远程线程注入的原理 1.其基础是在 Windows 系统中,每个 .exe 文件在双击打开时都会加载 kernel32.dll 这个系统模块,该模块中有一个 LoadLibrary() 函数,可以 ...

  6. 远程线程注入引出的问题

    一.远程线程注入基本原理 远程线程注入--相信对Windows底层编程和系统安全熟悉的人并不陌生,其主要核心在于一个Windows API函数CreateRemoteThread,通过它可以在另外一个 ...

  7. DLL注入_远程线程注入

    什么是线程注入? 线程注入,是通过开启远程线程的方式,将DLL加载到目标宿主进程中的常用方式. 什么是动态链接库? 首先Windows中链接库分为两种:动态链接库DLL.静态链接库LIB. ① 静态链 ...

  8. 什么是远程线程注入?

    远程线程注入 首先,要说明白远程线程注入,必须得弄明白什么是远程线程以及什么是注入! 远程线程 这里的远程指的是别的进程空间,大家应该都在自己代码中或多或少运用过多线程,这里给出常见的win32创建线 ...

  9. windows-CODE注入(远程线程注入)

    远程线程注入(先简单说,下面会详细说) 今天整理下代码注入(远程线程注入),所谓代码注入,可以简单的理解为是在指定内进程里申请一块内存,然后把我们自己的执行代码和一些变量拷贝进去(通常是以启线程的方式 ...

最新文章

  1. MAC YII 安装步骤
  2. tf.variable和tf.get_Variable以及tf.name_scope和tf.variable_scope的区别
  3. JavaScript夯实基础系列(一):词法作用域
  4. java编程思想(第四版)第二章练习题-12
  5. UNIX文件mode t详解
  6. 人工智能 | 自然语言处理(NLP)研究团队
  7. 8086汇编常用指令(待解释)
  8. 关于hadoop HDFS进行读写文件操作的问题
  9. VC Ping IP的类
  10. MPC的终结——二次规划求解约束极值问题
  11. ISO/IEC27000系列标准研究
  12. Oracle 锁表查询及解锁
  13. Bulma 教程,Bulma 指南,Bulma 实战,Bulma 中文手册
  14. python 应用程序无法正常启动 000007b_“应用程序无法正常启动(oxc000007b)”解决方案...
  15. 前端白屏问题_前端性能优化之白屏时间
  16. html5一阶段考试题,千锋HTML5-JS阶段第三周理论考试题目02
  17. 7个适用于安卓手机的数据恢复工具
  18. 福昕阅读器 单个标签页单个窗口展示
  19. np.log1p()取对数符合正态分布
  20. Navicat12.1破 解教程,亲测可用

热门文章

  1. Hadoop依赖包处理方式
  2. linux下,.ko,.o , .so , .a ,.la
  3. 开放平台_XAuth
  4. C/C++学习笔记:C语言实现任意进制转换,代码全解析!
  5. 好的软件人员必看的书
  6. 【java】Windows7 下环境变量设置
  7. 《商业智能BI白皮书3.0》正式发布(附下载链接)
  8. 我花600小时,调研30家银行,为你讲透银行数据架构,小白都能懂
  9. 创建一个Windows Service应用程序
  10. 我看中国软件---管理篇