C++笔记-利用远程线程注入获取PC版微信个人昵称
目录
程序运行
代码与实例
源码打包下载
程序运行
运行程序:
点击确定:
本人微信对应的版本如下:
微信版本如下:
代码与实例
这里直接用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版微信个人昵称相关推荐
- WinAPI【远程注入】利用远程线程注入DLLDelphi版
{ WinAPI[远程注入]利用远程线程注入DLLDelphi版} (okwary) 小叹的学习园地 ( SDK文档里是这样描述的:进程是一个正在运行的程序,它拥有自己的地址空间,拥有自己的 ...
- Python获取PC版微信安装路径
最新做了一个小东西,需要使用Python定时给微信群发消息,在程序运行时,首先需要判断下有没有安装PC版的微信. Python版本:3.11.1 x64 Window版本:Win10 22H2 专业版 ...
- 远程注入利用远程线程直接注入
利用远程线程无DLL直接注入 (okwary) 小叹的学习园地 注入代码到其他进程地址空间的方法是使用WriteProcessMemory API.这次你不用编写一个独立的DLL而是直接复制你的代码到 ...
- 远程线程注入DLL到PC版微信
一.远程线程注入的原理 1.其基础是在 Windows 系统中,每个 .exe 文件在双击打开时都会加载 kernel32.dll 这个系统模块,该模块中有一个 LoadLibrary() 函数,可以 ...
- 详细解读:远程线程注入DLL到PC版微信
一.远程线程注入的原理 1.其基础是在 Windows 系统中,每个 .exe 文件在双击打开时都会加载 kernel32.dll 这个系统模块,该模块中有一个 LoadLibrary() 函数,可以 ...
- 远程线程注入引出的问题
一.远程线程注入基本原理 远程线程注入--相信对Windows底层编程和系统安全熟悉的人并不陌生,其主要核心在于一个Windows API函数CreateRemoteThread,通过它可以在另外一个 ...
- DLL注入_远程线程注入
什么是线程注入? 线程注入,是通过开启远程线程的方式,将DLL加载到目标宿主进程中的常用方式. 什么是动态链接库? 首先Windows中链接库分为两种:动态链接库DLL.静态链接库LIB. ① 静态链 ...
- 什么是远程线程注入?
远程线程注入 首先,要说明白远程线程注入,必须得弄明白什么是远程线程以及什么是注入! 远程线程 这里的远程指的是别的进程空间,大家应该都在自己代码中或多或少运用过多线程,这里给出常见的win32创建线 ...
- windows-CODE注入(远程线程注入)
远程线程注入(先简单说,下面会详细说) 今天整理下代码注入(远程线程注入),所谓代码注入,可以简单的理解为是在指定内进程里申请一块内存,然后把我们自己的执行代码和一些变量拷贝进去(通常是以启线程的方式 ...
最新文章
- MAC YII 安装步骤
- tf.variable和tf.get_Variable以及tf.name_scope和tf.variable_scope的区别
- JavaScript夯实基础系列(一):词法作用域
- java编程思想(第四版)第二章练习题-12
- UNIX文件mode t详解
- 人工智能 | 自然语言处理(NLP)研究团队
- 8086汇编常用指令(待解释)
- 关于hadoop HDFS进行读写文件操作的问题
- VC Ping IP的类
- MPC的终结——二次规划求解约束极值问题
- ISO/IEC27000系列标准研究
- Oracle 锁表查询及解锁
- Bulma 教程,Bulma 指南,Bulma 实战,Bulma 中文手册
- python 应用程序无法正常启动 000007b_“应用程序无法正常启动(oxc000007b)”解决方案...
- 前端白屏问题_前端性能优化之白屏时间
- html5一阶段考试题,千锋HTML5-JS阶段第三周理论考试题目02
- 7个适用于安卓手机的数据恢复工具
- 福昕阅读器 单个标签页单个窗口展示
- np.log1p()取对数符合正态分布
- Navicat12.1破 解教程,亲测可用