например, ntdll и kernel32 а также, как выяснилось, user32, gdi32, advapi32 и rpcrt4 вопрос: где они прописаны и кто их загружает?
user32 грузится ведь далеко не во все процессы, в консольных прогаъх его нету. также не уверен насчёт rpcrt4...
создай простенькую программульку с бесконечным циклом без вызова апей, собери с subsystem console, проверь, что реально console и что в импорте ничего нет, и запусти потом посмотри либы, которые к ней подгрузились
ntdll загружается во время создания процесса, kernel32 загружает сервер подсистемы win32, когда ему приходит опевещение о создании нового процесса (может немного ошибаюсь))) если поле subsystem PE-заголовка равно 0x0001 (native) то в адресном пространстве в обязательном порядке может присутствовать только ntdll ну а все остальные библиотеки грузятся в случае если наша прога ипортирует что-либо из них
Nouzui Так. Способа есть 4. По крайней мере я знаю 4 способа. Способ 1. Реестр. Это же ответ на твой вопрос. От комманды uinc вышла в свет прекрасная утилка autoruns.exe Скачать можешь на ихнем сайте. Это я к тому, что есть несколько веток реестра, занеся в которые путь к своей либе, ты обеспечишь ее загрузку во все процессы. Какие это ветки - выбирай сам. Скачиваешь эту утилку и смотришь, куда тебе лучше вклиниться. Способ 2. Ручной Тут не все так просто, как с первым способом, и еще нужно беспокоиться о новых процессах. И так суть, ты просто пишешь небольшую процедурку GetPIDbyName(lpImageName); а далее открываешь процесс, выделяешь в нем память, создаешь удаленный поток, который подгружает либу. Нужные тебе АПИ - это VirtualAllocEx, WriteProcessMemory, CreateRemoteThread, LoadLibraryExA, ExitThread. Хотя можно обойтись и первыми 4мя. Способ 3. Хуки Инжект идет далеко не во все процессы, а только в те, которые запустились после установки хуков. Способ 4. Патчинг, сплайсинг, перехват через сдт Все вирмейкерские методики. Но в данном случае, если ты уже на таком уровне, смысла подгружать длл особого я не вижу
nitrotoluol да нет, ты не понял user32, gdi32, advapi32 и rpcrt4 и так всегда грузятся во все процессы с subsystem console и gui, даже если в импорте вообще ничего нет я просто пытаюсь понять, почему
Nouzui Я же тебе объясняю... В некоторых ветках реестра прописанны либы, которые всегда грузятся, независимо от того, есть они в импорте или нет. Очень часто, подгрузка либы - это реакция на событие, как например winlogon/notify. Списки событий заложенны в ядре, а вот длл, которы нужно грузить - прописываются в реестре. Загрузка консоли - это уже событие, которое соответственно обрабатывается...
W4FhLF Эээ... а я не знаю..может и Руссинович... Но я скачал в UINC/Project. Поэтому считал, что ихняя...
Ничего подобного. При создании любого процесса на его адресное пространство загрузчиком проецируется ntdll.dll, причем, она всегда проецируется первой, независимо от таблицы импорта. А если стоит подсистема native, то в этом процессе кроме ntdll.dll ничего не должно использоваться (по идее). А всякая лажа грузиться в твой процесс по всей видимости из-за различных rtl и прочих сочетаний фигни из трех букв.
W4FhLF nitrotoluol Руссиновича-Руссиновича говорю же, подсистемы character и gui, для них еще подгружается kernel32. Скорее всео, это делает csrss импорт пустой! короче, не грузитесь. Я уже выяснил, что кроме моего компа это больше нигде не воспроизводится. Если когда-нить пойму, почему, напишу...