Все наверное знают программу ArtMoney. Допустим мы из какой-нить простенькой игры хотим вытащить значение. Тот же сапер, находим адресс в процессе, которые несет в себе информацию по количеству мин оставшихся на поле. Ну не суть какой, например мы нашли его: 01005194 . Теперь собственно вопрос, как написать простейшее приложение на Си, которое будет вытаскивать из этой программы, по данному адрессу его значение. т.е запускаем, она находит процесс, выдирает значение у этого адресса и выдает нам: Мин осталось: 55 Си знаю на уровне cout << "Hello, i'm noob"; Буду рад ссылкам на умные ресурсы.
Спасибо, вот что получилось: Code: #include <iostream.h> #include <windows.h> int main() { HANDLE hProcess = OpenProcess(PROCESS_VM_READ, FALSE, 3564); if(hProcess) { DWORD dwRead; WORD dos_signature; if(ReadProcessMemory(hProcess, (LPVOID)0x01005194, &dos_signature, sizeof(dos_signature), &dwRead)) { cout << dos_signature; } } } И что значит (LPVOID)0x01005194 - (LPVOID). И как представтиь ее в виде отдельнйо переменной, а не пихать прямо в функцию, Пробывал void, const void, int, DWORD и прочее.. всегда ошибки возникают. 2) Я работаю в консоле, и заношу в цыкл, чтение из памяти программы. И хочу что бы он мне не писал постоянно новое значение, а просто заменял старое. Т.е. щяс он мне выводит 2 2 2 2 2 3 3 3 3 3 4 4 4 4 44 5 5 5 5 5 5. А хотелось бы, что бы на экране была всегда одна цыфра, которую он бы изменял.. Надеюсь правильно выразился.
1)LPVOID == void * 2) Code: HANDLE hCons = GetStdHandle(STD_OUTPUT_HANDLE); int i=0; CONSOLE_SCREEN_BUFFER_INFO ConsoleScreenBufferInfo; while(true){ GetConsoleScreenBufferInfo(hCons,&ConsoleScreenBufferInfo); printf("%X",i); SetConsoleCursorPosition(hCons,ConsoleScreenBufferInfo.dwCursorPosition); i++; Sleep(100); }