Перехват\подмена процессов WinAPI

Discussion in 'Песочница' started by Nastar, 1 Apr 2018.

  1. Nastar

    Nastar Member

    Joined:
    9 May 2015
    Messages:
    68
    Likes Received:
    19
    Reputations:
    0
    Ребят, кто силен?
    Мне нужно запустить программу на моем компе чтобы она не отображалась в списке процессов.

    Читал что можно сделать "перехват и подмену", но на этом инфа закончилась)

    Кто вкурсе этого метода, или может знает какой-то другой, подскажите плз!
     
  2. SpiderFox

    SpiderFox New Member

    Joined:
    10 Jun 2018
    Messages:
    3
    Likes Received:
    1
    Reputations:
    0
    В c# можно попробовать сделать.
    telegram: @grallator

    Интересная задача, имхо.
    Я работал с процессами и WinAPI, но такого ещё не делал.
    Пиши, если что ;)
     
  3. st55

    st55 Level 8

    Joined:
    20 Apr 2016
    Messages:
    195
    Likes Received:
    341
    Reputations:
    47
    Не особо шарю в этом вопросе, но можно заинжектить твой процесс в легитимный и тогда де-факто будет там отсутствовать. Любят инжектить обычно в explorer.exe и svhost.exe.
     
    SpiderFox likes this.
  4. SpiderFox

    SpiderFox New Member

    Joined:
    10 Jun 2018
    Messages:
    3
    Likes Received:
    1
    Reputations:
    0
    Блин, появится время, обязательно попробую. :rolleyes:
    Сиб)
     
    Nastar likes this.
  5. terszki

    terszki New Member

    Joined:
    1 Aug 2017
    Messages:
    9
    Likes Received:
    2
    Reputations:
    0
    ТС - плохо искал, инфы по этому поводу полно.
    В таком случае вариантов несколько, по порядку.
    1. Можно заинжектить код/длл в диспетчер задач и перехватить функцию, получающую список процессов - хз куда уходит вызов, на win8.1 перехват Process32Next, NtQuerySystemInformation не помог.
    2. Можно использовать технику runpe и запуститься в другом процессе. В гугле полно инфы, но если требуется - скину пример.
    3. Процесс можно сделать неубиваемым для процессов с меньшими правами:
    Code:
    bool ProtectProcess()
    {
        SECURITY_ATTRIBUTES sa;
        sa.nLength = sizeof(SECURITY_ATTRIBUTES);
        sa.bInheritHandle = false;
        if (ConvertStringSecurityDescriptorToSecurityDescriptor("D:P", 1, &sa.lpSecurityDescriptor, NULL))
        {
            if (SetKernelObjectSecurity(GetCurrentProcess(), DACL_SECURITY_INFORMATION, sa.lpSecurityDescriptor)) return true;
        }
        return false;
    }
    Помимо этих вариантов, есть и другие, например, инжект длл куда-нибудь (длл выполняет нужные действия)
     
    SpiderFox likes this.