Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.07.10;
Скачать: [xml.tar.bz2];

Вниз

Защита софта   Найти похожие ветки 

 
DeadMeat   (2003-03-31 21:03) [0]

Дарова программеры... У меня такой вопросик, который я думаю интересовал каждого, кто хоть раз писал программы на заказ: как защитить свою софтину от копирования на другой комп..., т.е. скопировать то всегда мона, а как сделать так, чтобы она там не работала... У меня есть набор компонентов x2000..., весьма неплохой наборчик для получения списка оборудования..., так вот, там есть такой компонентик, который считывает серийный номер материнской платы (или BIOS-а, щас не помню)... используя его мона защитить свой софт, т.к. у каждого он (серийник) свой... Но проблема в том, что этот компонент работает только в вин-9х.... Итак вопрос, как узнать этот серийник другим способом (или же если есть другой способ защиты, то тоже неплохо)... Заранее благодарен.....


 
Intell   (2003-03-31 21:08) [1]

Попробуй через реестр.


 
DeadMeat   (2003-04-01 14:15) [2]

> Intell
А где именно такое там могёт храниться... чё то я такого не встречал...


 
Stranger   (2003-04-01 16:25) [3]

Можно в определенный параметр реестра (не помню точно в какие)
писать сою инфу, то есть не создавать новый параметр, а изменять существующий, а потом по нему проверяться


 
Intell   (2003-04-01 17:01) [4]

Именно это я имел ввиду. Найди (создай) ключ реестра, который есть только у тебя. Если его нет в реестре то прога не запустится.


 
DeadMeat   (2003-04-01 17:35) [5]

Но ведь после переустановки винды эта вся инфа уйдёт, и заказчику придётся опять вызывать меня для новой регистрации... К тому же такой способ быстро улавливается и исправляется... Может есть другие предложения...?


 
Intell   (2003-04-01 19:29) [6]

IP адрес читать умеешь? Если да, то гора с плеч!


 
Anatoly Podgoretsky   (2003-04-01 19:35) [7]

DeadMeat © (01.04.03 17:35)
Ты хочешь привязаться к железу и быть при этом независимым от этого железа.
Ну а переустановка Виндоус влекет за собой переустановку почти всех программ.


 
NightAngel   (2003-04-02 00:05) [8]

Если Ваш проект не превышает стоимости 100$, то самой лучшей защитой для Вас, особенно если тираж не превышает пары десятков клиентов, будет отсутствие инсталятора. И, что сконфигурировать и поставить программу сможете только Вы. Но, конечно, если у вас есть желание защищать - защищайте. Если же Ваш проект будет обильно тиражироваться, или он очень дорог по меркам
пользователей т.е. от 500 до 10000 долларов, то тогда действительно имеет смысл подумать о серьёзной защите. Сломают, конечно, в любом случае, но чем больше времени на это потребуется, тем лучше для Вас.


 
DeadMeat   (2003-04-02 10:00) [9]

> Intell
Ну скажем так, IP адрес это не серьёзно, а если заказчик не имеет сети...
> Anatoly Podgoretsky
Если можно, то пожалуйста по конкретнее,... что значит ...и быть при этом независимым от этого железа...
> NightAngel
Но ведь для этого надо постоянно ходить (ездить) к заказчику после каждой переустановки... Да, насчёт тиража... город у нас небольшой а желателей много, т.к. количество компов растёт и растёт...


 
nikus   (2003-04-05 11:36) [10]

На самом деле реестр и всё такое - это не серьёзная защита... Простая переустановка системы или восстановление системного диска из образа (как у меня - 8 минут занимает :) - и никаких проблем. Давно тут крутиться в голове мыслишка одна, но это только теория, прошу сильно не критиковать. В общем, идея следующая: программа может пометить (пока мне не известно, правда, каким способом) первый по счёту свободный кластер на жёстком диске как испорченный, и система на этот кластер "забъёт"! А в этот кластер можно записать, например, инфу о лицензии, дату установки (для shareware) и проч. Всем этим должна заниматься отдельная программа, например, инсталлятор. Тогда этот жёсткий диск становится как бы помеченным. А главная прога (которую мы защищаем) при запуске будет искать первый bad-кластер и пытаться прочесть оттуда данные, проверяя на правильность. Если данные "не наши", то пытается найти следующий bad-кластер, и т.д... Если ни одного такого не найдёт - то и не запуститься. А если нашла, но время использования вышло (shareware) - тоже не запуститься... И переустановка системы тут не поможет :)


 
Intell   (2003-04-05 12:13) [11]

Слухай DeadMeat. Если ты хочешь привязать прогу к железу, то забудь. Малейший сбой в драйверах или смена железа приведёт к тому, что тебе прийдётся переписывать прогу. Прислушайся к словам NightAngel`а. Он прав, от рук русских хакеров не ушла ни одна прога. Всё равно ломанут. Короче, даже если напишешь хорошую защиту, то она продержится не более полугода. Руки найдутся...


 
DeadMeat   (2003-04-05 15:34) [12]

> Intell
То что сломают я не спорю... Просто в нашем городе таких людей не так уж много, да и к тому-же я почти их всех знаю... Дело не в том чтобы создать крутую защиту, а в том, чтобы софтину просто не переписали простые люди (или чуть продвинутые)... И к тому же не так уж часто я думаю будет вылетать "мамка", а я ведь хочу ориентироваться именно на неё (или чей там серийный номер в загрузке светится)...

> nikus
Идея в принципе хороша... Но есть такие люди, которые при виде хотя бы какой либо ошибке при ScanDisk-е сразу бегут в какой нибудь сервис центр, и меняют винт на новый... А вообще подобный метод защиты используется довольно давно, но я его встречал лишь на дискетах или CD... Это когда иголочкой прокалывается определённое место на диске (где-то в конце), затем специальной прогой выясняется где именно произошёл прокол и это место на диске становится некой меткой... А т.к. повторить подобный прокол на том же месте практически невозможно, то этот метод защиты становиться в какой то мере весьма эффективным, хотя ... от рук русских хакеров не ушла ни одна прога ...


 
Intell   (2003-04-05 19:09) [13]

Удалено модератором
Примечание: Личная переписка


 
DJ_Sedoy   (2003-04-05 20:08) [14]

Насчет кластеров.
Можно и не помечать.
Когда я был маленький, была распространена такая фича:
зная, что програ займет на диске N кластеров, а сама она весит (N-1)*размер кластера+(размер кластера-10 байт) (то есть последний кластер будет не на 100% записан), мы можем дописать в оставшееся место что угодно - например ID проги... Это никем не сотрется (пока жива программа).

А если другие методы, то смотри:
к примеру будем ориентироваться на серийный номер винта (много было примеров). После инсталляции прога дает пользователю код (в виде преобразованного [для маскировки] номера винта) и работает например 15 дней. За это время пользователь должен послать тебе по e-mail этот код, а ты ему вернешь уже регистрационный код, который будет сгенерирован на основе полученного от пользователя кода. То есть та же защита по железу, но ехать тебе никуда не надо. И для каждого юзера код уникальный. А прога должна сверить - соответствуют ли номер винта и код активации. Тогда скорость взлома зависит от степени кодирования этого кода - пока не найдут ключ, не взломают (кроме сказанного ниже случая)

А обойти защиту можно элементарно, например убрав в коде jump на твою процедуру проверки законности использования ПО, или же просто в конце этой процедуры устанавливать флаг (ну или результат работы процедуры) в положение, которое соответствует лицензируемой проги.
Поэтому защиту лучше предусмотреть на уровне инсталляции, а не запуска/работы программы. Но тогда опять же очевидны минусы указанные выше.

Или вот еще. Как преобразовать exe файл знаешь? Где то на этом же сайте я встречал такое. Пусть например какой-то критичный участок программы будет "испорчен", а при вводе кода (а код опять же можно генерировать как сказано выше) этот участок тоже лечится по открытому алгоритму (то есть который в коде не замаскирован), но данными из этого кода. Тогда взлом вообще сложен - не зная кода, нельзя исправить тот участок, даже зная алгоритм восстановления (но не шифрования ключа).

Приношу свои извинения, если где-то непонятно или неточно выразился :)


 
DeadMeat   (2003-04-06 13:17) [15]

> DJ_Sedoy

...зная, что програ займет на диске N кластеров, а сама она...

Такое я уже проходил, лечится копированием диска 1:1


...к примеру будем ориентироваться на серийный номер винта...

И это у меня было, после форматирования номер меняется, а NET есть не у всех...


...Как преобразовать exe файл знаешь?...

А вот это мысля хорошая, в купе с инсталлятором, который и будет лечить *.EXE-шник, метод в принципе неплох... А вот как сделать без инсталлятора и не знаю, если знаешь, то будь добр подскажи..., А так надо попробовать. Но всё же серийный номер (для генерации ключа) лучше брать от материнки... А вообще спасибо за идеи и мысли... Будем пробовать... и искать...


 
aanco   (2003-04-06 18:28) [16]

{ Так можно получить дату BIOS }
Function GetBIOSDate: String;
begin
Result:= String(PChar(Ptr($FFFF5)));
end;


 
DVM   (2003-04-06 18:59) [17]

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


 
DeadMeat   (2003-04-06 20:06) [18]

> aanco
Почему-то выдает Acces Violation...

> DVM

...А привязаться к конфигурации компьютера, в то же время отвязавшись от нее не получится...

Я никак не могу понять что это значит...!! Я ведь хочу узнать только серийник BIOS-а (или чего там) и всё... Всё остальное оборудование меня не волнует... А насчёт JMP ты прав... У нас не так много продвинутых... Да и к том уже я почти всех их знаю... Те же кого не знаю делают следующее: запускают прогу через дизассемблер, и ждут пока она выкенет сообщение о том, что програ не лицензированная и т.д., а потом ищут, где был переход на адрес этой процы... Избавиться от этого можно многими способами. Например в моём их два:
1) Защита от дизассэмблера (использую telock71.exe);
2) Просто не вывожу никакого сообщения;
Но всё же метод с инсталлятором надо проверить, но без серийника получится не красиво...


 
Enderor   (2003-04-07 22:52) [19]

DeadMeat ©:
Из кокого города? Не с Краснодарского края?


 
NickBat   (2003-04-08 11:25) [20]

> Да, насчёт тиража... город у нас небольшой а желателей много,
> т.к. количество компов растёт и растёт...

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


 
Soft   (2003-04-08 12:10) [21]

На sourceforge.net ищи по ключу TurboPower пакет для защиты своих программ на Delphi. Пакет идет с исходникаи и бесплатно. С доками выйдет около 10Мб.


 
DeadMeat   (2003-04-08 15:20) [22]

> Enderor
Неа... Из Нальчика...!

> NickBat
Не только. И защиту, и систеиу тестирования студентов, и всякие приколы для удобства работы в системе и т.п... Да и дело то не в этом, а в том, что неприятно, когда ты видишь свою прогу в других местах, кому она не предназначалась... Прога может быть и бесплатной, но другие "нехорошие" люди её продают тем, кому бы я её дал просто так...

> Soft
Спасибо поищем, а пока он говорит, что сервак перегружен...


 
MityaP   (2003-04-08 20:32) [23]

1-й Вариант, самый простой - берешь какую-нить dll (или создаешь любой файл) и задаешь ему свое название... Этот файлик кидаешь куда-нить в Windows\System... При запуске проверяешь его наличие...
Здесь один минус - поставить прогу можешь только ты сам...

2-й вариант, тоже простой, но нужна некоторая сноровка, - делаешь ключик на ком порт или порт принтера, в который запихиваешь пару-тройку микросхем (паяешь их как надо), прописываешь туда некоторую логику или просто слово-код...
При запуске проги проверяешь слово-код или логику того, что на ком-порте висит...
Здесь минус - на любом компе может работать, но одновременно только на одном (на котором ключик стоит)...
Плюс - такую защиту сломать практически нельзя...
Можно, конечно посмотреть, что там напаяно, но слово-код оттуда вытащить труднее, в логику же вообще никто не прорвется...


 
DVM   (2003-04-09 12:19) [24]


> 1-й Вариант, самый простой - берешь какую-нить dll (или
> создаешь любой файл) и задаешь ему свое название... Этот
> файлик кидаешь куда-нить в Windows\System... При запуске
> проверяешь его наличие...
> Здесь один минус - поставить прогу можешь только ты сам...

Снимается при помощи FileMonitor

> Плюс - такую защиту сломать практически нельзя...
>

Можно, а ключик, который нельзя стоит немало.


 
DeadMeat   (2003-04-19 18:08) [25]

Извините шо долго молчал... Net закончился...

Люди, кто-нить знает, как сделать вариант с инсталлятором... У меня есть одна мысля, но я не уверен...:
создать только файл *.dpr, без юнитов на диске, посмореть скоко он занимает, запомнить (или записать), потом создать всю прогу, с юнитами и со всеми делами, вспомнить то, что запомнили и от этого места, плюс пару киллов вперёд зашифровать всё... Потом, при загрузке, найти место куда загрузился процесс (его область памяти,..., какая-то команда это делала, надо будет глянуть, щас не помню), и там его на ходу расшифровать... Такой метод я применял на Zx-Spectrum, давно, давно,... но там было всё гораздо проще...

Скажите в чём я ошибаюсь...


 
NightAngel   (2003-04-20 01:46) [26]

> 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), значит всё в порядке. Если же результат один и тот же, значит программу скопировали, поскольку только при перезаписи неустойчивое состояние этого бита будет восстановлено. Определить наличие в программе "плавающего бита", а тем более найти его и скопировать вещь почти невозможная (необходимо специальное оборудование).
Удачи!


 
3ff4480e30247f9a   (2003-04-20 12:30) [27]

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


 
Yurgen   (2003-04-20 18:03) [28]

Есть хорошая программа для защиты софта.
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.


 
igor   (2003-04-20 19:30) [29]

А вот еще расширение для ASProtect и HardKey...
http://www.softactivation.com/asp/about.asp


 
grusty   (2003-04-21 09:50) [30]

Отличный компонент - AVLock на http://avsoft.sitio.net
Советую...


 
DeadMeat   (2003-04-21 16:57) [31]

> NightAngel
Очень интересно конечно... но я имел ввиду немного другое... Как я уже сказал выше, вначале мы build-им только файл проекта, без unit-ов, он занимает что-то около 16kb. Записываем его размер (потом будем использовать как смещение). Потом build-им всё сразу. В результате получается файл нужных размеров. Теперь этот файл мы начинаем шифровать с места того смещения (т.е. размера маленького файла). У нас получается *.EXE файл, в котором зашифрованы только unit-ы (это если точно попасть). Затем, в памяти, мы расшифровываем это место и шифруем предыдущее, т.к. туда мы уже не вернёмся. Если я мыслю правильно, то даже при дампе памяти ProcDump-ом или кем-нибудь другим, в результате получатся наши unit-ы без загрузочной части, в которой тоже должно быть что-то важное...

> 3ff4480e30247f9a
А как его отлавливать, т.е. отлавливать-то можно, но ведь под софт айсом произойдёт тоже самое, тогда в чём прикол...??

>Yurgen
>igor
Ввиду своей распространённости, ASProtect легко обходится... У меня лично есть UnPacker к нему...

>grusty
Надо глянуть...


 
Anatoly Podgoretsky   (2003-04-21 17:06) [32]

DeadMeat © (21.04.03 16:57)
У тебя есть подверждение или тебе так кажется?
По информации от ведущих шареварщиков такого не наблюдается.
Какое отношение имеет UnPacker к AsProtect, ты продукты не перепутал или опять кажется?


 
DeadMeat   (2003-04-21 17:09) [33]

>Anatoly Podgoretsky
UnPacker - это набор декомпрессоров и дешифровщиков к разным *.EXE компрессорам и шифровщикам. Он анализирует структуру файла, и использует нужную софтину, или же говорит какую надо использовать...


 
Anatoly Podgoretsky   (2003-04-21 17:26) [34]

AsProtect это не компрессор!!! Ты путаешь с AsPack, но это не имеет отношения к защите


 
DeadMeat   (2003-04-21 17:33) [35]

>Anatoly Podgoretsky
А вообще да... Виноват, приношу свои извинения, покорнейше прошу прощения,... бес попутал, затмил разум и память мою тёмный демон глупости и невежья... Однако AsPack-ом тоже можно защищать


 
Shurik   (2003-04-27 05:56) [36]

Так что насчёт исходной темы, инфа об оборудовании?



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2003.07.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.009 c
14-31466
.nuke
2003-06-24 02:50
2003.07.10
Разыскивается литература...


1-31311
Igor_P
2003-06-26 19:21
2003.07.10
Округление до 10-и, 5-и


1-31309
Serginio
2003-06-26 15:07
2003.07.10
Просвятите на что содержит ссылку переменная типа Interface


3-31155
n1tro
2003-06-19 06:44
2003.07.10
Помогите с запросом


14-31455
Vlad Oshin
2003-06-24 08:21
2003.07.10
Отключил драйвер и черный экран. Вин XP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский