[С#] Максимально не убиваемое приложение

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by NightShock, 10 Jan 2011.

  1. NightShock

    NightShock New Member

    Joined:
    9 Jan 2011
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Нужно максимально защитить приложения от пользователя.
    Реализовал непотопляемый режим (запускаются 2 процесса и следят друг за другом), но такой вариант оказался не очень хорошим, т.к. легко можно завершить древо процессов, да и при запуске второго процесса иногда вылезают таблички о не подписанном приложении (на вин7).
    Надо какое-нибуть ноу хау с хуками, желательно пример. Естественно на решетке :D
     
  2. AlexTheC0d3r

    AlexTheC0d3r Elder - Старейшина

    Joined:
    25 Jul 2008
    Messages:
    388
    Likes Received:
    179
    Reputations:
    18
    чтобы максимально защитить приложение от пользователя, просто скрой его.
     
  3. Renji

    Renji Member

    Joined:
    5 Dec 2010
    Messages:
    24
    Likes Received:
    5
    Reputations:
    0
    Можно посмотреть в сторону WinAPI. Там уже больше возможностей.
     
  4. eclipse

    eclipse Member

    Joined:
    19 Dec 2010
    Messages:
    155
    Likes Received:
    74
    Reputations:
    85
    Просто замаскируй свое приложение, чтоб он ни у кого не вызывало подозрений, а потом поставь атрибуты системный, если пользователь пытается удалить системный файл Windows 7 кричит как обкуренная, после чего уже никто не захочет удалять твою прогу))
     
  5. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Смотря какой уровень пользователя.
    Самый банальный:
    1) Приложение запускается как служба (или как угодно но от другова пользователя)
    2) А пользователь не имеет админских прав.
    Тогда он просто не может убить его так как у него не будет доступа к чужим процессам.

    Если пользователь имеет права админа, то врядли ты сможешь защитить. Как вариант - внедриться в системный/чужой процесс и оттуда контролировать работу твоего процесса. Но и опять же с помощью того же ProcessExplorer'a можно прибить такой процесс, предварительно прибив поток контролирования. Или вообще не прибивать процесс, а заморозить все потоки, тогда и прога будет весеть в процессах, но и делать ничего не будет.

    Но самый мощный способ - драйвер защищающий процесс, но увы это тоже не 100% результат, потому что антируткиты запросто прибьют такие процессы
     
  6. Catbert

    Catbert Banned

    Joined:
    29 Jun 2010
    Messages:
    80
    Likes Received:
    27
    Reputations:
    10
    На время скрыться от антируткитов можно по методу, который Cr4sh предлагал
    http://d-olex.blogspot.com/2010/12/blog-post.html
     
    1 person likes this.
  7. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Ну дык это код в ядре скрывается. Так что смысал мало от этого, темболее если прога на шарпе
     
  8. NightShock

    NightShock New Member

    Joined:
    9 Jan 2011
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Эм, а разве незя просто хуков наставить?
    http://www.xakep.ru/post/14033/
    http://www.rsdn.ru/?Forum/Info/FAQ.dotnet.hooks.aspx
    http://articles.org.ru/cfaq/index.php?qid=1321
    Мне бы реализацию на шарпе этого дела)))
    Ещё хорошо бы пример повышение привелегий, чтобы через деспечер задачь обычный незя было грохнуть)

    Насчёт скрытия\переименования и т.д. это всё не катит. Пишу по сути приложение шутку, вот задался вопросом о его неубиваемости :)
     
    #8 NightShock, 10 Jan 2011
    Last edited: 10 Jan 2011
  9. j-prof

    j-prof Banned

    Joined:
    29 Aug 2010
    Messages:
    321
    Likes Received:
    11
    Reputations:
    -4
    чота слышал про удаление пид попробуй в эту сторону капнуть
     
  10. NightShock

    NightShock New Member

    Joined:
    9 Jan 2011
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Я выложил ссылки с примерами на C++, на решетке не накапал ничего(((
     
  11. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    NightShock посмотрел примеры статей которые ты привел и говорю тебе ФОРМУЛИРУЙ ТЕМУ И ЗАДАЧУ ПРАВИЛЬНО. Потому что все знающие люди подумали что ты хочешь написать подобие руткита, стандартные хуки и язык С# не годятся для реализации руткитов.

    Конечно если тебе интересна теория вот прочитай, но все эти действия из ring3 очень сильно палятся антивирусами. К тому же с момента написания этой статьи прошло уже 7 лет => система Windows и способы ее защиты очень сильно изменились.

    А твоя задача звучит так:
    Как скрыть программу из диспетчера задач на языке c#
     
    _________________________
  12. NightShock

    NightShock New Member

    Joined:
    9 Jan 2011
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Это, по сути, один из многочисленных вариантов реализации. Варианты со свякими драйверами т.д. тоже подходят, только желательно чтобы всё было одним файлом(возможно с распаковкой) и не требовало ребутов.
     
  13. D4mp

    D4mp Banned

    Joined:
    28 Jul 2010
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    Да тут попахивает спайварками =)) А значит C# не подойдёт =)))
     
  14. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    NightShock тебе же сказали пиши системный процесс - службу. Либо тупо "невидимое" приложение, которое никакого окна не создает либо запущено окно с флагом SW_HIDE (функция ShowWindow).

    А домохозяйки и не знают что такое диспетчер задач + положи exe в системную папку и назови типа swchost.exe, explorer32.exe :)
     
    _________________________
  15. NightShock

    NightShock New Member

    Joined:
    9 Jan 2011
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Невидимое приложение не выход, про деспетчер задач знают почти все, шифраваться под что-то тоже не хорошо.

    Хотелось бы примеры кода, ведь можно одним экзешником хук поставить на "терминейт процеес", ну максимум длл извлечь из ресурсов и через неё это делать. Также есть примеры на делфи где запускается процесс который незя убить через диспетчер задач, пишет отказано в доступе.

    А вообще вот та хренька, которую хочу сделать сложно убиваемой :)
    http://ifolder.ru/21206181
    безвредно, кто не верит - подсмотрите исходник "дизасемблером" :)
     
  16. crypt0n

    crypt0n Member

    Joined:
    20 Feb 2010
    Messages:
    40
    Likes Received:
    5
    Reputations:
    0
    без драйвера никак. самый плюшевый вариант: хуки на NtOpenProcess(), NtOpenThread(). Хотя на все защищенные процессы есть одна хорошая апи PsTerminateprocess
     
  17. D4mp

    D4mp Banned

    Joined:
    28 Jul 2010
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    А если сервис с планировщиком? ) Пущай проверяет, к примеру раз в 10 минут.