powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Аномалии при считывании значения из памяти процесса
6 сообщений из 6, страница 1 из 1
Аномалии при считывании значения из памяти процесса
    #37724506
alekseiryzhakov26
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте это снова я - бедный и несчастный. Пишу приложение для взаимодействия с компьютерной игрой и столкнулся с неприятной проблемой. При обращении к определенному значению в памяти процесса игры, сам процесс происходит нормально. Моя программа без всяких проблем подключается к процессу игры, по статическому адресу находит динамический и считывает с него значение. Собственно ниже сам исходный программный код который выполняет все эти действия:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
const
  Address = '$102654FC';  //Статический адрес, тот что отвечает за динамический адрес счетчика жизней

var
  GameScreen: HWND;
  ProcessIdentifier, ProcessHandle, Temp: Cardinal;
  Index: DWORD;
  Pointer, Difference: Integer;
  Buffer: Byte;
  Previous: Byte = 0;

begin
  GameScreen := FindWindow(nil, PChar('Unreal Tournament 2004'));
  if GameScreen <> 0 then
  begin
    GetWindowThreadProcessId(GameScreen, @ProcessIdentifier);
    ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessIdentifier);
    while True do
    begin
      ReadProcessMemory(ProcessHandle, Ptr(StrToInt(Address)), @Index, 4, Temp);  //Читаем значение с статического адреса
      Pointer := StrToInt('$' + IntToHex(Index + 1140, 16));  //Конструируем динамический адрес, к полученному из статического адреса значение прибавляем 1140 и переводим в Шестнадцатеричную систему счисления, тем самым получаем указатель на динамический адресс
      ReadProcessMemory(ProcessHandle, Ptr(Pointer), @Buffer, 1, Temp);  //Читаем значение с динамического адреса, в моем случаи это счетчик игровых жизней
      {Далее идет реакция на события счетчика жизней, в моем случаи просто записываем все что с ним происходит}
      Difference := Buffer - Previous;
      Previous := Buffer;
      if Difference = 0 then
      begin
        WriteLn(Russification('[' + IntToStr(Buffer) + ']' + ' Спокоен как удав...'));
      end
      else
      begin
        if Difference > 0 then
        begin
          WriteLn(Russification('[' + IntToStr(Buffer) + ']' + ' Повысил свои шансы на победу и готов к боли'));
        end
        else
        begin
          WriteLn(Russification('[' + IntToStr(Buffer) + ']' + ' Получил по шее'));
        end;
      end;
    end;
  end;
end.


Так вот, собственно как уже было сказано все работает почти как надо, то есть значение читается, но как-то странно... Изначально отображается информация касательно счетчика жизней вражеского объекта, после его смерти опять же его. Но если погиб я, то уже отображается моя информация и так далее... Но когда играю один без ботов, то изначально отображается информация из моего счетчика. Вопрос что я сделал не так или что не усмотрел?

Модератор: Пользуйтесь тегом SRC
...
Рейтинг: 0 / 0
Аномалии при считывании значения из памяти процесса
    #37724513
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А с чего ты решил, что там должна всегда быть одна и та же инфа?
...
Рейтинг: 0 / 0
Аномалии при считывании значения из памяти процесса
    #37732315
alekseiryzhakov26
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Edd.DragonА с чего ты решил, что там должна всегда быть одна и та же инфа?
Поясни...
...
Рейтинг: 0 / 0
Аномалии при считывании значения из памяти процесса
    #37732461
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekseiryzhakov26Edd.DragonА с чего ты решил, что там должна всегда быть одна и та же инфа?
Поясни...а что здесь пяснять?
где ты прочел контракт из которого следует, что кол-во жизней всегда по одному адресу, и ничего другого там быть не может?

одна и та же память. может спокойно использоваться в разное время - под разные задачи.
...
Рейтинг: 0 / 0
Аномалии при считывании значения из памяти процесса
    #37732493
alekseiryzhakov26
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ZyK_BotaNalekseiryzhakov26пропущено...

Поясни...а что здесь пяснять?
где ты прочел контракт из которого следует, что кол-во жизней всегда по одному адресу, и ничего другого там быть не может?

одна и та же память. может спокойно использоваться в разное время - под разные задачи.
Черт, что же тогда делать...
...
Рейтинг: 0 / 0
Аномалии при считывании значения из памяти процесса
    #37732515
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekseiryzhakov26ZyK_BotaNпропущено...
а что здесь пяснять?
где ты прочел контракт из которого следует, что кол-во жизней всегда по одному адресу, и ничего другого там быть не может?

одна и та же память. может спокойно использоваться в разное время - под разные задачи.
Черт, что же тогда делать...а ты подумал, что хакерское ремесло - это просто?
меньше Фленова нужно читать.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Аномалии при считывании значения из памяти процесса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]