LINUX.ORG.RU

Помогите придумать защиту для демо-режима «программы»

 , ,


1

2

Введение

Есть JS-файл. В нем реализована некая фунциональность. Он используется как плагин в офтоп-программе, но распостраняется отдельно. Он закодирован (неважно как). Программа после загрузки плагина декодирует его. Скрипт выполняется в VM Internet Explorer`а. Соответственно через ActiveX у мене есть доступ к диску, реестру, и shell`у. Также у меня в скрипт включена CryptoJS (openssl на JavaScript`e).

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

Как я это вижу. Поскольку у меня есть доступ к диску и опессл, можна писать на диск шифрованные файлы. Если у этой задачи и есть решение то imho нужно двигатся в этом направлении.

Буду благодарен за любые советы

★★★★★

Последнее исправление: ZuBB (всего исправлений: 1)

Тоесть желательно бы ограничить его использование по дате или количеству запусков.

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

Гарантии нет, так как никто не запретит запускать твою программу в VM сделав на начальный момент полную копию.

Реальная гарантия: авторизация через интернет. Поднимай авторизационный сервер и можешь ограничивать как хочешь.

P.S. На самом деле при очень большом желании можно выдрать код из VM Internet Explorer'а.

monk ★★★★★
()
Ответ на: комментарий от monk

Реальная гарантия: авторизация через интернет

То я смотрю, всяким UbiSoft-ским игрушкам это сильно помогло. Если продукт заметно востребован — вскроют любую защиту.

one_more_hokum ★★★
()
Ответ на: комментарий от one_more_hokum

Если продукт заметно востребован — вскроют любую защиту.

Для Diablo 3 уже вскрыли или этот «продукт» не востребован?

kamre ★★★
()
Ответ на: комментарий от monk

Реальная гарантия: авторизация через интернет

привязка к интернету категорически не применима. тем более к демо версии.

На самом деле при очень большом желании можно выдрать код из VM Internet Explorer'а

очень большом желании

если у клиента будет «очень большое желание» моему скрипту в любом случае будет пипец.

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

ZuBB ★★★★★
() автор топика
Последнее исправление: ZuBB (всего исправлений: 2)
Ответ на: комментарий от pathfinder

Я не силен в таких вещах, но мне нравится такая идея.

Если нет своего постоянного сервиса в интернете, можно попользоваться не своими. Предположим, что сайт http://www.google.com будет существовать неограниченно долго. Делаем по HTTP Get запрос. Извлекаем из поля «Date» время и относительно этого времени определяем, истек ли триальный период.

pathfinder ★★★★
()
Ответ на: комментарий от ZuBB

привязка к интернету категорически не применима.

ясно

pathfinder ★★★★
()

нет возможности урезать часть самой важной функциональности

есть ещё ограничение по времени непрерывной работы

anonymous
()
Ответ на: комментарий от ZuBB

Я делал тупую вещь: при первом запуске писал в реестр текущую дату-время и количество оставшихся запусков.

При последующих запусках проверял/изменял оставшееся количество.

Да, ветка реестра была HKEY_CURRENT_USER\Software\Microsoft\winmine

А значение ключа (дата-время + число) в бинарном виде.

monk ★★★★★
()
Ответ на: комментарий от monk

и что помешает пользователю удалить из реестра тот ключ и твоя прога запустится как в первый раз?

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от kamre

Для Diablo 3 уже вскрыли или этот «продукт» не востребован?

Стоимость взлома Diablo 3 соизмерима со стоимостью написания серверной части Diablo 3.

Видимо под востребованностью надо подразумевать отношение полученной выгоды к понесенным затратам, а не просто полученную выгоду.Иначе фраза неверна.

pathfinder ★★★★
()
Ответ на: комментарий от ZuBB

Ничего. Но он его должен найти. Или иметь полную копию реестра перед первым запуском.

Хочется обезопасить себя от хакеров начально-среднего уровня

Предполагаю, что отладчиком пользоваться не умеют, а то и исходники на JS можно раскопать...

monk ★★★★★
()
Ответ на: комментарий от ZuBB

Можно создавать два ключа. Во втором нужная информация. Если второго нет, а первый есть — не запускаться.

Чтобы бороться с inotify на чтение, перебирать (читать) почти весь HKCU.

monk ★★★★★
()
Ответ на: комментарий от monk

Можно создавать два ключа. Во втором нужная информация. Если второго нет, а первый есть — не запускаться.

а что если 2х нет?

Чтобы бороться с inotify на чтение, перебирать (читать) почти весь HKCU.

на запись имел ввиду

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от ZuBB

а что если 2х нет?

Значит или запуск первый, или отловили создание при первом запуске и не повезло.

В общем, если знают где ловить или хватит терпения на создание виртуалки, то без внешней авторизации защиту сделать невозможно. Разве что старый добрый метод с «ключевой дискетой».

monk ★★★★★
()
Ответ на: комментарий от monk

Ничего. Но он его должен найти.

Дарю:
http://technet.microsoft.com/en-US/sysinternals/bb896645.aspx

В общем, если знают где ловить или хватит терпения на создание виртуалки

Это ещё зачем? Запустил монитор выше, поставил фильтр, потыкал, закрыл. Посмотрел где нагадила твоя поделка.

invy ★★★★★
()
Последнее исправление: invy (всего исправлений: 2)
Ответ на: комментарий от ZuBB

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

Программа снова будет думать, что это первый запуск.

Но если пользователь в нотифаере смотрел не первый запуск, то есть шанс...

Для маскировки можно ещё пару дюжин существующих ключей переписать тем же, что там было.

monk ★★★★★
()

Он закодирован (неважно как). Программа после загрузки плагина декодирует его.

Что мне мешает выдрать ключ шифрования (алгоритм декодирования) дизассемблером, или твой скрипт прямо из дампа?

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

invy ★★★★★
()
Последнее исправление: invy (всего исправлений: 3)

Буду благодарен за любые советы

Ну, если за любые... проверяй дату, но по прошествии разрешенного периода не переставай запускаться, а начинай глючить в важных местах и выбрасывай страницу «походу баг, обратитесь к разработчику».

tailgunner ★★★★★
()
Ответ на: комментарий от invy

выдрать ключ шифрования (алгоритм декодирования) дизассемблером

дизассемблером

уже отвечал

На самом деле при очень большом желании можно выдрать код из VM Internet Explorer'а

очень большом желании

если у клиента будет «очень большое желание» моему скрипту в любом случае будет пипец.

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

прошествии разрешенного периода

прошествии

вот здесь то собака может и порыться

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от ZuBB

Может, если софт так важен и клиентов разумное количество, а не миллиард хомячков, то стоит использовать USB-ключи. Правда не знаю, как у API ключей обстоят дела с поддержкой JavaScript.

Делаешь демо USB-ключ для потенциального заказчика.

pathfinder ★★★★
()
Ответ на: комментарий от ZuBB

Расчет на то, что «хакеры» не свяжут падения с истечением времени. Да и время можно отслеживать не только по системным часам, но и по временам модификации объектов, до которых твоя программа может дотянуться. Конечно, всё это security by obscurity, но для заданных условий ничего надежного придумать и невозможно.

tailgunner ★★★★★
()
Ответ на: комментарий от pathfinder

Делаешь демо USB-ключ для потенциального заказчика.

к сожалению не катит..

ZuBB ★★★★★
() автор топика

Если приложению для работы нужна сеть:
1. server-side активация.
2. часть функционала вынести на сервер.

andreyu ★★★★★
()

всем отбой. неплохое и нестандартное решение было найдено с этой стороны

К сожалению в скрипте нет возможности урезать часть самой важной функциональности

спасибо за помощь всем отписавшимся

ZuBB ★★★★★
() автор топика
Последнее исправление: ZuBB (всего исправлений: 1)
Ответ на: комментарий от anonymous

Почему этот лютый оффтоп еще тут?

Поддерживаю этого анонима! DRM не нужен, хотя пользователи «Internet Explorer`а. Соответственно через ActiveX» должны страдать.

Вопрос не относится никаким боком ни к opensource.ru, ни к linux.org.ru

kamre ★★★
()
Ответ на: комментарий от Lavos

Где скачать вскрытую SimCity 5?

Ты ещё gmail вскрытый потребуй. Если основные расчёты игрушки крутятся на удалённом сервере, а на клиенте — только рисовалка полученных данных, то «вскрыть» — это либо переписать сервер, либо взломать его же. Что довольно легко палится, и патчится.

one_more_hokum ★★★
()

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

one_more_hokum ★★★
()

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

r ★★★★★
()
Ответ на: комментарий от one_more_hokum

В симсити 5 все расчёты на клиенте ведутся, на сервере игра сохраняется и эмулируется «экономика» региона. Сервер, ес-сно уже переписали.

PolarFox ★★★★★
()
Ответ на: комментарий от r

и каждый день пользователя заставлять перекачивать демку?

// я все еще заинтересован в красивом и надежном решении ибо не уверен что удастся провернуть такой же финт в других скриптах..

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от one_more_hokum

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

немного не то что ты хочеш, но то от чего я хочу защититься

ZuBB ★★★★★
() автор топика

Во-первых, на винфак. Во-вторых, проприетарщина не нужна. В-третьих, у тебя всё равно ничего не получится, security by obscurity не работает. Надеюсь, после выкладывания «демо» полная версия твоей поделки окажется на торрентах на следующий день.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

спасибо. и вам желаю чтобы Вы жили на пожертвования своих опенсорс проектов. кстати много их есть там кроме мц?

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от anonymous

у меня крутой учитель - суперхакир-97

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от ZuBB

В нем реализована некая фунциональность

переставать работать после 20 секунд функционирования функциональности. ты чего ждал после своего описания?

anonymous
()
Ответ на: комментарий от invy

я таки обязуюсь запилить историю узбека после пары первых клиентов.

посмотрим тогда будете ли вы все настаивать на OSS

ZuBB ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.