1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программирован. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление
  2. Чат codeby в telegram перезагрузка. Обсуждаем вопросы информационной безопасности и методы защиты информации, программирование. Задавайте свои вопросы и комментируйте чужие. Подробнее ...

    Скрыть объявление

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

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

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

    MegaDiablo Гость

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

    zubr Гость

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

    kostindima Гость

    Репутация:
    0
    Да нет вот так можно обойтись без либы:
    Внедрение в процесс кода функции, связанных с ней данных и запуск потока.
    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 Гость

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

    kostindima Гость

    Репутация:
    0
    Просто у меня есть Pas'ы по етому вопросу...

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

    Elvis Гость

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

    kostindima Гость

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

    zubr Гость

    Репутация:
    0
    Для: kostindima
    Внедрение потока - это немного не то. Это запуск своего процесса или потока в адресном пространстве заражаемого процесса.
    Можно запускать процесс из сервиса, он будет работать в 3-ем кольце, но на правах системного сервиса.
    Для этого надо опять таки перехватывать функцию ZwQuerySystemInformation. У нее один из параметров - структура типа:
    Код:
    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. Гость

    Репутация:
    0
    А хде?

    Я искал, не нашел!
     
  10. zubr

    zubr Гость

    Репутация:
    0
Загрузка...
Статус темы:
Закрыта.

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