Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Форум .::NoWa.cc::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование

Уважаемые пользователи nowa.cc. Мы работаем для вас более 20 лет и сейчас вынуждены просить о финансовой помощи по оплате за сервер.
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: Z021474945171 Webmoney WME: E159284508897 Webmoney WMUSDT: T206853643180
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!

Ответ
 
Опции темы Опции просмотра Language
Старый 01.02.2008, 20:18   #1
Пользователь
 
Пол:Мужской
Регистрация: 30.08.2006
Сообщений: 67
Репутация: 45
По умолчанию Помогите перевести написанное на C# в C++

Работая над программой в 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; }
        }
    }
}
В моем примере SID еще и шифруется MD5 методом. Помогите изобразить dll`ку на C++.
sercool вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама:


Старый 01.02.2008, 22:09   #2
sankyou
Неактивный пользователь
 
Пол:Мужской
Регистрация: 24.12.2007
Адрес: Харьков
Сообщений: 42
Репутация: 37
По умолчанию Ответ: Помогите перевести написанное на C# в C++

Точно так же "можно разобрать Reflector`ом" и обнаружить в коде вызов дллки и заменить ветвление с проверкой.
Лучше использовать подписывание кода
Или, если уж хочется максимально обезопасить код, то можно важный исполняемый модуль зашифровать с помощью ключа, формируемого из хэша SID, и во время выполнения основного модуля пытаться расшифровать этот вспомогательный модуль и скомпилировать его на лету с помощью механизма emit если хэш SID, использованный для дешифровки был неверный, то код не скомпилируется и программа не будет функционировать.
Для взлома такой защиты можно модифицировать основной код так, чтобы он после дешифровки кода дампил его на диск, поэтому нужно еще защитить и основной код. Для этого расшифрованный код перед тем, как продолжить работу по расшифровке остальной части должен проверить хэш основного модуля (он не зависит от хэша зашифрованных модулей).
В этом случае взлом можно осуществить только модифицируя память процесса внешним отладчиком во время выполнения, а от этого уже никакая защита не поможет.

Последний раз редактировалось sankyou; 01.02.2008 в 22:39..
sankyou вне форума
 
Ответить с цитированием Вверх
Старый 01.02.2008, 23:05   #3
sercool
Пользователь
 
Пол:Мужской
Регистрация: 30.08.2006
Сообщений: 67
Репутация: 45
По умолчанию Ответ: Помогите перевести написанное на C# в C++

А можешь привести пример или место где можно подробно почитать про шифрование и компиляцию находу?
sercool вне форума
 
Ответить с цитированием Вверх
Старый 02.02.2008, 01:49   #4
sankyou
Неактивный пользователь
 
Пол:Мужской
Регистрация: 24.12.2007
Адрес: Харьков
Сообщений: 42
Репутация: 37
По умолчанию Ответ: Помогите перевести написанное на C# в C++

Сейчас подумал, что можно обойтись без компиляции на лету, если сохранять в зашифрованном виде не код, а только объект (использовать сериализацию).

По поводу примера постараюсь что-нибудь нарисовать.

По теории и практике защиты программ есть вот что:

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.. Причина: скрываем линки
sankyou вне форума
 
Ответить с цитированием Вверх
Старый 03.02.2008, 23:32   #5
sercool
Пользователь
 
Пол:Мужской
Регистрация: 30.08.2006
Сообщений: 67
Репутация: 45
По умолчанию Ответ: Помогите перевести написанное на C# в C++

И все же первоначальный вопрос необходимо решить, чтобы спрятать инфу откуда я беру хеш для шифрования/дешифрования.
sercool вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите перевести! 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

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 03:32. Часовой пояс GMT +3.


Copyright ©2004 - 2025 NoWa.cc

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.04487 секунды с 11 запросами