2009-09-19 3 views
7

Я знаю, что WinAPI имеет встроенные функции взлома.C++ и защита памяти процесса

Я даже использовал их в C# с PInvoke ... Для того, чтобы взломать Сапер ... Это было просто ... Так что ...

Как я мог защитить мое приложение от редактирования памяти процесса, запретить DLL инъекционного и другие способы взлома. КАК?!

Надежда WinAPI есть что-то вроде пустого DontTouchMeOrIWillTerminateYou(bool protect) ...

+2

Формулировка этого вопроса может быть лучше, но сам вопрос стоит спросить. +1 –

+0

related: http://stackoverflow.com/questions/869320/how-would-i-go-about-prevent-dll-injection/869466 –

+0

Формулировка прекрасна !!! +1 для этого и для хорошего вопроса! – Narek

ответ

9

Контроль доступа в Windows, на основе каждого объекта. Если вы хотите защитить объект процесса, вам необходимо установить ACL объекта процесса либо при создании процесса (через lpProcessAttributes of CreateProcess), либо позже (через SetKernelObjectSecurity). Если вы добавите запись «deny all» в ACL, попытки открыть процесс злоумышленником потерпят неудачу.

Конечно, владелец процесса (и, следовательно, любой вредоносный код, выполняемый пользователем) может изменить ACL на то, что он был - вредоносный код может быть не готов к этому. Чтобы эффективно предотвращать атаки из пользовательского пространства, вам нужно запустить этот процесс как неинтерактивный пользователь (например, как LocalSystem).

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

+0

1. Любой способ обнаружения приложения запуска? 2. Могу ли я обнаружить, что attact и отключить атакующего (мгновенный сбой ПК или что-то в этом роде) – user175908

4

Взлом? Нет. Это называется отладки (по большей части)

И короткий ответ на ваш вопрос: «Нет, вы не можете этого сделать». Я слышал, что в Vista, а затем есть некоторые процессы ОС, которые вы не можете отлаживать (процессы DRM и подобные), но я не уверен, что вы можете заставить ваши процессы работать именно так.

Реальный вопрос, почему вы хотите это сделать, и разве у вас нет более важных вещей, о которых можно беспокоиться (скажем, производительности и удобства использования, не говоря уже о правильности вашего программного обеспечения)?

+0

Мне нужна производительность и безопасность. – user175908

1

О редактировании памяти, тривиальный способ обнаружить это будет держать контрольную сумму для некоторых ваших данных.

+0

Значения всегда меняются ... – user175908

0

Не развертывайте и не запускайте процесс на машине, управляемой конечным пользователем: вместо этого запустите процесс на своей собственной машине и позвольте конечным пользователям обмениваться данными с вашим процессом через Интернет.

+0

Можете ли вы назвать LAG ??? – user175908

Смежные вопросы