Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Вниз

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

 
_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 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.039 c
2-1147792001
AlexanderMS
2006-05-16 19:06
2006.06.04
С процедурами - лучше?


2-1147603293
Andrey235
2006-05-14 14:41
2006.06.04
как заменить вайл используемый Виндой


15-1147350795
carmen
2006-05-11 16:33
2006.06.04
tpu


6-1138653753
Alexis
2006-01-30 23:42
2006.06.04
Мониторинг файла в Internet


2-1148119967
tytci2007
2006-05-20 14:12
2006.06.04
Как упаковать в 6 байт дату и время





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский