![]() |
|
| Правила Форума редакция от 22.06.2020 |
|
|||||||
|
|
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже. |
|
![]() |
|
|
Опции темы | Опции просмотра |
Language
|
|
|
#1
|
|
Пользователь
Пол:
Регистрация: 30.08.2006
Сообщений: 67
Репутация: 45
|
Работая над программой в C#, решил привязать на всякий случай программу к определенной винде по ее SID, чтобы никто не утащил. Но вот в чем проблема, как бы я не старался мою программу всегда можно разобрать Reflector`ом и, убрав привязку, собрать заного. Появилась идея сделать эту проверку в dll`ке написанной на другом языке, например на C++. Т.е. сделать функцию которая при удачной проверке вернет определенную строку, при неудаче вернет null, а значение этой строки будет жизненно необходимо для работы программы.
На C# это выглядит примерно так: Код:
using System.Security.Principal;
namespace Securenamespace
{
public class Secureclass
{
private string Secure()
{
string code = "";
WindowsIdentity wid = WindowsIdentity.GetCurrent();
code = wid.User.Value;
System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] bs = System.Text.Encoding.UTF8.GetBytes(code);
bs = x.ComputeHash(bs);
System.Text.StringBuilder s = new System.Text.StringBuilder();
foreach (byte b in bs)
{
s.Append(b.ToString("x2"));
}
code = s.ToString();
if (code == "...") { return "..."; } else { return null; }
}
}
}
|
|
|
|
| Реклама: |
|
|
#2
|
|
Неактивный пользователь
Пол:
Регистрация: 24.12.2007
Адрес: Харьков
Сообщений: 42
Репутация: 37
|
Точно так же "можно разобрать Reflector`ом" и обнаружить в коде вызов дллки и заменить ветвление с проверкой.
Лучше использовать подписывание кода Или, если уж хочется максимально обезопасить код, то можно важный исполняемый модуль зашифровать с помощью ключа, формируемого из хэша SID, и во время выполнения основного модуля пытаться расшифровать этот вспомогательный модуль и скомпилировать его на лету с помощью механизма emit если хэш SID, использованный для дешифровки был неверный, то код не скомпилируется и программа не будет функционировать. Для взлома такой защиты можно модифицировать основной код так, чтобы он после дешифровки кода дампил его на диск, поэтому нужно еще защитить и основной код. Для этого расшифрованный код перед тем, как продолжить работу по расшифровке остальной части должен проверить хэш основного модуля (он не зависит от хэша зашифрованных модулей). В этом случае взлом можно осуществить только модифицируя память процесса внешним отладчиком во время выполнения, а от этого уже никакая защита не поможет. Последний раз редактировалось sankyou; 01.02.2008 в 22:39.. |
|
|
|
| Сказали спасибо: |
|
|
#3
|
|
Пользователь
Пол:
Регистрация: 30.08.2006
Сообщений: 67
Репутация: 45
|
А можешь привести пример или место где можно подробно почитать про шифрование и компиляцию находу?
|
|
|
|
|
|
#4
|
|
Неактивный пользователь
Пол:
Регистрация: 24.12.2007
Адрес: Харьков
Сообщений: 42
Репутация: 37
|
Сейчас подумал, что можно обойтись без компиляции на лету, если сохранять в зашифрованном виде не код, а только объект (использовать сериализацию).
По поводу примера постараюсь что-нибудь нарисовать. По теории и практике защиты программ есть вот что: Neil Daswani, Christoph Kern, and Anita Kesavan Foundations of Security: What Every Programmer Needs to Know Apress 2007.- 319 p. A. Northrup MCAD/MCSD Self-Paced Training Kit: Implementing Security for Applications with Microsft Visual Basic .NET and Microsoft Visual C# .NET Microsoft Press, 2005.- 607 p. Казарин О.В. Теория и практика защиты программ. – 2004. – 450 с. Все три книги в одном архиве на рапиде: http://rapidshare.com/files/88441366...urity.rar.html (9*675*418 байт) rar + 3% инф. для восст. пароль: sankyou md5 хэш: 671D393D953144770F5DA5808B7E3E57 Последний раз редактировалось pluton; 02.02.2008 в 17:08.. Причина: скрываем линки |
|
|
|
| Сказали спасибо: |
|
|
#5
|
|
Пользователь
Пол:
Регистрация: 30.08.2006
Сообщений: 67
Репутация: 45
|
И все же первоначальный вопрос необходимо решить, чтобы спрятать инфу откуда я беру хеш для шифрования/дешифрования.
|
|
|
|
![]() |
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Помогите перевести! | kirillsas | Скорая помощь | 4 | 01.09.2009 12:25 |
| Помогите перевести с японского языка на русский | Quatrix | Архив | 17 | 30.01.2009 08:53 |
| Помогите перевести картинку в другой формат! | rubin7 | Архив | 10 | 07.06.2007 13:35 |
| Как перевести ram формат в waw? | Vladyslav | Архив | 5 | 18.03.2007 22:46 |
| Помогите перевести 2 страниц с Итальянского | FoxMan | Архив | 9 | 29.06.2006 22:24 |
|
|