您的位置:首页 > 其它

郁金香汇编逆向与外挂(63)

2015-05-17 15:11 134 查看
1、用程序控制扫雷程序的菜单。

工具:Visual Studio 2008

MFC控件:

控件程序:

初级

void CtestcallBaseDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
HWND h = ::FindWindow(L"扫雷",NULL);
if(h==0)
{
::MessageBox(0,L"游戏未打开",0,MB_OK);
return;
}
::SendMessage(h,WM_COMMAND,0x209,0);

}
高级

void CtestcallBaseDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
HWND h = ::FindWindow(L"扫雷",NULL);
if(h==0)
{
::MessageBox(0,L"游戏未打开",0,MB_OK);
return;
}
::SendMessage(h,WM_COMMAND,0x20A,0);
}


2、读取基址

MFC控件

文本框关联一个loog变量m_editBase

读取基址API函数:

ReadProcessMemory

BOOL WINAPI ReadProcessMemory(

__in HANDLE hProcess, //进程句柄

__in LPCVOID lpBaseAddress,

__out LPVOID lpBuffer,

__in SIZE_T nSize,

__out SIZE_T* lpNumberOfBytesRead

);

获取进程句柄:

OpenProcess

HANDLE WINAPI OpenProcess(

__in DWORD dwDesiredAccess,

__in BOOL bInheritHandle,

__in DWORD dwProcessId//进程ID

);

获取进程ID:

GetWindowThreadProcessId

DWORD GetWindowThreadProcessId(

HWND hWnd,//窗口句柄

LPDWORD lpdwProcessId

);

void CtestcallBaseDlg::OnBnClickedButton4()
{
// TODO: 在此添加控件通知处理程序代码
HWND h = ::FindWindow(L"扫雷",NULL);
if(h==0)
{
::MessageBox(0,L"游戏未打开",0,MB_OK);
return;
}
//1005194
DWORD pid;
GetWindowThreadProcessId(h,&pid);
//PROCESS_ALL_ACCESS

///////////////////// OpenProcess生效函数:
TOKEN_PRIVILEGES tkp;
HANDLE hToken;
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, 0,(PTOKEN_PRIVILEGES) NULL, 0); //调整获得的权限
//////////////////////////////////////////

HANDLE hp=OpenProcess(PROCESS_ALL_ACCESS ,false,pid);

if(hp==NULL)
{
::MessageBox(0,L"打开进程出错",0,MB_OK);
return;
}
ReadProcessMemory(hp,(LPCVOID)0x1005194 , &m_editBase,4,&pid);
UpdateData(false);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: