Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Защита от отладки .NET приложения


Автор: nildar 3.10.2008, 20:28
Проверить производится ли отладка или слежение за .NET приложением во время работы 
(просмотор выделяемых объектов, дерево вызовов и т.д.) можно с помощью следующего кода:


Код

[System.Runtime.InteropServices.DllImport("Kernel32.dll")] 
public static extern uint IsDebuggerPresent(); 

bool IsDebuging() 
{ 
foreach (System.Diagnostics.ProcessModule mod in System.Diagnostics.Process.GetCurrentProcess().Modules) 
{ 
if (mod.ModuleName.ToLower() == "diasymreader.dll" 
|| mod.ModuleName.ToLower() == "vs7jit.exe" 
|| mod.ModuleName.ToLower() == "mcee.dll" 
|| mod.ModuleName.ToLower() == "jsee.dll" 
|| mod.ModuleName.ToLower() == "cpde.dll" 
|| mod.ModuleName.ToLower() == "csm.dll" 
|| mod.ModuleName.ToLower() == "profilercallback.dll" 
) 
return true; 
} 

if (IsDebuggerPresent() != 0) 
return true; 

return false; 
}



1. WinAPI функция IsDebuggerPresent отпеределяет запуск в режиме простой отладки.
2. Функция IsDebuging проверяет список загруженных модулей и соответственно по наличию 
некоторых загруженных модулей можно говорить о том что кто то изучает код.
К примеру "diasymreader.dll" — стандартный модуль для подключания к .NET приложению 
с предоставлением доступа к внутренностям приложения.

Данный метод позволяет сократить число возможных путей для взлома,
по для того чтобы действительно сильно защитить
необходим комплексный подход.

Например можно использовать обускатор Inquartos Obfuscator (http://www.inquartos.ru/products/iob/)
используя его можно переименовать все классы, методы и т.д. в бессмысленные символы
+ защитить сборки от дизасемблирования
+ зашифровать внешние dll сборки (по алгоритму AES)
+ поместить исполнимую сборку (exe) в win32 оболочку (в зашифрованном виде) которая в добавок защищена от отладки win32 отладчиками

наглядное описание с примерами можно посмотреть тут http://www.inquartos.ru/products/iob/


Обсуждение обускатора:
http://forum.inquartos.ru/viewforum.php?f=2

Автор: PashaPash 4.10.2008, 13:08
nildar, http://blogs.msdn.com/debuggingtoolbox/archive/2007/05/23/windbg-script-disabling-isdebuggerpresent.aspx

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)