VerifyFriendApply.cpp 1.7 KB
Newer Older
L
ljc545w 已提交
1 2 3 4 5 6 7
#include "pch.h"

struct VerifyFriendApplyStruct {
	DWORD v3;
	DWORD v4;
};

L
ljc545w 已提交
8 9
BOOL VerifyFriendApply(DWORD pid,wchar_t* v3,wchar_t* v4) {
	HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
L
ljc545w 已提交
10
	if (!hProcess)
L
ljc545w 已提交
11 12 13 14 15 16 17
		return 1;
	DWORD WeChatRobotBase = GetWeChatRobotBase(pid);
	if (!WeChatRobotBase) {
		CloseHandle(hProcess);
		return 1;
	}
	DWORD VerifyFriendApplyProcAddr = WeChatRobotBase + VerifyFriendApplyOffset;
L
ljc545w 已提交
18 19 20 21 22 23
	LPVOID v3addr = VirtualAllocEx(hProcess, NULL, 1, MEM_COMMIT, PAGE_READWRITE);
	LPVOID v4addr = VirtualAllocEx(hProcess, NULL, 1, MEM_COMMIT, PAGE_READWRITE);
	DWORD dwWriteSize = 0;
	DWORD dwId = 0;
	DWORD dwHandle = 0;
	VerifyFriendApplyStruct apply_data = { 0 };
L
ljc545w 已提交
24 25 26 27
	if (!v3addr || !v4addr) {
		CloseHandle(hProcess);
		return 1;
	}
L
ljc545w 已提交
28 29 30 31 32 33 34 35
	WriteProcessMemory(hProcess, v3addr, v3, wcslen(v3) * 2 + 2, &dwWriteSize);
	WriteProcessMemory(hProcess, v4addr, v4, wcslen(v4) * 2 + 2, &dwWriteSize);
	VerifyFriendApplyStruct* paramAndFunc = (VerifyFriendApplyStruct*)::VirtualAllocEx(hProcess, 0, sizeof(VerifyFriendApplyStruct), MEM_COMMIT, PAGE_READWRITE);
	apply_data.v3 = (DWORD)v3addr;
	apply_data.v4 = (DWORD)v4addr;

	if (paramAndFunc)
		WriteProcessMemory(hProcess, paramAndFunc, &apply_data, sizeof(apply_data), &dwId);
L
ljc545w 已提交
36 37
	else {
		CloseHandle(hProcess);
L
ljc545w 已提交
38
		return 1;
L
ljc545w 已提交
39
	}
L
ljc545w 已提交
40 41 42 43 44 45 46 47 48 49
	HANDLE hThread = ::CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)VerifyFriendApplyProcAddr, paramAndFunc, 0, &dwId);
	if (hThread) {
		WaitForSingleObject(hThread, INFINITE);
		GetExitCodeThread(hThread, &dwHandle);
		CloseHandle(hThread);
	}

	VirtualFreeEx(hProcess, v3addr, 0, MEM_RELEASE);
	VirtualFreeEx(hProcess, v4addr, 0, MEM_RELEASE);
	VirtualFreeEx(hProcess, paramAndFunc, 0, MEM_RELEASE);
L
ljc545w 已提交
50 51
	CloseHandle(hProcess);
	return dwHandle == 0;
L
ljc545w 已提交
52
}