Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.04;
Скачать: CL | DM;

Вниз

Чтение из памяти другой программы   Найти похожие ветки 

 
_white_   (2006-03-14 09:16) [0]

Вопросо у меня следующий: Имеется
программа,
которая вносит данные в память, требуется другой программой
эти данные
прочитать (адрес известен), видимо нужно вначале найти
процесс (его
адресное пространство) и затем работать уже с адресным
пространством
найденого процесса. Пожалуйста помогите советом и если
можно небольшим
примером


 
Сергей М. ©   (2006-03-14 09:32) [1]


> нужно вначале найти
> процесс


Точнее - открыть процесс по известному PID.

См. OpenProcess()


> работать уже с адресным
> пространством
> найденого процесса


См. ReadProcessMemory()


 
_white_   (2006-03-14 09:48) [2]

А где лучше посмотреть описание данных функций, и как узнать PID


 
Сергей М. ©   (2006-03-14 10:08) [3]


> где лучше посмотреть описание данных функций


В стандартной справке либо на msdn.microsoft.com.


> как узнать PID


NT - см. EnumProcesses() в модуле psapi.pas


 
_white_   (2006-03-14 10:21) [4]

Я вижу что Вы проффессионал в своём деле, и наверняка что-то подобное делали, я был бы вам благодарен если бы вы мне оказали одолжение приведя пример, который как вы сами знаете является куда более удобной вещью нежели перерывание кучи литературы в поисках ответа, ведь слово знающего человека важнее.


 
_white_   (2006-03-14 10:21) [5]

Я вижу что Вы проффессионал в своём деле, и наверняка что-то подобное делали, я был бы вам благодарен если бы вы мне оказали одолжение приведя пример, который как вы сами знаете является куда более удобной вещью нежели перерывание кучи литературы в поисках ответа, ведь слово знающего человека важнее.


 
balepa ©   (2006-03-14 10:31) [6]

Ты все таки зайди на MSDN там тоже примеры есть (на С конечно, но разобраться можно)


 
kaZaNoVa ©   (2006-03-14 12:16) [7]

а для чего тебе читать его память? может есть более простое и рациональное решение задачи?

а если просто хочется узнать что-нить из памяти процесса - идеальна прога Artmoney


 
Сергей М. ©   (2006-03-14 12:24) [8]


> _white_   (14.03.06 10:21) [5]


http://www.torry.net/vcl/misc/games/memcheater.zip


 
Игорь Шевченко ©   (2006-03-14 12:36) [9]

kaZaNoVa ©   (14.03.06 12:16) [7]

Если у тебя есть фонтан - заткни его, дай отдохнуть и фонтану.


 
viman ©   (2006-03-14 12:53) [10]

_white_, уточнение. Вы желаете читать данные из чужой программы, которую не можете изменить или же вам просто нужно огранизовать обмен данными между своими программами(или копиями одной и той же)?
В 1-ом случае вам поможет ReadProcessMemory, как и было описано.
Во 2-ом - разделяемая память, например через Mapping file.


 
kaZaNoVa ©   (2006-03-14 15:52) [11]

Игорь Шевченко ©   (14.03.06 12:36) [9]
я что-то не то написал?
что-то плохое?

у Вас предвзятое мнение  к моему нику????


 
kaZaNoVa ©   (2006-03-14 15:54) [12]

function GetNameByPid(Pid: dword): string;
var
hProcess, Bytes: dword;
Info: PROCESS_BASIC_INFORMATION;
ProcessParametres: pointer;
ImagePath: TUnicodeString;
ImgPath: array[0..MAX_PATH] of WideChar;
begin
Result := "";
ZeroMemory(@ImgPath, MAX_PATH * SizeOf(WideChar));
hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, Pid);
if ZwQueryInformationProcess(hProcess, ProcessBasicInformation, @Info,
                             SizeOf(PROCESS_BASIC_INFORMATION), nil) = STATUS_SUCCESS then
 begin
  if ReadProcessMemory(hProcess, pointer(dword(Info.PebBaseAddress) + $10),
                       @ProcessParametres, SizeOf(pointer), Bytes) and
     ReadProcessMemory(hProcess, pointer(dword(ProcessParametres) + $38),
                       @ImagePath, SizeOf(TUnicodeString), Bytes)  and
     ReadProcessMemory(hProcess, ImagePath.Buffer, @ImgPath,
                       ImagePath.Length, Bytes) then
       begin
         Result := ExtractFileName(WideCharToString(ImgPath));
       end;
  end;
CloseHandle(hProcess);
end;


 
Игорь Шевченко ©   (2006-03-14 18:10) [13]

kaZaNoVa ©   (14.03.06 15:52) [11]


> у Вас предвзятое мнение  к моему нику????


Нет, к содержимому постов


 
kaZaNoVa ©   (2006-03-14 19:43) [14]

Игорь Шевченко ©   (14.03.06 18:10) [13]
Нет, к содержимому постов


ок ничего не буду писать ..



Страницы: 1 вся ветка

Текущий архив: 2006.06.04;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.069 c
3-1143456790
kyn66
2006-03-27 14:53
2006.06.04
Разноцветный RxDBGrid для таблицы для Advantage TDataSet


15-1147412642
User_OKA
2006-05-12 09:44
2006.06.04
Watches


2-1147666221
Rubey
2006-05-15 08:10
2006.06.04
Обновление главной формы


3-1144412042
Dest81
2006-04-07 16:14
2006.06.04
Цена баз данных


2-1147715553
MVP
2006-05-15 21:52
2006.06.04
Как организовать цикл?