好友
阅读权限10
听众
最后登录1970-1-1
|
1.CE查基址2.分析数据
3.读出数据判断为0x0F还是0x8F
4.发送鼠标消息
具体不多说了,代码发上去给大家看看吧
//////////////////////////////////////////////////////////////////////////
const int gameBaseAddr=0x1005361;//棋盘基址:0x1005360 第1个为0x10第32个也为0x10所以列最多为30
const int NeedMark=0x8F;//雷,需要标棋
const int NeedTurnOver=0x0F;//需要翻开
const CString szGameCaption=L"扫雷";
//////////////////////////////////////////////////////////////////////////
//翻开空为0x40 显示n就是0x40+n
//////////////////////////////////////////////////////////////////////////
void CXP扫雷外挂Dlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
//CDialogEx::OnOK();
HWND hGame=::FindWindow(NULL,szGameCaption);
if (hGame==NULL)
{
AfxMessageBox(L"请先打开游戏!");
return;
}
DWORD Pid;
::GetWindowThreadProcessId(hGame,&Pid);
HANDLE hProcesss=OpenProcess(PROCESS_ALL_ACCESS,FALSE,Pid);
if (NULL==hProcesss)
{
AfxMessageBox(L"打开进程失败!");
return;
}
CRect rect;
::GetWindowRect(hGame,&rect);
for(int y=0;y<16;++y)
for(int x=0;x<30;++x)
{
int buf=0;
::ReadProcessMemory(hProcesss,LPCVOID(gameBaseAddr+y*32+x),&buf,1,0);
if(buf==NeedMark)
{
int lpraram=((y*16+60)<<16)+(x*16+20);
::SendMessage(hGame,WM_RBUTTONDOWN,0,lpraram);
::SendMessage(hGame,WM_RBUTTONUP,0,lpraram);
}
else if (buf==NeedTurnOver)
{
int lpraram=((y*16+60)<<16)+(x*16+20);
::SendMessage(hGame,WM_LBUTTONDOWN,0,lpraram);
::SendMessage(hGame,WM_LBUTTONUP,0,lpraram);
//
SetCursorPos(rect.left+20+x*16,rect.top+60+45+y*16);
//
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
//
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
}
}
CloseHandle(hProcesss);
}
|
-
-
XP扫雷外挂.zip
134.69 KB, 下载次数: 123, 下载积分: 吾爱币 -1 CB
XP扫雷外挂VC代码
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|