Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <iostream>
- #include <TlHelp32.h>
- #include <Psapi.h>
- #include <vector>
- std::vector<HMODULE> GetModulesAddr(DWORD processID)
- {
- HMODULE hMods[1024];
- HANDLE hProcess;
- DWORD cbNeeded;
- std::vector<HMODULE> bufer;
- hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID);
- if (EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbNeeded))
- {
- for (int i = 0; i < (cbNeeded / sizeof(HMODULE)); i++)
- {
- bufer.push_back(hMods[i]);
- }
- }
- CloseHandle(hProcess);
- return bufer;
- }
- DWORD GetPid(std::wstring name)
- {
- DWORD pid = 0;
- HANDLE hFind = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
- PROCESSENTRY32 pe{ sizeof(PROCESSENTRY32) };
- Process32First(hFind, &pe);
- while (!pid)
- {
- Process32Next(hFind, &pe);
- if (pe.szExeFile == name)
- pid = pe.th32ProcessID;
- }
- CloseHandle(hFind);
- return pid;
- }
- int main(void)
- {
- int pid = GetPid(L"HackMe.exe");
- std::vector<HMODULE> addresses = GetModulesAddr(pid);
- HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
- int intRead = 0;
- int new_int = 999999;
- SIZE_T write = 0;
- for (HMODULE &addr : addresses)
- {
- do
- {
- addr = HMODULE(long long(addr) + 1);
- if (intRead == 123456)
- {
- std::cout << WriteProcessMemory(hProcess, addr, &new_int, sizeof(new_int), &write)<< " " << write << std::endl;
- std::cout << pid << " " << intRead << " " << addr << std::endl;
- }
- }while(ReadProcessMemory(hProcess, addr, &intRead, sizeof(intRead), 0));
- }
- CloseHandle(hProcess);
- }
Advertisement
Add Comment
Please, Sign In to add comment