ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

[C++] Вытащить значение адресса из процесса
  #1  
Старый 26.11.2008, 01:58
Solker
Участник форума
Регистрация: 04.05.2006
Сообщений: 161
Провел на форуме:
389768

Репутация: 158
По умолчанию [C++] Вытащить значение адресса из процесса

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

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

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

  #2  
Старый 26.11.2008, 02:16
Jes
Постоянный
Регистрация: 16.04.2007
Сообщений: 398
Провел на форуме:
3371897

Репутация: 1462
По умолчанию

WinApi + ReadProcessMemory ?
 
Ответить с цитированием

  #3  
Старый 26.11.2008, 03:08
Solker
Участник форума
Регистрация: 04.05.2006
Сообщений: 161
Провел на форуме:
389768

Репутация: 158
По умолчанию

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

Последний раз редактировалось Solker; 26.11.2008 в 04:32..
 
Ответить с цитированием

  #4  
Старый 26.11.2008, 06:35
0x0c0de
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме:
4226446

Репутация: 1564
Отправить сообщение для 0x0c0de с помощью ICQ
По умолчанию

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);
}
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
иксель =\ BitHack Болталка 10 08.11.2008 00:25
ПЕРЕВОД: Технические приемы эксплуатирования операционных систем Ios Дрэгги Чужие Статьи 1 01.05.2008 01:43
Полезные ключи реестра. Scofild Windows 6 23.04.2008 16:17
Возможно ли вытащить нужные байты из раболтающего процесса? wlastas С/С++, C#, Delphi, .NET, Asm 20 28.01.2008 20:28
Многопоточность в Unix KEZ С/С++, C#, Delphi, .NET, Asm 11 10.08.2005 18:29



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ