植物大战僵尸v1.2---外挂源码

本文详细介绍了植物大战僵尸游戏v1.2版本的一个外挂源码,涵盖了timer机制、callback函数的应用、struct数据结构的使用,以及token和command在程序中的关键作用。通过对源码的深入分析,揭示了外挂实现的原理和技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

 

/*************************************/
//wnd.h
//
/***********************************/
#pragma once

#define WM_GRAYCONTROLES WM_USER+100 

#define APP_NAME L"植物大战僵尸修改器 v1.2"


#define WND_W 360
#define WND_H 230

#define IMG_H 55

#define ID_TIMER 1
#define TIMER_SLEEP_TIME 1000

#include <windows.h>
#include <tchar.h>
#include <Commctrl.h> 
#include <psapi.h>
#include <process.h>
 

#pragma comment(lib, "psapi")
#pragma comment(lib, "comctl32.lib")   
  
#pragma comment(linker,"/manifestdependency:\"type='win32'\
	name='Microsoft.Windows.Common-Controls' "\
	"version='6.0.0.0' \
	processorArchitecture='*'\
	publicKeyToken='6595b64144ccf1df' \
    language='*'\"")  

BOOL	CALLBACK DlgProc(HWND,UINT,WPARAM,LPARAM);
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

BOOL	EnableDebugPrivilege(HANDLE hProcess);
HWND	FindDestWnd();
DWORD	GetPIDFromeWnd();
HANDLE	OpenProcessWithDbg(DWORD PID);

////////////////////////////////////
DWORD	GetPIDFromeProcesses(LPCTSTR lpWndName);



 

/*************************************/
//wnd.cpp
//
/***********************************/


#include "Wnd.h"
#include "resource.h"
#include "InjectCode.h"

BOOL g_bWndActive = false;

BOOL EnableDebugPrivilege(HANDLE hProcess)
{
	HANDLE hToken;
	LUID luid;
	TOKEN_PRIVILEGES tp;

	//打开令牌环
	BOOL bOK = OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken);
	if(!bOK)
		return FALSE;

	bOK = LookupPrivilegeValue(NULL,SE_SECURITY_NAME,&luid);
	if(!bOK)
		return FALSE;

	tp.PrivilegeCount = 1;
	tp.Privileges[0].Luid = luid;
	tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

	//调整权限
	bOK = AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES),NULL,NULL);

	if(!bOK)
		return FALSE;
	CloseHandle(hToken);
	return TRUE;
}


int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR lpCmdLine, int nShowCmd)
{
	InitCommonControls();

	HWND	hWnd;
	MSG		msg;
	TCHAR	szClsName[] = L"MainWnd";
	WNDCLASSEX	wcex;

	wcex.cbSize = sizeof(WNDCLASSEX);
	wcex.hInstance = hInst;
	wcex.lpfnWndProc = WndProc;
	wcex.cbClsExtra = 0;
	wcex.cbWndExtra = 0;
	wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
	
	wcex.hbrBackground = (HBRUSH)(COLOR_MENUBAR+1);
	wcex.lpszClassName = szClsName;
	wcex.lpszMenuName = NULL;
	wcex.style = 0;
	wcex.hIconSm = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1));
	wcex.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON2));

	if(!RegisterClassEx(&wcex))
		return 0;

	hWnd = CreateWindowEx(
		WS_EX_CONTROLPARENT, 
		szClsName, 
		APP_NAME, 
		(WS_CLIPCHILDREN 
		|WS_CLIPSIBLINGS 
		|WS_MINIMIZEBOX 
		|WS_SYSMENU 
		|WS_CAPTION 
		|WS_TABSTOP) 
		&(~WS_MAXIMIZEBOX ),
		GetSystemMetrics(SM_CXFULLSCREEN)/2-WND_W/2,
		GetSystemMetrics(SM_CYFULLSCREEN)/2-WND_H/2,
		WND_W,
		WND_H,
		NULL,
		NULL,
		hInst,NULL);
	if(!hWnd)
		return 0;

	ShowWindow(hWnd, nSho
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值