powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Прочесть значение памяти по адресу
25 сообщений из 33, страница 1 из 2
Прочесть значение памяти по адресу
    #40054685
STestS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Нужна помощь в считывание адреса памяти ПК чужой программы зная адрес. Использую данный пример, данные считываются но результат вовсе не тот...

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
procedure TForm1.Button3Click(Sender: TObject);
var
  WndHandle, Pid, Data: integer;
  Address: DWORD;
  Pidhandle, NewValue, Readden: Cardinal;
begin

  WndHandle := FindWindow(nil, 'Randon_V55');
  if WndHandle <> 0 then
    GetWindowThreadProcessId(WndHandle, @Pid);
  Pidhandle := OpenProcess(PROCESS_ALL_ACCESS, False, Pid);

  ReadProcessMemory(Pidhandle, ptr($0015CEC8), @NewValue, sizeof(NewValue), Readden);

  ShowMessage(IntToStr(NewValue));
  closehandle(Pidhandle);
end;



Написал для теста тестовую программу которая выдает число адрес которого я знаю (ArtMoney). Но вместо числа "55" у меня получается "3473461"... Подскажите где ошибаюсь...
Спасибо.


...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054686
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это прикол такой? У тебя прям на скрине подчёркнута строка '55' и число $00350035 = 3473461.
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054688
STestS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GunSmoker,

Та не прикол вроди как, уже целый день парюсь с данной задачей... Я уже просто не понимаю почему у меня в ArtMoney пишет одно число а по факту другое...
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054690
DesWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
STestS,

Ну так все правильно... Если взять 4байта юникодовской строки "55" и сказать что это DWORD получишь такое число - $00350035(3 473 461). Ну или обратно...
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054691
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что '55' - не число.
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054692
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
STestS,

У тебя тут ни единой проверки на ошибки нет.

После вызова каждой из этих функций: FindWindow, GetWindowThreadProcessId, OpenProcess и ReadProcessMemory
надо проверять, успешно ли выполнена каждая из них. И если нет - смотреть GetLastError и не продолжать дальнейший алгоритм.

Впрочем, это касается любой задачи, не только этой.
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054698
STestS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRock,

О проверке я знаю. Сначала проверка была но потом удалил. Проверял и з проверкой и без все параметры совпадают... Решу проблему верну проверку обязательно!
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054699
STestS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DesWind, GunSmoker,

Не пойму о чем вы говорите.. Как не число если у меня "55"...
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054701
DesWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
STestS,

Тут у тебя "55" такое же число как и, например "ЯЯ"
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054702
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
STestS
DesWind, GunSmoker,

Не пойму о чем вы говорите.. Как не число если у меня "55"...
'55' - строка, 0035 - номер (код) символа '5'.
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054703
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
STestS
DesWind, GunSmoker,

Не пойму о чем вы говорите.. Как не число если у меня "55"...


Строка "55" и целое число 55 - это разные вещи:
"55" это последовательность из 2х символов с кодами 0x35, каждый из которых занимает 2 байта (в юникоде). Число 55 это 4 байта, младший имеет значение 0x35, остальные 0
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054704
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
var
  LStr: UnicodeString;  // или WideString, если Delphi старая
begin
  ..........
  SetLength(LStr, 2)
  ReadProcessMemory(Pidhandle, ptr($0015CEC8), LStr, 4, Readden);
  ShowMessage(LStr);
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054819
STestS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,

Вроде как помутнение прошло) Понял о чем шла вчера речь, попробовал з другими типами данный и все получилось. Но все равно не получилось получить то значение...

...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054823
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
STestS
Но все равно не получилось получить то значение...

Преобразовывать не нужно?
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054831
STestS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman,

Так а что преобразовывать если ничего нету... специально звездочки вывел чтобы видеть результат
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054832
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
STestS
wadman,

Так а что преобразовывать если ничего нету... специально звездочки вывел чтобы видеть результат
Учись пользоваться отладчиком. ctrl+alt+c в помощь
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054838
STestS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Barmaley57,

Наверное буду учить. С этим я еще дела не имел... В любом случае спасибо за информацию
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054913
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
STestS
Но все равно не получилось получить то значение...
А зачем брать адрес от строки? Строка - это уже указатель. Я же четко написал
_Vasilisk_
Код: pascal
1.
 ReadProcessMemory(Pidhandle, ptr($0015CEC8), LStr, 4, Readden);

Если не компилируется, тогда так
Код: pascal
1.
 ReadProcessMemory(Pidhandle, Pointer($0015CEC8), Pointer(LStr), 4, Readden);
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054926
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё азов не знают, а уже в читеры/хакеры рвутся...
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054928
STestS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,

Да кстати думаю вы правы, нужно попробовать.

Сейчас попробовал на ХЕ6 и новая ошибка на строке

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
procedure TForm2.Button1Click(Sender: TObject);
var
  WndHandle, Pid, Data: integer;
  Address: Dword;
  Pidhandle, NewValue, Readden: Cardinal;
begin
  WndHandle := FindWindow(nil, 'Randon_V55');
  if WndHandle <> 0 then
    GetWindowThreadProcessId(WndHandle, @Pid);
  Pidhandle := OpenProcess(PROCESS_ALL_ACCESS, False, Pid);
  ReadProcessMemory(Pidhandle, ptr($0015CEC8), @NewValue, sizeof(NewValue), Readden);
  ShowMessage(IntToStr(NewValue));
  closehandle(Pidhandle);
end;



Код: pascal
1.
[dcc32 Error] Unit1.pas(46): E2033 Types of actual and formal var parameters must be identical


Я так понимаю проблема в не совместимости данных но тут в чем проблема...

Код: pascal
1.
function ReadProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer; nSize: SIZE_T; var lpNumberOfBytesRead: SIZE_T): BOOL; stdcall;
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054929
STestS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
white_nigger,

Я признаю что много не знаю, но решая такого рода (и не только) задачи опыт будет расти. Не все ж хакерами рождаются)
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054930
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
18.03.2021 14:27, STestS пишет:
> Не все ж хакерами рождаются)

на delphi хакерами не становятся.

только хаЦкерами.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054932
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
STestS, тем более - сначала матчасть
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054952
STestS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
white_nigger,

Полностью согласен! Буду благодарен за материалы (книжки, тематические сайты и т.д.) по которым можно подтянуть свои знания и навыки...
...
Рейтинг: 0 / 0
Прочесть значение памяти по адресу
    #40054955
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
18.03.2021 14:56, STestS пишет:
> Полностью согласен! Буду благодарен за материалы (книжки, тематические сайты и т.д.) по которым можно подтянуть свои знания и навыки...
>

начни с Петцольда (Чарльза)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Прочесть значение памяти по адресу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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