Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как найти указатель на динамическую переменную


Автор: Breezz 2.6.2011, 18:09
Здравствуйте уважаемые.
Ищу с помощью АртМани значение в памяти другого процесса.
АртМани находит то что мне нужно. Далее я пытаюсь в своей программе получить доступ к процессу и записать по найденному АртМани адресу свое значение, делаю так:

Код

...
WindowName := FindWindow(nil,WindowTitle);
If WindowName = 0 then
begin
MessageDlg('Процесс в памяти не найден.', mtwarning,[mbOK],0);
end;

ThreadId := GetWindowThreadProcessId(WindowName ,@ProcessId);
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,Fals e,ProcessId);

GetMem(buf,1);
buf^ := Chr(PokeValue);
WriteProcessMemory(HandleWindow,ptr (Address),buf,NumberOfBytes,write);
FreeMem(buf);
closehandle(HandleWindow);
...


Но адрес который находит АртМани, меняеться каждый раз при перезапуске программы, т.е. переменная содержащая нужную мне инфу - динамическая, можно как нить при запуске моей программы найти ее?

Понимаю, что нужно искать указатель. Пробовал с помощью АртМани нахожу нужную мне ячейку памяти, далее ищу указатель на этот адрес не находит ничего, делаю поиск указателя на начало блока памяти находит, но их столько, что за год не перебрать) 200+ тысяч указателей, пытаюсь отсеять, отсеивается примерно половина, но 100 тысяч указателей, как-то тоже не совсем желаемый результат. Как быть? Что я не так делаю или как это лучше сделать?

M
Rrader
Пользуйтесь подсветкой кода

Автор: Breezz 2.6.2011, 20:31
Неужели никто не знает?)

Автор: Dik0n 2.6.2011, 21:44
Бери отладчик и вперед, ставишь точку останова на адрес и смотришь, анализируешь smile откуда и куда что пишется. А можно просто занопить инструкцию или сделать инжект что бы код программы работал как твоей душе захочется, сейчас все так трейнеры пишут.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)