|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.03.2012, 03:11 | #1 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
dll в память и запустить =)
Читал статью про защиту ПО, там говорилось о шифровании проги.
т.е. сам ехе-шник зашифрован, при запуске расшифровывается загрузчик, который кусками расшифровывает ехе, кладет эти куски в память и запускает их. А можно по аналогии то же самое сделать с dll ? ну разве что не кусками, а целиком: например, берем кусок "мусора" (наша зашифрованная dll-ка), расшифровываем его сразу в память и запускаем. т.е. так, чтобы на харде не вялялось файлика library.dll Как такое сделать? |
16.03.2012, 14:09 | #2 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Зачем? Чтобы легче взломать было?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
16.03.2012, 15:17 | #3 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
о, вот как?
вообще-то да, вы угадали... пытаюсь защищаться ) dll-ка должна быть полюбому - это не ради защиты, а часть структуры программы - заменяемый модуль, если угодно. в модуле описаны функции, которыми я бы хотел чтоб пользовалась только моя прога, а не все подряд, кто загрузит библиотеку. вот и думаю как защитить библиотеку от несанкционированного использования. Родил мысль, которую описал в первом посте... но вы своими комментариями меня озадачили не могли бы вы пояснить, каким образом то что я описал упрощает взлом? |
16.03.2012, 15:28 | #4 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
программа — запись алгоритма на языке понятном транслятору
|
|
16.03.2012, 15:28 | #5 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Ваша мысль верная, но:
В конечном итоге, без доп. контроля, exe и его исп. файлы оказываются готовыми к употреблению прямо из памяти. PE дампер может вытянуть образ DLL или PE и собрать его в рабочий вид на харде. Далее тем же дампом вытянуть список экспорта DLL, и пара часиков изучения exe в IDA того, как он вызывает методы dll. Что-то должно постоянно защищать ваши файлы в памяти, и иметь не хилую защиту самого себя. Выход: Не скупиться и купить софт, где за вас уже обо всем подумали(VMProtect, Enigma protector). Самостоятель что-то вроде вир. машины вы врятли сами напишите. А вообще, напишите программу так, чтобы её было проще купить чем сломать. Можно проверочных функций(именно вызов проверчного кода, а не вызов контрольной функции из одного и того же места) нафтыкать, и с условиями и т.д. и т.п. Это ломается за пять минут, НО стоит ли оно того, когда программа хороша и часто обновляется. Другими словами - задолбаешся ломать. Последний раз редактировалось Человек_Борща; 16.03.2012 в 15:32. |
16.03.2012, 16:05 | #6 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
Хаха, Человек_Борща, все именно так как вы сказали )
Я читал статью про защиту ПО - 20 проверок за 20 км от ввода пароля и т.д. Все это сделал, за прогу более-менее спокоен, но вот возникла необходимость в dll, а это уязвимость... поскольку тупо берешь и юзаешь ее... я правильно понял, что можно узнать заголовки ЛЮБОЙ библиотеки? |
16.03.2012, 16:07 | #7 | |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Цитата:
1. Есть программа, которая распаковывает код на лету и выполняет его по мере необходимости. 2. Есть программа, которая распаковывает код на лету и внедряет его в процесс как DLL. Ну. И какою прогу проще анализировать? Конечно же вторую - потому что весь защищаеным код удобно собран в одном месте, да ещё и имеет оглавление! (список экспорта). Рай да и только.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|
16.03.2012, 16:08 | #8 | |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Цитата:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|
16.03.2012, 16:15 | #9 | |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Цитата:
Если же под "моя прога" имеется в виду несколько приложений - то таки да, надо делать DLL. Мне видится так: передавать в DLL ключ. Кто ключ передал - тот "наш". Кто его не знает - тот "не наш". Чтобы нельзя было просто утащить ключ - он должен быть завязан на вызывающий exe. Скажем, зависеть от контрольной суммы, размера или цифровой подписи. Тогда уже нельзя просто загрузить DLL и вызвать функцию, подставив значение от твоей программы. Нужно будет уже ломать.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|
16.03.2012, 16:16 | #10 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
Вы имеете в виду, что сломать прогу, которая пользуется dll-ками
проще, чем прогу, которая не пользуется? если так, то здесь я с вами согласен, только у меня необходимость использовать именно длл - как заменяемый модуль... кстати насчет списка экспорта... у меня там одна функция, которая возвращает указатель на хрен пойми чего - класс, описанный в юните, который использует библиотека. в проге описан такой же класс, точнее интерфейс этого класса. это как по-вашему? сложнее, или все тот же рай? а, ну так ключик из проги в dll - это само собой =) только со всеми теми ужосами, который описал человек борща, можно момент передачи этого ключика спокойно отловить и потом точно так же передавать этот ключик из других прог... Последний раз редактировалось xrob; 16.03.2012 в 16:19. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Запустить чужую программу со своей dll библиотекой или внедрить в уже существующий процесс | Человек_Борща | Общие вопросы Delphi | 5 | 23.01.2011 21:20 |
Ошибка при выхове функций Bass.dll из другой DLL | SalasAndriy | Общие вопросы Delphi | 7 | 21.10.2009 23:36 |
Запуск Load.dll (бывшая Load.exe) в дереве проц-ов, Как запустить прогой на C# .dll-ку | kapustin | Общие вопросы .NET | 10 | 23.09.2009 22:20 |