purebasic.info

PureBasic forum
Текущее время: Вт июл 25, 2017 9:42 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 133 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 05, 2013 6:04 pm 
Не в сети
ассистент

Зарегистрирован: Вт дек 18, 2012 8:45 pm
Сообщений: 15
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Насколько я знаю, даже (некоторые?) игрушки с античитами под x64 не используют драйвера.
Так что заявление SergeyA "разобраться" умиляет.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 05, 2013 6:28 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 04, 2011 7:38 am
Сообщений: 728
Откуда: Россия
Благодарил (а): 29 раз.
Поблагодарили: 9 раз.
Пункты репутации: 0
Fobos

На сколько я знаю, антивирусы одинаково работают как на x86 так и на x64 и всё у них работает, не так ли?!

_________________
https://www.instagram.com/custom.software/


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 05, 2013 6:30 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 10961
Благодарил (а): 4 раз.
Поблагодарили: 353 раз.
Может не используют не потому что функции перехватить нельзя, а потому что дрова нужно подписывать цифровой подписью, а это платно.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс июл 07, 2013 4:07 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 10961
Благодарил (а): 4 раз.
Поблагодарили: 353 раз.
Код получения адресов функций syscalls. http://www.purebasic.fr/english/viewtop ... =5&t=55342

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 11, 2013 9:17 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 10961
Благодарил (а): 4 раз.
Поблагодарили: 353 раз.
Интересен тот факт, что утилита ProcessExplorer от Марка Русиновича, жестко обломалась при работе с прогой, защищаемой этим драйвером. Утилита не то что не могла завершить процесс - она практически никакую инфу не могла получить о нем. :shock:
Я был лучшего мнения о ProcessExplorer. :?

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 11, 2013 9:23 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
Попробуй Process Hacker - кильнет 99%

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 11, 2013 10:03 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 10961
Благодарил (а): 4 раз.
Поблагодарили: 353 раз.
Этот из ядра завершает процесс и там механизм мудреный.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перевод кода драйвера с C++ на PB
СообщениеДобавлено: Вс ноя 03, 2013 5:35 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 10961
Благодарил (а): 4 раз.
Поблагодарили: 353 раз.
Есть еще один способ запретить завершать процесс - скрыть его в диспетчере задач.
Собственно в драйвере это делает код.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Procedure HideProcess()
  Protected *CurrentProcess.EPROCESS
  Protected *ProcessAPL.LIST_ENTRY
  Protected OldIRQL.i
 
  Protected ActiveProcessLinkOffset = $88
 
  OldIRQL = KeRaiseIrqlToDpcLevel() ; Повышает приоритет.
 
  *CurrentProcess = PsGetCurrentProcess() ; Инфа процесса, вызвавшего драйвер.
  If *CurrentProcess
    *ProcessAPL = *CurrentProcess + ActiveProcessLinkOffset
    *ProcessAPL\Flink\Blink = *ProcessAPL\Blink
    *ProcessAPL\Blink\Flink = *ProcessAPL\Flink
  EndIf
 
  KeLowerIrql(OldIRQL) ; Возвращает прежний приоритет.
 
EndProcedure

Однократный вызов процедуры в контексте процесса, который нужно скрыть, скрывает его не только от диспетчера задач, но и более продвинутых прог, таких как AnVir Task Manager.
Но есть один параметр, зависимый от системы - ActiveProcessLinkOffset. Значение $88 для WinXP.


Вложения:
NoKilling.zip [9.97 KiB]
Скачиваний: 143

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перевод кода драйвера с C++ на PB
СообщениеДобавлено: Вс ноя 03, 2013 11:12 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вт сен 11, 2012 11:48 am
Сообщений: 35
Благодарил (а): 2 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Пётр писал(а):
Есть еще один способ запретить завершать процесс - скрыть его в диспетчере задач.
...ProcessExplorer от Марка Русиновича...
Для начала узнайте, а кто такой этот Марк Руссинович?
Руссинович несколько лет назад официально перешёл работать в Майкрософт, разве после этого можно ему доверять?
Разве кто-нибудь когда-либо был доволен прогами от Майкрософт?

Ну, Руссинович не видит этого процесса, а GMER прекрасно видит и убивает этот процесс, вместе с окном.
И другие проги тоже самое, и видят и убивают этоn скрытый процесс, например, Rootkit Unlocker, также, и видит, и легко убивает процесс, более того, обе эти проги сразу сигнализируют о такой нездоровой ситуации..

То есть, тут вопрос, кто чем пользуется, то есть, зависит от прямоты рук.


Вложения:
Uhidden.rar [360.65 KiB]
Скачиваний: 138
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перевод кода драйвера с C++ на PB
СообщениеДобавлено: Вс июл 02, 2017 10:35 am 
Не в сети
ассистент
Аватар пользователя

Зарегистрирован: Сб сен 05, 2015 11:30 am
Сообщений: 24
Благодарил (а): 2 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Пётр писал(а):
Есть еще один способ запретить завершать процесс - скрыть его в диспетчере задач.
Пётр писал(а):
Однократный вызов процедуры в контексте процесса, который нужно скрыть, скрывает его не только от диспетчера задач, но и более продвинутых прог, таких как AnVir Task Manager.
Но есть один параметр, зависимый от системы - ActiveProcessLinkOffset. Значение $88 для WinXP.

У меня этот код давал BSOD после 5-6 запуска. Плюс к тому, не знаем значение для 7-ки и выше. Поэтому я своял свой. Долго сидел. Перехватывает NtQuerySystemInformation+ оставил перехваты NtOpenProcess и NtTerminateProcess. Прошу проверить. Сам проверил на XP и 7, и вроде работает.


Вложения:
ЗащитаПроцесса.zip [22.29 KiB]
Скачиваний: 3
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перевод кода драйвера с C++ на PB
СообщениеДобавлено: Вс июл 02, 2017 11:19 am 
Не в сети
ассистент
Аватар пользователя

Зарегистрирован: Сб сен 05, 2015 11:30 am
Сообщений: 24
Благодарил (а): 2 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
И кстати ребят. Помните я говорил, что в OpenProcess нужно защищать не только PID процесса, но и область выше до 4? Я смог написать программку из Usermode, которая может завершить наш "неубиваемый" процесс. Советую проверять на виртуальной машине. Вот код завершалки
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
CompilerIf #PB_Compiler_Unicode
  MessageRequester("","Выключите unicode и запустите снова.")
  End
CompilerEndIf
ep=GetProcAddress_(GetModuleHandle_(@"kernel32.dll"), @"ExitProcess")
 
win=FindWindow_(0, "ButtonGadgets")
If win=0
  MessageRequester("","Test.exe не запущен или окно не найдено.")
  End
EndIf
 
GetWindowThreadProcessId_ (win, @PID)
 
h=OpenProcess_(#PROCESS_ALL_ACCESS, 0, PID+1)
If h
  a=VirtualAllocEx_(h, 0, 16, #MEM_COMMIT, #PAGE_EXECUTE_READWRITE)
  b=AllocateMemory(16)
  PokeQ(b,$c3000003e768006a)
  PokeL(b+3, ep)
  WriteProcessMemory_(h, a, b, 16, @out)
  CreateRemoteThread_(h, #Null, 0, a, #Null, 0, @ThreadId)
EndIf
 



Поэтому, в самом нашем драйвере, в NewNtOpenProcess, нужно заменить
Код:
1
If cPID>0 And cPID=ProcessId

на
Код:
1
If cPID>0 And (cPID+3>=ProcessId And cPID<=ProcessId)

Потому что в Windows есть такая фича, если Id процесса = 100, мы можем его открыть в OpenProcess с Pid 101,102,103. Их тоже нужно блокировать. Пример продемострирован в примере убивалки.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перевод кода драйвера с C++ на PB
СообщениеДобавлено: Пн июл 03, 2017 11:47 am 
Не в сети
ассистент
Аватар пользователя

Зарегистрирован: Сб сен 05, 2015 11:30 am
Сообщений: 24
Благодарил (а): 2 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Прошлый код был немного с ошибками, точнее, недоработками, и не всегда скрывал процесс.
Я профиксил и еще добавил скрытие папок\файлов, имена которых нужно указать в исходнике драйвера.
По умолчанию в примере скрывается папка NtOpenProcess и для примера папка Program Files, их можно поменять в конце исходника драйвера.
Я проверил работу на XP и 7-ке. Проверьте кто-нибудь еще и на других, у кого есть.

Вопрос к админам, если я буду дальше развивать "защищенный процесс", стоит ли выносить в отдельную тему, или можно продолжать здесь?


Вложения:
Защищенный процесс.zip [24.02 KiB]
Скачиваний: 4
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перевод кода драйвера с C++ на PB
СообщениеДобавлено: Сб июл 08, 2017 12:57 pm 
Не в сети
ассистент
Аватар пользователя

Зарегистрирован: Сб сен 05, 2015 11:30 am
Сообщений: 24
Благодарил (а): 2 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Добавляю в драйвер новое. Теперь добавил защиту потоков. Перехватываю NtOpenThread. Если пользователь методом перебора найдет id потока, все равно не сможет ничего завершить. Прошу проверить драйвер на других ОС, у меня на XP работает. Особенно интересно, есть ли кто-нибудь с Win 8? Кто-нибудь пользуется 8/10?
Правда драйвер будет работать только на x86. Еще на 64 версию крутить надо.


Вложения:
Защищенный процесс.zip [86.8 KiB]
Скачиваний: 2
Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 133 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB