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

Вниз

сабж   Найти похожие ветки 

 
СатирЪ ©   (2004-06-24 19:44) [0]

как в винде узнать значение переменных окружения уже запущенного процесса?


 
Игорь Шевченко ©   (2004-06-24 21:32) [1]

В NT/Win2k/WinXP - через PEB, например.
PEB можно получить через NtQueryInformationProcess(...ProcessBasicInformation....) или по фиксированному адресу.

Пример работы с PEB есть в http://www.schevchenko.net.ru/SRC/EnumFunctions_60.zip


 
СатирЪ ©   (2004-06-25 13:41) [2]


2Игорь Шевченко ©   (24.06.04 21:32) [1]

Благодарю.
PEB - Process Environment Block?


 
СатирЪ ©   (2004-06-25 16:56) [3]

type
 TNtQueryProcessFunction =
   function (ProcessID : Cardinal; ProcessClass : Integer;
             Buffer : Pointer; BufferSize : Cardinal;
             PReturnLength : PDWORD) : Integer; stdcall;

funciton GetProcessEnvironmentVariables:boolean;
var   func : TNtQueryProcessFunction;
begin
 Result:=False;

 @func := GetProcAddress (GetModuleHandle ("ntdll.dll"),
                            "NtQueryInformationProcess");

 if Assigned(func) AND (func (применить к чему-то)) then
 begin
   //
 end;
end;

а как конкретно можно получить этот PEB?


 
СатирЪ ©   (2004-06-25 17:13) [4]

type
 TPEB = packed record
   InheritedAddressSpace : UChar;
   ReadImageFileExecOptions : UChar;
   BeingDebugged    : UChar;
   SpareBool        : UChar;
   Mutant           : Ptr32;
   ImageBaseAddress : Ptr32;
   Ldr              : Ptr32; { _PEB_LDR_DATA }
   ProcessParameters : PRTL_USER_PROCESS_PARAMETERS { _RTL_USER_PROCESS_PARAMETERS };
   SubSystemData    : Ptr32;
   ProcessHeap      : Ptr32;
   { остальные данные упущены }
 end;

 PPEB = ^TPEB;

if NOT ReadProcessMemory(AProcessHandle,@PPEB(PEBAddress)^.ProcessParameters,                      @ATargetProcessParametersPointer, SizeOf(Ptr32),           AReturned) then RaiseLastWin32Error();

Скажите, пожалуйста, где в этой структуре находятся переменные окружения ?


 
Игорь Шевченко ©   (2004-06-25 22:52) [5]


> Скажите, пожалуйста, где в этой структуре находятся переменные
> окружения ?



>    ProcessParameters : PRTL_USER_PROCESS_PARAMETERS


В этой структуре есть поле Environment. Оно и указывает на блок переменных окружения.



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

Форум: "Потрепаться";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.034 c
14-1088659709
skiFF
2004-07-01 09:28
2004.07.18
на счет ЕХЕ-шников


1-1089144177
whitespider
2004-07-07 00:02
2004.07.18
Как связаться с Маткадом


1-1088963569
Igit
2004-07-04 21:52
2004.07.18
Обрезать файл в начале


3-1087766861
Damager
2004-06-21 01:27
2004.07.18
Резервная копия БД Paradox


1-1088825202
zac
2004-07-03 07:26
2004.07.18
Не запускать два раза





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