扫雷辅助器实现

一、相关API介绍

       WindowProc 是 Windows 应用程序编程接口(API)中一个非常重要的回调函数,用于处理由操作系统发送给窗口的各种消息。它的全名通常是 Window Procedure,简称为 WndProc,是所有窗口消息的核心处理函数。定义如下:

LRESULT CALLBACK WindowProc(
  HWND hwnd,      // 指向窗口的句柄。
  UINT uMsg,      //指定消息类型。
  WPARAM wParam,  // 指定其余的、消息特定的信息。该参数的内容与UMsg参数值有关。
  LPARAM lParam   //指定其余的、消息特定的信息。该参数的内容与uMsg参数值有关。
)

二、直接上手

首先用OD进行调试选中查看-->窗口

跳转到这个界面后找到消息处理函数

然后右击选中跟随ClassProc

跳转到消息处理函数后,找到第二个参数(ebp+0xc)

然后在第二个参数下一行选中断点-->条件

对当行下一个WM_COMMAND的消息断点,然后运行对菜单栏进行操作看是否断下了

断下了后找到堆栈窗口左击在右击选中转到EBP

然后找到消息处理函数四个参数的值

代码实现:
HWND  hwnd = ::FindWindow(NULL,_T("扫雷"));  //寻找进程句柄
::SendMessage(hwnd,WM_COMMAND,0x209,0);  //向进程发送消息

通过cheatengine.exe软件不断的通过首地址的改变与不改变不断的判断来找出基址

找出基址后就选中地址右击找到"Browse this memory region"左击

跳转到了内存处,然后在通过多次实验查看基址是否找对,如果基址对头就可以查看当是点击到雷时内存的变化

通过Spy++软件查找到窗口后

对消息下断

点击开始

然后就能得到消息类型与点击的坐标,在扫雷中就可以找到第一个位置与最后一个位置的坐标就可以得到每个位置的坐标

辅助器:

📎扫雷辅助器.rar.py

  DWORD pid;
	HWND  hwnd = ::FindWindow(NULL,_T("扫雷"));	//获取窗口句柄
	GetWindowThreadProcessId(hwnd,&pid);	//通过窗口句柄获取进程ID

	HANDLE  hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);  //通过进程ID获取进程句柄

    //通过for循环逐个去遍历
	for (int i =0;i < dwLine;++i)
	{
		for (int j = 0;j < 32;++j)
		{
            if (0x10 == gamedata[i][j])
            {
                  break;
            }

	        //第一个位置的坐标
			xypos2[0] = gamex + j*20;//
			xypos2[1] = gamey + i*20;

			if ((char)0x8F != (char)gamedata[i][j])
			{
					//向窗口发送消息
                  ::PostMessage(hwnd, WM_LBUTTONDOWN,MK_LBUTTON,*(int *)(xypos2));
                  ::PostMessage(hwnd, WM_LBUTTONUP,0,*(int *)(xypos2));

			}

		}

	}

//刷新
	UpdateData(FALSE);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值