欢迎光临散文网 会员登陆 & 注册

一分钟找出所有雷的扫雷外挂源码

2019-06-21 21:06 作者:程序员小明哥  | 我要投稿

#include <stdio.h>

#include <Windows.h>


int main()

{

//找到扫雷游戏对应的窗口句柄和进程ID

HWND hWinmine = FindWindowA(NULL, "扫雷");

DWORD dwPid = 0;

GetWindowThreadProcessId(hWinmine, &dwPid);


//打开扫雷游戏获取其句柄

HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPid);


PBYTE pByte = NULL;

DWORD dwHight = 0, dwWidth = 0;


DWORD dwAddr = 0x01005330;

DWORD dwNum = 0;

DWORD dwRead = 0;


//读取雷的数量级

//读取雷区的宽和高

ReadProcessMemory(hProcess, (LPVOID)(dwAddr), &dwNum, sizeof(DWORD), &dwRead);

ReadProcessMemory(hProcess, (LPVOID)(dwAddr + 4), &dwWidth, sizeof(DWORD), &dwRead);

ReadProcessMemory(hProcess, (LPVOID)(dwAddr + 8), &dwHight, sizeof(DWORD), &dwRead);


//判断游戏模式是否为高级模式

if (dwWidth != 30 || dwHight != 16)

{

return 0;

}


DWORD dwBoomAddr = 0x01005340;

DWORD dwSize = dwWidth*dwHight + dwWidth * 2 + dwHight * 2 + 4;

pByte = (PBYTE)malloc(dwSize);


//读取整个雷区的数据

ReadProcessMemory(hProcess, (LPVOID)dwBoomAddr, pByte, dwSize, &dwRead);

BYTE bClear = 0x8E;

int i = 0;

int n = dwNum;

while (i<dwSize)

{

if (pByte[i] == 0x8F)//0x8F代表的是雷

{

DWORD dwAddr1 = 0x01005340 + i;

WriteProcessMemory(hProcess, (LPVOID)dwAddr1, &bClear, sizeof(BYTE), &dwRead);

n--;

}

i++;

}


//刷新扫雷的客户区

RECT rt;

GetClientRect(hWinmine, &rt);

InvalidateRect(hWinmine, &rt, TRUE);


free(pByte);

printf("%d \r\n", n);


CloseHandle(hProcess);

getchar();

return 0;

}


一分钟找出所有雷的扫雷外挂源码的评论 (共 条)

分享到微博请遵守国家法律