![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ParamStr(X) [D6, Win2k]
Sur © (2004-08-12 14:08:00)У меня есть xэндл процесса(приложения). Как по нему мне узнать
параметры с котороми он был запущен(То есть ParamStr(1)... ParamStr(ParamCount)???
Игорь Шевченко (2004-08-12 15:07:00) [1]Digitman © (12.08.04 14:54) [11]
> а в прочих НТbased-системах ? здесь утверждать не могу
Начиная, по крайней мере, с NT4. Это документировано, насколько я помню.
Digitman (2004-08-12 14:54:00) [2]
> Игорь Шевченко © (12.08.04 14:50) [10]
за Винтукей - да ... а в прочих НТbased-системах ? здесь утверждать не могу
Игорь Шевченко (2004-08-12 14:50:00) [3]Digitman © (12.08.04 14:46) [9]
> не задавался целью выяснить, можно ли так ..
http://www.schevchenko.net.ru/SRC/EnumFunctions_60.zip- так тут как раз пример.
> а fs-то куда кажет ?
А он всегда по одному адресу - $7FFDF000
Digitman (2004-08-12 14:46:00) [4]
> Игорь Шевченко © (12.08.04 14:40) [7]
не задавался целью выяснить, можно ли так ..
а fs-то куда кажет ?
Sur (2004-08-12 14:42:00) [5]ладно счас попробую.
Спасибо за ответы
Sur (2004-08-12 14:40:00) [6]что значит внедрять в процесс свою нить?
Игорь Шевченко (2004-08-12 14:40:00) [7]Digitman © (12.08.04 14:39)
Можно и без внедрения, через ReadProcessMemory :)
Digitman (2004-08-12 14:39:00) [8]указатель на структуру TPeb м.б. получен так
function GetCurrentPEB: PPEB;
asm
mov eax, fs:[TTeb.Peb]
end;
Digitman (2004-08-12 14:38:00) [9]TUNICODE_STRING = packed record
Length: Word;
MaximumLength: Word;
Buffer: PWideChar;
end;
TNtUnicodeString = TUNICODE_STRING;
PNtUnicodeString = ^TNtUnicodeString;
TRTL_USER_PROCESS_PARAMETERS = packed record
MaximumLength : Cardinal;
Length : Cardinal;
Flags : Cardinal;
DebugFlags : Cardinal;
ConsoleHandle : THandle;
ConsoleFlags : Cardinal;
StandardInput : Pointer;
StandardOutput : Pointer;
StandardError : Pointer;
CurrentDirectory : TCURDIR;
DllPath : TUNICODE_STRING;
ImagePathName : TUNICODE_STRING;
CommandLine : TUNICODE_STRING;
Environment : Pointer;
StartingX : Cardinal;
StartingY : Cardinal;
CountX : Cardinal;
CountY : Cardinal;
CountCharsX : Cardinal;
CountCharsY : Cardinal;
FillAttribute : Cardinal;
WindowFlags : Cardinal;
ShowWindowFlags : Cardinal;
WindowTitle : TUNICODE_STRING;
DesktopInfo : TUNICODE_STRING;
ShellInfo : TUNICODE_STRING;
RuntimeData : TUNICODE_STRING;
// +0x090 CurrentDirectores : [32] _RTL_DRIVE_LETTER_CURDIR
end;
TPEB = packed record
{000} InheritedAddressSpace : ByteBool;
{001} ReadImageFileExecOptions : ByteBool;
{002} BeingDebugged : ByteBool;
{003} SpareBool : ByteBool;
{004} Mutant : Pointer;
{008} ImageBaseAddress : Pointer;
{00C} LdrData : PPEB_LDR_DATA; { Modules list }
{010} ProcessParameters : PRTL_USER_PROCESS_PARAMETERS; { _RTL_USER_PROCESS_PARAMETERS }
{014} SubSystemData : Pointer;
{018} ProcessHeap : Pointer;
{01C} FastPebLock : PRTLCriticalSection;
{020} FastPebLockRoutine : Pointer;
{024} FastPebUnlockRoutine : Pointer;
{028} EnvironmentUpdateCount : Cardinal;
{02C} KernelCallbackTable : Pointer;
{030} SystemReserved : Cardinal;
{034} ExecuteOptions : Cardinal; {Pos 0, 2 Bits, SpareBits : Pos 2, 30 Bits }
{038} FreeList : Pointer; { _PEB_FREE_BLOCK }
{03C} TlsExpansionCounter : Cardinal;
{040} TlsBitmap : Pointer;
{044} TlsBitmapBits : array[0..1] of Cardinal;
{04C} ReadOnlySharedMemoryBase : Pointer;
{050} ReadOnlySharedMemoryHeap : Pointer;
{054} ReadOnlyStaticServerData : Pointer;
{058} AnsiCodePageData : Pointer;
{05C} OemCodePageData : Pointer;
{060} UnicodeCaseTableData : Pointer;
{064} NumberOfProcessors : Cardinal;
{068} NtGlobalFlag : Cardinal;
{06C} Reserved0 : DWord;
{070} CriticalSectionTimeout : TLARGEINTEGER;
{078} HeapSegmentReserve : Cardinal;
{07C} HeapSegmentCommit : Cardinal;
{080} HeapDeCommitTotalFreeThreshold : Cardinal;
{084} HeapDeCommitFreeBlockThreshold : Cardinal;
{088} NumberOfHeaps : Cardinal;
{08C} MaximumNumberOfHeaps : Cardinal;
{090} ProcessHeaps : Pointer;
{094} GdiSharedHandleTable : Pointer;
{098} ProcessStarterHelper : Pointer;
{09C} GdiDCAttributeList : Cardinal;
{0A0} LoaderLock : PRTLCriticalSection;
{0A4} OSMajorVersion : Cardinal;
{0A8} OSMinorVersion : Cardinal;
{0AC} OSBuildNumber : Word;
{0AE} OSCSDVersion : Word;
{0B0} OSPlatformId : Cardinal;
{0B4} ImageSubsystem : Cardinal;
{0B8} ImageSubsystemMajorVersion : Cardinal;
{0BC} ImageSubsystemMinorVersion : Cardinal;
{0C0} ImageProcessAffinityMask : Cardinal;
{0C4} Reserved2 : array[0..34] of DWord;
{150} Reserved3 : DWord;
{154} Reserved4 : array[0..31] of DWord;
{1D4} Win32WindowStation : THandle;
{1D8} Reserved5 : DWord;
{1DC} Reserved6 : DWord;
{1E0} CSDVersion : PWord;
{1E4} Reserved7 : DWord;
{1E8}
end;
PPEB = ^TPEB;
Digitman (2004-08-12 14:34:00) [10]
> я не совсем понял
что конкретно ?
> можно чуть попа
насчет попы - это не ко мне)
Sur (2004-08-12 14:31:00) [11]я не совсем понял, можно чуть попадробнее или может маленький
примерчик,.
спасибо за ответ.
Digitman (2004-08-12 14:24:00) [12]внедряешь в этот процесс свою нить
в коде нити читаешь структуру PEB
в поле PEB.ProcessParameters лежит адрес структуры RTL_USER_PROCESS_PARAMETERS
в поле структуры RTL_USER_PROCESS_PARAMETERS.CommandLine лежит то что тебе нужно