郁金香游戏辅助技术在线班-b002-016-C,C++主线程代码传递复杂参数的实现

回复 星标
更多
342669087<342669087> 2023-05-10 18:26 浙江 杭州 只看该作者

郁金香游戏辅助技术在线班-b002-016-C,C++主线程代码传递复杂参数的实现



百度网盘


#include "pch.h"
#include "主线程调用CALL.h"
 
#include <string>
#include <fstream>
#include <vector>
#include <cstdio>
#include <iostream>
using namespace std;
 
 
WNDPROC g_oldWindowProc = 0; // 

UINT_PTR _cdecl x86Call8_cdecl(UINT_PTR *argv)  //数组传8个参数进来 
{
	UINT_PTR retvar = 0;
	__asm
	{
		mov eax,argv
		
		push dword ptr[eax + 7 * 4] //参数6
		push dword ptr[eax + 6 * 4] //参数5
		push dword ptr[eax + 5 * 4] //参数4
		push dword ptr[eax + 4 * 4] //参数3
		push dword ptr[eax + 3 * 4] //参数2
		push dword ptr[eax + 2 * 4] //参数1
	 		 
		mov ecx, dword ptr[eax + 1 * 4] //ecx参数
		call  dword ptr[eax + 0 * 4] //功能CALL
		add esp,0x18 //平栈7个参数
		mov retvar,eax
	}
	return retvar;
}
  

 

LRESULT CALLBACK newWindowProc(
	HWND hwnd,      // handle to window
	UINT uMsg,      // message identifier
	WPARAM wParam,  // first message parameter
	LPARAM lParam   // second message parameter
)
{
 

	switch (uMsg)
	{
	case WM_USER + 126:
	{
#ifdef DEBUG
		printf("WM_USER + 126:pcall=%X begin\n", lParam);
#endif // !DEBUG

		__asm
		{
			call lParam
		}
#ifdef DEBUG
		printf("WM_USER + 126:pcall=%X End\n", lParam);
#endif // !DEBUG
		return 123456;
	}

	case WM_USER + 128:
	{
		UINT_PTR *参数列表 = (UINT_PTR*)lParam;
		x86Call8_cdecl(参数列表);
		break;
	}
	case WM_USER + 138:
	{
 
		break;
	}
 
	}
 
	return CallWindowProcA(g_oldWindowProc, hwnd, uMsg, wParam, lParam);
};
此帖已被锁定,无法回复
新窗口打开 关闭