Ошибка при вызове TerminateProcess в C#

#c# #api #process #hook

#c# #API #процесс #сбой

Вопрос:

Я обнаружил, что некоторые программы могут подключать API TerminateProcess таким образом, что вы фактически не можете использовать какой-либо фрагмент кода, вызывающий API. Каким другим способом можно остановить такой процесс с помощью C #? Что-то похожее на advanced process manipulator.

Ответ №1:

Вы можете просто обойти перехват. Вы знаете, получите адрес загрузки библиотеки dll, найдите функцию в таблице экспорта и вызовите ее напрямую.

В качестве альтернативы вы могли бы написать драйвер устройства, который удаляет процесс из списка процессов операционной системы. Это предотвратит его выполнение по расписанию.

На более серьезной ноте рассмотрим тот факт, что .NET не очень подходит для разработки антивирусного программного обеспечения. Вам пришлось бы переходить на более низкие уровни программного обеспечения так часто, что я не думаю.NET был бы полезен. Он мог бы служить интерфейсом для AV-ядра, но это все, для чего я бы его использовал.

Комментарии:

1. Мне действительно нравится этот ответ, на месте.

2. Спасибо 🙂 На самом деле это не приходило мне в голову, я все еще далек от встроенного программирования api, я знаю о пределах .NET, но на данный момент я просто пытаюсь растянуть его до предела.