#include <windows.h> void EnableDebugPriv(); int main() { EnableDebugPriv(); HWND hwar3 = FindWindow("Warcraft III",NULL); if (!hwar3){ MessageBox(0, "先运行魔兽再运行小型MH", "", MB_OK); return false; } DWORD pid; GetWindowThreadProcessId(hwar3, &pid); HANDLE hopen = OpenProcess(PROCESS_ALL_ACCESS, false, pid); if (!hopen){ MessageBox(0, "不能得到PID,可能是权限不足", "", MB_OK); return false; } BYTE data1[] = {0xBF,0xFF,0xFF}; BYTE data2[] = {0xB1,0x00,0x90,0x90,0x90,0x90}; bool success1 = WriteProcessMemory(hopen,(LPVOID)0x6F2A08B2, &data1,3, NULL); if (success1) MessageBox(NULL, "显示敌方单位成功", "", MB_OK); else MessageBox(NULL, "修改失败", "", MB_OK); bool success2 = WriteProcessMemory(hopen,(LPVOID)0x6f406b56, &data2,6, NULL); if (success2){ MessageBox(NULL, "去除大地图战争迷雾成功", "", MB_OK); MessageBox(NULL, "作者:Paull\n博客:paull.llbbll.com", "", MB_OK); }else MessageBox(NULL, "修改失败", "", MB_OK); CloseHandle(hopen); return true; } void EnableDebugPriv() { HANDLE hToken; LUID sedebugnameValue; TOKEN_PRIVILEGES tkp; OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken); LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &sedebugnameValue); tkp.PrivilegeCount = 1; tkp.Privileges[0].Luid = sedebugnameValue; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, false, &tkp, sizeof tkp, NULL, NULL); CloseHandle(hToken); } |