void CTestDlgDlg::OnButton1()
{
// TODO: Add your control notification handler code here
HWND hwnd = ::FindWindow(NULL, "dtor21Test");
if (!hwnd)
{
MessageBox("can't find!");
return;
}
DWORD pid = 0;
GetWindowThreadProcessId(hwnd, &pid);
if (!pid)
{
MessageBox("! pid");
return;
}
HANDLE h = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
if (!h)
{
MessageBox("!h");
return;
}
LPVOID rAddr = (LPVOID)0x401000;
UCHAR ucwtBuf[4] = {0x01,0x01,0x01,0x01};
DWORD rwt = 0;
if (!WriteProcessMemory(h, rAddr, ucwtBuf, 4, &rwt))
{
MessageBox("!WriteProcessMemory(h, rAddr, ucwtBuf, 4, &rwt)");
return;
}
}
{
// TODO: Add your control notification handler code here
HWND hwnd = ::FindWindow(NULL, "dtor21Test");
if (!hwnd)
{
MessageBox("can't find!");
return;
}
DWORD pid = 0;
GetWindowThreadProcessId(hwnd, &pid);
if (!pid)
{
MessageBox("! pid");
return;
}
HANDLE h = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
if (!h)
{
MessageBox("!h");
return;
}
LPVOID rAddr = (LPVOID)0x401000;
UCHAR ucwtBuf[4] = {0x01,0x01,0x01,0x01};
DWORD rwt = 0;
if (!WriteProcessMemory(h, rAddr, ucwtBuf, 4, &rwt))
{
MessageBox("!WriteProcessMemory(h, rAddr, ucwtBuf, 4, &rwt)");
return;
}
}
本文演示了如何使用C++获取窗口线程ID、打开进程、读取进程内存地址并进行修改的基本步骤。

864

被折叠的 条评论
为什么被折叠?



