Страница 1 из 8
Защита программы
Добавлено: 06 Октябрь 2011, 22:56
muskin
Всем Привет. Clarion 6.3(ABC)
Еще раз поднимаю вопрос защиты программы.
Насколько я понял, секретить файлы в Dictionary - это бесполезное занятие (открываем exe-шник в блокноте - и при желании видим все пароли на засекреченные tps-файлы)?
Вопрос от начинающего - "Как привязать мою программу к компу, как можно узнать уникальный номер процессора или BIOS-a или за какую железяку цепляться, чтобы меня не надули?"
Прочитал все темы по поиску - но реального ответа не нашел.
Заранее благодарен за ответ.
Re: Защита программы
Добавлено: 07 Октябрь 2011, 0:06
George
Я делаю так:
1) Пароль беру из переменной;
2) Упаковываю exe-шник.
Re: Защита программы
Добавлено: 07 Октябрь 2011, 10:49
Губин Игорь
Самое простое: ASProtect.
Re: Защита программы
Добавлено: 07 Октябрь 2011, 13:45
Игорь Столяров
1. Действительно пароль можно "спрятать" в переменную или сделать плохочитаемым - как описано в справке.
Только это шифрование данных и никакого отношения к защите от нелегального копирования не имеет.
2. Привязка к процессору или BIOS - вещь достаточно нестабильная, т.к. придется отслеживать и проверять
программу на всех новых процессорах и материнских платах. Получить эти данные можно через WinAPI.
Но наверно это реально, только если ты делаешь главную программу Газпрома ...
3. Самый простой способ "привязать" программу к производной от серийного номера загрузочного HDD.
Мы много лет пользовались этим способом в старых программах.
Пример функции получения производной от серийного номера HDD.
GetPCNumber PROCEDURE ! Declare Procedure
RootPathName CSTRING(4)
VolumeNameBuf CSTRING(20)
VolumeNameSize ULONG(20)
VolumeSerialNumber ULONG
MaxCompLeng ULONG
FileSysFlags ULONG
FileSysNameBuf CSTRING(20)
FileSysNameSize ULONG(20)
CODE
RootPathName = 'C:\'
If GetVolumeInformation(RootPathName,VolumeNamebuf,VolumeNameSize,VolumeSerialNumber,MaxCompLeng,FileSysFlags,FileSysNameBuf,FileSysNameSize).
If VolumeSerialNumber > 2147483647
Return(Abs(Abs(VolumeSerialNumber - 4294967295) - 137))
else
Return(Abs(VolumeSerialNumber-137))
end
дальше пользователь сообщает Вам номер - Вы ему ответный код регистрации.
При запуске программы проверяете соответсвие номера компьютера и ответного кода. Вот и все.
Re: Защита программы
Добавлено: 07 Октябрь 2011, 13:57
Губин Игорь
Нескромный вопрос: а если системный диск это НЕ диск С: ? Если диска C: вообще нет в системе?
Тогда уж надо привязываться к системному...
См. в хелпе "How to Get Active Folder Information"
Это не придирка, это констатация встречающихся случаев. Сам несколько лет работал на таком компе
Re: Защита программы
Добавлено: 07 Октябрь 2011, 14:20
AlesDales
Губин Игорь писал(а):Самое простое: ASProtect.
До версии 2.12 Aspack распаковывается автоматически программой:
“AspackDie 1.3d
--------------
This is a small unpacker for PE files (EXE, DLL, ...) which got compressed by
Aspack 2.11/2.11c/2.11d/2.12.
Have a look at the source code for more information.”
и
“OllyDbg-ский скрипт "Aspr2.XX Unpacker” распакует все остальное.
Re: Защита программы
Добавлено: 07 Октябрь 2011, 14:20
Игорь Столяров
Все правильно. Это не универсальное решение и не подойдет, например для загружаемых по сети рабочих станций.
Также будут проблемы с "клонированными" HDD (у них одинаковый серийный номер) и т.д.
Также проблемным моментом является изменении номера HDD при форматировании (что делается при переустановке Windows) или смене типа файловой системы.
Именно поэтому мы уже давно отказались от такого способа - но как учебная задача, вполне подойдет ...

Re: Защита программы
Добавлено: 07 Октябрь 2011, 14:31
AlesDales
Игорь Столяров писал(а):
При запуске программы проверяете соответсвие номера компьютера и ответного кода. Вот и все.
И действительно “все” если тело программы не зашифровать.
Re: Защита программы
Добавлено: 07 Октябрь 2011, 14:35
kreator
ИМХО привязка к жесткому диску - самая правильная. Игорь Столяров все расписал. А более универсальное решение - наверно, USB ключ. Но он обходится всякими эмуляторами.
Re: Защита программы
Добавлено: 07 Октябрь 2011, 14:38
Губин Игорь
Вот к чему и посоветовал AsProtect. Достаточно дешёвая и достаточно проверенная вещь. В комплекте с некоторыми дополнительными фишками вполне надёжна.
Re: Защита программы
Добавлено: 07 Октябрь 2011, 14:42
AlesDales
Губин Игорь писал(а):Вот к чему и посоветовал AsProtect. Достаточно дешёвая и достаточно проверенная вещь. В комплекте с некоторыми дополнительными фишками вполне надёжна.
http://qunpack.ahteam.org/?p=160
или
http://reversing.kulichki.com/files/unpack/unpack.htm
Re: Защита программы
Добавлено: 07 Октябрь 2011, 14:57
Игорь Столяров
Я позволю себе кратко выразить свое мнение об AsProtect и аналогичный EXE шифровальщиков, т.к. имею опыт их использования.
1. Рано или поздно, но стабильно, возникает проблема с тем или иным антивирусом (например после косячного обновления баз), который грохнет EXE файл как зараженный вирусом. И это правильно - принцип работы тот же самый, что и в примитивных вирусных программах.
2. Это дополнительная операция при подготовке программы к публикации.
3. Наверно главный вопрос - что защищается и стоит ли экскаватором копать детскую песочницу ...
4. Пусть и примитивная, но своя система защиты - она более управляема. Сейчас в моде ситемы ограничения работы по времени (подписка), а не привязки программы к оборудованию.
Re: Защита программы
Добавлено: 07 Октябрь 2011, 15:05
Губин Игорь
Почему-то когда я представляю AlesDales, то мне видится Рико из Пингвинов Мадагаскара с автогеном в руке возле заднего прохода Морта.
Кстати, а полиморфные секции они легко ломают?
На самом деле, я не говорю, что это абсолютно надёжная защита, но "в комплекте с некоторыми дополнительными фишками"...
По поводу ограничения работы по времени: это тоже должно быть очень правильно сделано, иначе любой идиот напишет примитивный батник для перевода часов перед запуском программы. И лучше сочетать это с иными средствами защиты.
Re: Защита программы
Добавлено: 07 Октябрь 2011, 15:14
Игорь Столяров
Губин Игорь писал(а):иначе любой идиот напишет примитивный батник для перевода часов перед запуском программы.
Немного по другому. Только идиот напишет программу, которая будет проверять ограничение защиты по часам компьютера.
Re: Защита программы
Добавлено: 07 Октябрь 2011, 15:24
AlesDales
Почему-то когда я представляю AlesDales, то мне видится Рико из Пингвинов Мадагаскара с автогеном в руке возле заднего прохода Морта.
Судя по аватарке можно предположить, как ты видишься самому себе.
Кстати, а полиморфные секции они легко ломают?
Полимофность защищает только от антивируса и от дампа. Если скрипт для отладчика позволяет программу отлаживать тогда полиморфность пофиг. Страшна только виртуализация или псевдокоды как например у Visual Basic.
По поводу ограничения работы по времени: это тоже должно быть очень правильно сделано, иначе любой идиот напишет примитивный батник для перевода часов перед запуском программы. И лучше сочетать это с иными средствами защиты.
Счетчик обычно хранят в реестре или в трудно доступных местах плоть до boot-сектора.