Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   [C++] Вытащить значение адресса из процесса (https://forum.antichat.xyz/showthread.php?t=93537)

Solker 26.11.2008 01:58

[C++] Вытащить значение адресса из процесса
 
Все наверное знают программу ArtMoney.
Допустим мы из какой-нить простенькой игры хотим вытащить значение. Тот же сапер, находим адресс в процессе, которые несет в себе информацию по количеству мин оставшихся на поле. Ну не суть какой, например мы нашли его: 01005194 .
Теперь собственно вопрос, как написать простейшее приложение на Си, которое будет вытаскивать из этой программы, по данному адрессу его значение.

т.е запускаем, она находит процесс, выдирает значение у этого адресса и выдает нам:
Мин осталось: 55

Си знаю на уровне cout << "Hello, i'm noob";
Буду рад ссылкам на умные ресурсы.

Jes 26.11.2008 02:16

WinApi + ReadProcessMemory ?

Solker 26.11.2008 03:08

Спасибо, вот что получилось:
Код:

#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.
А хотелось бы, что бы на экране была всегда одна цыфра, которую он бы изменял.. Надеюсь правильно выразился.

0x0c0de 26.11.2008 06:35

1)LPVOID == void *
2)
Код:

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);
}



Время: 16:36