Как скрыть процесс

Тема в разделе "Delphi - Система", создана пользователем MegaDiablo, 7 май 2006.

Статус темы:
Закрыта.
  1. MegaDiablo

    MegaDiablo Гость

    Как скрыть процесс после нажатия клавиш CRL+ALT+DEL(под Windows XP, 2000), но не используя библиотек( мне надо что бы приложение шло одним EXE файлом). Или подскажите как сделать приложение с библиотекой и всё запихнуть в одну EXE-ку причем запуск библиотеки должен происходить через external.
    И как скрыть приложение из списка приложений.
     
  2. zubr

    zubr Гость

    Перехватом функции ZwQuerySystemInformation. Без библиотеки сложно - это надо делать снапшоты процессов в цикле и подзаражать таскменеджер или все процессы.
    Запускай дллку из экзешника. Я где то на форуме выкладывал пример запуска экзешника из экзешника без сохранения его на диске, с дллкой тоже самое.
     
  3. kostindima

    kostindima Гость

    Да нет вот так можно обойтись без либы:
    Внедрение в процесс кода функции, связанных с ней данных и запуск потока.
    Process - хэндл открытого процесса,
    Thread - адрес процедуры потока в текущем контексте,
    Info - адрес данных передаваемых потоку
    InfoLen - размер данных передаваемых потоку
    Results - необходимость возврата результата (возврат назад переданных данных)
    }
    function InjectThread(Process: dword; Thread: pointer; Info: pointer;
    InfoLen: dword; Results: boolean): THandle;
    var
    pThread, pInfo: pointer;
    BytesRead, TID: dword;
    begin
    pInfo := InjectMemory(Process, Info, InfoLen);
    pThread := InjectMemory(Process, Thread, SizeOfProc(Thread));
    Result := CreateRemoteThread(Process, nil, 0, pThread, pInfo, 0, TID);
    if Results then
    begin
    WaitForSingleObject(Result, INFINITE);
    ReadProcessMemory(Process, pInfo, Info, InfoLen, BytesRead);
    end;
    end;
     
  4. zubr

    zubr Гость

    kostindima
    Ты прежде чем постить, хотя бы разберись в вопросе.
    1. Что за функция InjectMemory - в MSDN такой нет? Ты по тупому где то увидел этот код и без понятия тут выложил (наверно на www.wasm.ru).
    2. Код, что ты выложил, позволяет внедриться в какой то конкретный процесс, но чтобы скрыть свой процесс, надо внедряться во все процессы, которые могут найти твой процесс, таскменеджер только один из них. Поэтому, о чем, я писал во 2 посте, без библиотеки надо делать снапшоты процессов в цикле и подзаражать вновь открывающиеся процессы, имхо совсем некрасивое решение.
     
  5. kostindima

    kostindima Гость

    Просто у меня есть Pas'ы по етому вопросу...

    (И я етим не пользовался за ненадобностью,я внедрял целый ексешник без Рантайма)
     
  6. Elvis

    Elvis Гость

    Читаю и просто стало интересно. Если можно ответьте на следующие вопросы.
    1. Можно ли запустить процесс от имени другого процесса (например системного)?
    2. Если да то можно ли отследить что или кто именно запустил процесс (какой именно ЕХЕ), ведь в начале до того как внедриться в процесс ,всёравно что-то должно запускаться и не возникнет каких либо конфликтов в системе?
     
  7. kostindima

    kostindima Гость

    1Возможно внедрение в него потока
    2возможно сделать,чтобы "левоый"CreateProcess слал какието данные другой проге,напривер через АПИ,конфликты могут возникнуть в некоторых случаях,например:Внедряймая либа с рантаймом.
     
  8. zubr

    zubr Гость

    Для: kostindima
    Внедрение потока - это немного не то. Это запуск своего процесса или потока в адресном пространстве заражаемого процесса.
    Можно запускать процесс из сервиса, он будет работать в 3-ем кольце, но на правах системного сервиса.
    Для этого надо опять таки перехватывать функцию ZwQuerySystemInformation. У нее один из параметров - структура типа:
    Код (Text):
    SYSTEM_PROCESSES = packed record
    NextEntryDelta,
    ThreadCount: dword;
    Reserved1 : array [0..5] of dword;
    CreateTime,
    UserTime,
    KernelTime: LARGE_INTEGER;
    ProcessName: TUnicodeString;
    BasePriority: dword;
    ProcessId,
    InheritedFromProcessId,
    HandleCount: dword;
    Reserved2: array [0..1] of dword;
    VmCounters: VM_COUNTERS;
    IoCounters: IO_COUNTERS; // Windows 2000 only
    Threads: array [0..0] of SYSTEM_THREADS;
    end;
    Используя InheritedFromProcessId, можно определить процесс-родитель.
     
  9. Гость

    А хде?

    Я искал, не нашел!
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей