您的位置:首页 > 编程语言

作为开篇,就先塞个自己写的东西,XP扫雷小外挂,没什么技术含量

2010-06-05 18:20 204 查看
// TODO: 在此添加控件通知处理程序代码

//获得扫雷窗口的句柄/////////////

wchar_t wc_WinMine_WindowName[5] = L"扫雷";

HWND h_WinMine_WindowHandle = ::FindWindow(0,wc_WinMine_WindowName);

if(!h_WinMine_WindowHandle)

{

MessageBox(L"找不到扫雷游戏",L"错误",0);

return 0;

}

//////////////////////////////////

//获得扫雷进程ID//////////////////

DWORD dw_WinMine_WindowProcId;

LPDWORD lpdw_WinMine_WindowThreadId = &dw_WinMine_WindowProcId;

GetWindowThreadProcessId(h_WinMine_WindowHandle,lpdw_WinMine_WindowThreadId);

/////////////////////////////////////////////

//获得访问进程权限///////////////////////////

TOKEN_PRIVILEGES   tkp;   

HANDLE   hToken=NULL; 

 

if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken)) 



LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tkp.Privileges[0].Luid);//修改进程权限 

tkp.PrivilegeCount=1; 

tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED; 

AdjustTokenPrivileges(hToken,FALSE,&tkp,sizeof tkp,NULL,NULL);//通知系统修改进程权限 



CloseHandle(hToken); 

//////////////////////////////////////////////

//获得扫雷进程的句柄////////

HANDLE h_WinMine_ProcHandle = OpenProcess(PROCESS_ALL_ACCESS,0,dw_WinMine_WindowProcId);

DWORD LastError = GetLastError();

//获得扫雷的高度与宽度

size_t BufferSize = 8;

byte WinMine_HWBuff[8];

ReadProcessMemory(h_WinMine_ProcHandle ,(LPCVOID)0x010056A8,WinMine_HWBuff,BufferSize,0);

size_t WinMine_Hight = WinMine_HWBuff[0];//高度

size_t WinMine_Width = WinMine_HWBuff[4];//宽度

//根据雷盘大小调整窗品大小

::SetWindowPos(::FindWindow(0,L"MyWine         by Airlike  2010.4.4"),HWND_TOP,0,0,WinMine_Width*20,WinMine_Hight*18+70,SWP_NOMOVE);

m_WinMine_Window.SetWindowPos(&CWnd::wndTop,10,10,WinMine_Width*17,WinMine_Hight*15,0);

m_Button.SetWindowPos(&CWnd::wndTop,WinMine_Width,WinMine_Hight*15+25,0,0,SWP_NOSIZE);

//读取雷盘数据

BufferSize = 1024;

byte WinMine_MemoryBuffer[1025];

ReadProcessMemory(h_WinMine_ProcHandle ,(LPCVOID)0x01005360,WinMine_MemoryBuffer,BufferSize,0);

//遍历开始

for(UINT i = 0; i<BufferSize;i++)

{

//根据内存结构,一行起始为0x10,数量为棋盘宽度,结束为0x10,中间的为雷的数据

if((WinMine_MemoryBuffer[i]==0x10)&&(WinMine_MemoryBuffer[i+WinMine_Width]!=0x10)&&(WinMine_MemoryBuffer[i+WinMine_Width+1]==0x10)&&((i/16)%2==0))

{

for(UINT j = 1;j<WinMine_Width+1;j++)

{

//分析雷数据

switch(WinMine_MemoryBuffer[i+j])

{

case 0x0f:

{

m_WinMine_MemoryBuffer += L"未";

break;

}

case 0x40:

{

m_WinMine_MemoryBuffer += L"空";

break;

}

case 0x41:

{

m_WinMine_MemoryBuffer += L"1";

break;

}

case 0x42:

{

m_WinMine_MemoryBuffer += L"2";

break;

}

case 0x43:

{

m_WinMine_MemoryBuffer += L"3";

break;

}

case 0x44:

{

m_WinMine_MemoryBuffer += L"4";

break;

}

case 0x45:

{

m_WinMine_MemoryBuffer += L"5";

break;

}

case 0x46:

{

m_WinMine_MemoryBuffer += L"6";

break;

}

case 0x47:

{

m_WinMine_MemoryBuffer += L"7";

break;

}

case 0x48:

{

m_WinMine_MemoryBuffer += L"8";

break;

}

case 0x8f:

{

m_WinMine_MemoryBuffer += L"雷";

break;

}

 

default:

{

m_WinMine_MemoryBuffer += L"  ";

break;

}

}

m_WinMine_MemoryBuffer += " ";

}

m_WinMine_MemoryBuffer += "/r/n";

}

}

//将数据更新出来

UpdateData(false);

//重置数据

m_WinMine_MemoryBuffer = "";

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  扫雷 外挂 原创 代码 vc
相关文章推荐