Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2012, 03:11   #1
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию dll в память и запустить =)

Читал статью про защиту ПО, там говорилось о шифровании проги.
т.е. сам ехе-шник зашифрован, при запуске расшифровывается загрузчик,
который кусками расшифровывает ехе, кладет эти куски в память и запускает их.

А можно по аналогии то же самое сделать с dll ?
ну разве что не кусками, а целиком:
например, берем кусок "мусора" (наша зашифрованная dll-ка),
расшифровываем его сразу в память и запускаем.
т.е. так, чтобы на харде не вялялось файлика library.dll

Как такое сделать?
xrob вне форума Ответить с цитированием
Старый 16.03.2012, 14:09   #2
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Зачем? Чтобы легче взломать было?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 16.03.2012, 15:17   #3
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

о, вот как?
вообще-то да, вы угадали...
пытаюсь защищаться )

dll-ка должна быть полюбому - это не ради защиты,
а часть структуры программы - заменяемый модуль, если угодно.

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

вот и думаю как защитить библиотеку от несанкционированного использования.
Родил мысль, которую описал в первом посте...
но вы своими комментариями меня озадачили
не могли бы вы пояснить, каким образом то что я описал упрощает взлом?
xrob вне форума Ответить с цитированием
Старый 16.03.2012, 15:28   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
в модуле описаны функции, которыми я бы хотел чтоб пользовалась
только моя прога, а не все подряд, кто загрузит библиотеку.

вот и думаю как защитить библиотеку от несанкционированного использования.
никому не рассказывать что она умеет делать.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 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
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

Хаха, Человек_Борща, все именно так как вы сказали )
Я читал статью про защиту ПО - 20 проверок за 20 км от ввода пароля и т.д.
Все это сделал, за прогу более-менее спокоен, но вот возникла необходимость в dll,
а это уязвимость...
поскольку тупо берешь и юзаешь ее...

я правильно понял, что можно узнать заголовки ЛЮБОЙ библиотеки?
xrob вне форума Ответить с цитированием
Старый 16.03.2012, 16:07   #7
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
не могли бы вы пояснить, каким образом то что я описал упрощает взлом?
Ну, смотри сам:
1. Есть программа, которая распаковывает код на лету и выполняет его по мере необходимости.
2. Есть программа, которая распаковывает код на лету и внедряет его в процесс как DLL.

Ну. И какою прогу проще анализировать? Конечно же вторую - потому что весь защищаеным код удобно собран в одном месте, да ещё и имеет оглавление! (список экспорта). Рай да и только.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 16.03.2012, 16:08   #8
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
в модуле описаны функции, которыми я бы хотел чтоб пользовалась
только моя прога, а не все подряд, кто загрузит библиотеку.
Дохлый номер, ИМХО.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 16.03.2012, 16:15   #9
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
в модуле описаны функции, которыми я бы хотел чтоб пользовалась
только моя прога, а не все подряд, кто загрузит библиотеку.
В чём вообще смысл этого действия? Если твоя DLL не предназначена для других программ - просто не делай эту DLL, всего делов-то.

Если же под "моя прога" имеется в виду несколько приложений - то таки да, надо делать DLL.

Мне видится так: передавать в DLL ключ. Кто ключ передал - тот "наш". Кто его не знает - тот "не наш".

Чтобы нельзя было просто утащить ключ - он должен быть завязан на вызывающий exe. Скажем, зависеть от контрольной суммы, размера или цифровой подписи.

Тогда уже нельзя просто загрузить DLL и вызвать функцию, подставив значение от твоей программы. Нужно будет уже ломать.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 16.03.2012, 16:16   #10
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

Вы имеете в виду, что сломать прогу, которая пользуется dll-ками
проще, чем прогу, которая не пользуется?

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

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

это как по-вашему?
сложнее, или все тот же рай?

а, ну так ключик из проги в dll - это само собой =)
только со всеми теми ужосами, который описал человек борща,
можно момент передачи этого ключика спокойно отловить
и потом точно так же передавать этот ключик из других прог...

Последний раз редактировалось xrob; 16.03.2012 в 16:19.
xrob вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



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