Главная страница
    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.042 c
1-1146054579
XfroSt
2006-04-26 16:29
2006.06.04
СкроллБар в ListBox


2-1148131942
roman_ln
2006-05-20 17:32
2006.06.04
как заполнить комб список с помощью цикла


2-1147752004
rubey
2006-05-16 08:00
2006.06.04
Ввод через DBGRID


2-1147693593
LaDaN
2006-05-15 15:46
2006.06.04
Линейные односвязные списки


11-1127987323
shalex
2005-09-29 13:48
2006.06.04
Обрезаются иконки в MainMenu





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский