Форум: "WinAPI";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];
ВнизParamStr(X) Найти похожие ветки
← →
Sur (2004-08-12 14:08) [0]У меня есть xэндл процесса(приложения). Как по нему мне узнать
параметры с котороми он был запущен(То есть ParamStr(1)... ParamStr(ParamCount)???
← →
Digitman © (2004-08-12 14:24) [1]внедряешь в этот процесс свою нить
в коде нити читаешь структуру PEB
в поле PEB.ProcessParameters лежит адрес структуры RTL_USER_PROCESS_PARAMETERS
в поле структуры RTL_USER_PROCESS_PARAMETERS.CommandLine лежит то что тебе нужно
← →
Sur (2004-08-12 14:31) [2]я не совсем понял, можно чуть попадробнее или может маленький
примерчик,.
спасибо за ответ.
← →
Digitman © (2004-08-12 14:34) [3]
> я не совсем понял
что конкретно ?
> можно чуть попа
насчет попы - это не ко мне)
← →
Digitman © (2004-08-12 14:38) [4]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:39) [5]указатель на структуру TPeb м.б. получен так
function GetCurrentPEB: PPEB;
asm
mov eax, fs:[TTeb.Peb]
end;
← →
Sur (2004-08-12 14:40) [6]что значит внедрять в процесс свою нить?
← →
Игорь Шевченко © (2004-08-12 14:40) [7]Digitman © (12.08.04 14:39)
Можно и без внедрения, через ReadProcessMemory :)
← →
Sur (2004-08-12 14:42) [8]ладно счас попробую.
Спасибо за ответы
← →
Digitman © (2004-08-12 14:46) [9]
> Игорь Шевченко © (12.08.04 14:40) [7]
не задавался целью выяснить, можно ли так ..
а fs-то куда кажет ?
← →
Игорь Шевченко © (2004-08-12 14:50) [10]Digitman © (12.08.04 14:46) [9]
> не задавался целью выяснить, можно ли так ..
http://www.schevchenko.net.ru/SRC/EnumFunctions_60.zip - так тут как раз пример.
> а fs-то куда кажет ?
А он всегда по одному адресу - $7FFDF000
← →
Digitman © (2004-08-12 14:54) [11]
> Игорь Шевченко © (12.08.04 14:50) [10]
за Винтукей - да ... а в прочих НТbased-системах ? здесь утверждать не могу
← →
Игорь Шевченко © (2004-08-12 15:07) [12]Digitman © (12.08.04 14:54) [11]
> а в прочих НТbased-системах ? здесь утверждать не могу
Начиная, по крайней мере, с NT4. Это документировано, насколько я помню.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.061 c