![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Защита софта [D5, D6, D7, NT4, Win2k, WinXP]
DeadMeat © (2003-03-31 21:03:00)Дарова программеры... У меня такой вопросик, который я думаю интересовал каждого, кто хоть раз писал программы на заказ: как защитить свою софтину от копирования на другой комп..., т.е. скопировать то всегда мона, а как сделать так, чтобы она там не работала... У меня есть набор компонентов x2000..., весьма неплохой наборчик для получения списка оборудования..., так вот, там есть такой компонентик, который считывает серийный номер материнской платы (или BIOS-а, щас не помню)... используя его мона защитить свой софт, т.к. у каждого он (серийник) свой... Но проблема в том, что этот компонент работает только в вин-9х.... Итак вопрос, как узнать этот серийник другим способом (или же если есть другой способ защиты, то тоже неплохо)... Заранее благодарен.....
Shurik (2003-04-27 05:56:00) [1]Так что насчёт исходной темы, инфа об оборудовании?
DeadMeat (2003-04-21 17:33:00) [2]>Anatoly Podgoretsky
А вообще да... Виноват, приношу свои извинения, покорнейше прошу прощения,... бес попутал, затмил разум и память мою тёмный демон глупости и невежья... Однако AsPack-ом тоже можно защищать
Anatoly Podgoretsky (2003-04-21 17:26:00) [3]AsProtect это не компрессор!!! Ты путаешь с AsPack, но это не имеет отношения к защите
DeadMeat (2003-04-21 17:09:00) [4]>Anatoly Podgoretsky
UnPacker - это набор декомпрессоров и дешифровщиков к разным *.EXE компрессорам и шифровщикам. Он анализирует структуру файла, и использует нужную софтину, или же говорит какую надо использовать...
Anatoly Podgoretsky (2003-04-21 17:06:00) [5]DeadMeat © (21.04.03 16:57)
У тебя есть подверждение или тебе так кажется?
По информации от ведущих шареварщиков такого не наблюдается.
Какое отношение имеет UnPacker к AsProtect, ты продукты не перепутал или опять кажется?
DeadMeat (2003-04-21 16:57:00) [6]> NightAngel
Очень интересно конечно... но я имел ввиду немного другое... Как я уже сказал выше, вначале мы build-им только файл проекта, без unit-ов, он занимает что-то около 16kb. Записываем его размер (потом будем использовать как смещение). Потом build-им всё сразу. В результате получается файл нужных размеров. Теперь этот файл мы начинаем шифровать с места того смещения (т.е. размера маленького файла). У нас получается *.EXE файл, в котором зашифрованы только unit-ы (это если точно попасть). Затем, в памяти, мы расшифровываем это место и шифруем предыдущее, т.к. туда мы уже не вернёмся. Если я мыслю правильно, то даже при дампе памяти ProcDump-ом или кем-нибудь другим, в результате получатся наши unit-ы без загрузочной части, в которой тоже должно быть что-то важное...
> 3ff4480e30247f9a
А как его отлавливать, т.е. отлавливать-то можно, но ведь под софт айсом произойдёт тоже самое, тогда в чём прикол...??
>Yurgen
>igor
Ввиду своей распространённости, ASProtect легко обходится... У меня лично есть UnPacker к нему...
>grusty
Надо глянуть...
grusty (2003-04-21 09:50:00) [7]Отличный компонент - AVLock на http://avsoft.sitio.net
Советую...
igor (2003-04-20 19:30:00) [8]А вот еще расширение для ASProtect и HardKey...
http://www.softactivation.com/asp/about.asp
Yurgen (2003-04-20 18:03:00) [9]Есть хорошая программа для защиты софта.
ASProtect v1.2 (04-Feb-2001)
----------------------------
ASProtect - the system of software protection of applications, designed for quick
implementation of application protection functions. ASProtect is designed for such
specific tasks as working with registration keys and creation of evaluation and
trial application versions.
Main ASProtect features:
- compression of the application
- encryption of the application
- counteraction to dumping application memory with the tool like ProcDump.
- application integrity check
- counteraction to debuggers and disassemblers
- counteraction to memory patching
- API for interaction between application and protection routines
- creation and verification of registration keys using public keys encryption algorithms
- keeping of the database and checkup of "stolen" (illegal) registration keys
- possibility to create evaluation (trial) versions, that limit application functions
- basing on evaluation time and number of runs left, expose nag-screens
- generating of registration keys, based on the specific computer system.
3ff4480e30247f9a (2003-04-20 12:30:00) [10]Можно сделать в программе преднамереное деление на нуль, и отлавливать это событие, если будут гонять под софт айсом то получат фатальную ошибку в этом месте, можно наделать кучу потоков и если вдруг один поток отличается от другого то убивать программу.
Предлагаю писать прогу на диск и сохранять номера секторов в которые она писалась, тогда при копировании прога будет пытаться грузануться с др секторов, но дефрагментация убьет программу.
(Предлагаю переписывать биос на собственый загрузчик!:-) )
NightAngel (2003-04-20 01:46:00) [11]> DeadMeat © (19.04.03 18:08)
Не всё так просто. Допустим, мы хотим получить функцию, которая в Exe файле зашифрована, а при загрузке программы расшифровывается и запускается. Компилятор, естественно, не умеет производить шифрованные функции, поэтому придётся сначала скомпилировать программу, а потом пропатчить её Exe файл (было бы интересно написать программу, которая кодирует себя при первом запуске и при этом уничтожает кодирующие процедуры). Вам придётся разобраться с форматом исполняемых файлов Windows.
Структура PE программы на диске:
+-------------------+
|старый MZ заголовок|
|===================|
|новый PE заголовок|
|===================|
| таблица секций |
|===================|
|..секции в порядке.|
|...перечисления....|
|....в таблице......|
|===================|
| всё остальное |
+-------------------+
Файл разделён на секции: секция кода, секция данных, таблица импортов, ресурсы, таблица FixUp-ов, отладочная информация и др.
Решить что Вы будете шифровать (код, данные, импорты, ресурсы, ets..., или всё это вместе). Если будете шифровать секцию кода то проблемы здесь следующие: необходимо будет определить смещение декриптора в секции кода и его длину (очевидно, что декриптор шифровать не нужно). Перед расшифровкой изменить атрибуты страниц с кодом, т.к. этим страницам присвоены атрибуты запрещающие модификацию (функция VirtualProtect()). С секцией данных особых проблем нет, но если файл будет загружен не по базовому адресу, который указан в заголовке, тогда после расшифровки придётся перепатчить весь файл в памяти, как это делает загрузчик (необходима таблица FixUp-ов), хотя это в большей степени актуально для dll. Если будете шифровать импорты, то после расшифровки придётся загрузить все используемые библиотеки и настроить импорт, и я не уверен, но судя по всему, Win2k/XP не грузит программы без импортов. Если есть Tls callback, то пройти по списку функций. В общем проблем у Вас будет очень много, а устраняется вся эта радость, утилитой для снятия дампов файлов из памяти совмещенной с утилитой для восстановления тех самых дампов, и превращения их в Exe файлы, но не всё так плохо. Снять дамп с программы в памяти не проблема. Проблема в том, чтобы восстановить таблицу импорта. Дело в том, что все адреса функций из других dll которые Ваша программа использует в момент работы уже записаны как абсолютные адреса, и если dll поменяет место загрузки, то работать уже ничего не будет. А на другом компьютере тем более ничего работать не будет. Утилиты типа ProcDump это конечно очень мощная штука, но это не панацея. Например, когда Вы раскодируете одну процедуру, в этот же момент можно кодировать другую. Таким образом, просто так сдампить программу не получится. Нужно будет дампить несколько раз, а потом вклеивать раскодированные кусочки из одной программы в другую. Кроме того, можно, например, не только кодировать, но и перемещать процедуры в памяти. Например, очень сложно будет раскодировать Exe в котором по мере надобности несколько процедур вклеиваются в одно и то же место.
И ещё... К вопросу о привязке к оборудованию. Где-то в начале 90-х г. мы делали следующую защиту по ключевой дискете: т.н. "плавающий бит" - в определённом месте программы в нужном байте затирается один бит таким образом, чтобы он считывался неустойчиво: то как логический 0, то как 1. При запуске программа десятикратно считывает этот бит. Если считывание происходит неустойчиво (например, 4 раза прочитан 0, и шесть раз 1), значит всё в порядке. Если же результат один и тот же, значит программу скопировали, поскольку только при перезаписи неустойчивое состояние этого бита будет восстановлено. Определить наличие в программе "плавающего бита", а тем более найти его и скопировать вещь почти невозможная (необходимо специальное оборудование).
Удачи!
DeadMeat (2003-04-19 18:08:00) [12]Извините шо долго молчал... Net закончился...
Люди, кто-нить знает, как сделать вариант с инсталлятором... У меня есть одна мысля, но я не уверен...:
создать только файл *.dpr, без юнитов на диске, посмореть скоко он занимает, запомнить (или записать), потом создать всю прогу, с юнитами и со всеми делами, вспомнить то, что запомнили и от этого места, плюс пару киллов вперёд зашифровать всё... Потом, при загрузке, найти место куда загрузился процесс (его область памяти,..., какая-то команда это делала, надо будет глянуть, щас не помню), и там его на ходу расшифровать... Такой метод я применял на Zx-Spectrum, давно, давно,... но там было всё гораздо проще...
Скажите в чём я ошибаюсь...
DVM (2003-04-09 12:19:00) [13]
> 1-й Вариант, самый простой - берешь какую-нить dll (или
> создаешь любой файл) и задаешь ему свое название... Этот
> файлик кидаешь куда-нить в Windows\System... При запуске
> проверяешь его наличие...
> Здесь один минус - поставить прогу можешь только ты сам...
Снимается при помощи FileMonitor
> Плюс - такую защиту сломать практически нельзя...
>
Можно, а ключик, который нельзя стоит немало.
MityaP (2003-04-08 20:32:00) [14]1-й Вариант, самый простой - берешь какую-нить dll (или создаешь любой файл) и задаешь ему свое название... Этот файлик кидаешь куда-нить в Windows\System... При запуске проверяешь его наличие...
Здесь один минус - поставить прогу можешь только ты сам...
2-й вариант, тоже простой, но нужна некоторая сноровка, - делаешь ключик на ком порт или порт принтера, в который запихиваешь пару-тройку микросхем (паяешь их как надо), прописываешь туда некоторую логику или просто слово-код...
При запуске проги проверяешь слово-код или логику того, что на ком-порте висит...
Здесь минус - на любом компе может работать, но одновременно только на одном (на котором ключик стоит)...
Плюс - такую защиту сломать практически нельзя...
Можно, конечно посмотреть, что там напаяно, но слово-код оттуда вытащить труднее, в логику же вообще никто не прорвется...
DeadMeat (2003-04-08 15:20:00) [15]> Enderor
Неа... Из Нальчика...!
> NickBat
Не только. И защиту, и систеиу тестирования студентов, и всякие приколы для удобства работы в системе и т.п... Да и дело то не в этом, а в том, что неприятно, когда ты видишь свою прогу в других местах, кому она не предназначалась... Прога может быть и бесплатной, но другие "нехорошие" люди её продают тем, кому бы я её дал просто так...
> Soft
Спасибо поищем, а пока он говорит, что сервак перегружен...
Soft (2003-04-08 12:10:00) [16]На sourceforge.net ищи по ключу TurboPower пакет для защиты своих программ на Delphi. Пакет идет с исходникаи и бесплатно. С доками выйдет около 10Мб.
NickBat (2003-04-08 11:25:00) [17]> Да, насчёт тиража... город у нас небольшой а желателей много,
> т.к. количество компов растёт и растёт...
Простите за праздное любопытство, но на какую тему хоть программа? Город маленький, а желающих - много, защиту делаем, причем не просто так. :))
Enderor (2003-04-07 22:52:00) [18]DeadMeat ©:
Из кокого города? Не с Краснодарского края?
DeadMeat (2003-04-06 20:06:00) [19]> aanco
Почему-то выдает Acces Violation...
> DVM
...А привязаться к конфигурации компьютера, в то же время отвязавшись от нее не получится...
Я никак не могу понять что это значит...!! Я ведь хочу узнать только серийник BIOS-а (или чего там) и всё... Всё остальное оборудование меня не волнует... А насчёт JMP ты прав... У нас не так много продвинутых... Да и к том уже я почти всех их знаю... Те же кого не знаю делают следующее: запускают прогу через дизассемблер, и ждут пока она выкенет сообщение о том, что програ не лицензированная и т.д., а потом ищут, где был переход на адрес этой процы... Избавиться от этого можно многими способами. Например в моём их два:
1) Защита от дизассэмблера (использую telock71.exe);
2) Просто не вывожу никакого сообщения;
Но всё же метод с инсталлятором надо проверить, но без серийника получится не красиво...
DVM (2003-04-06 18:59:00) [20]Остается одно - HASP ключ. А привязаться к конфигурации компьютера, в то же время отвязавшись от нее не получится. Нет методов защиты, которые нельзя сломать. Но с другой стороны, чтобы убирать JUMP в программах, надо быть очень продвинутым и понимать что делается.