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

Вниз

Схемы защиты ПО   Найти похожие ветки 

 
Rouse_ ©   (2012-05-11 23:42) [0]

Вот сидели мы тут, обсуждали и придумывали, а потом задались вопросом: а какие трюки для защиты своего ПО использует народ? :)


 
Eraser ©   (2012-05-11 23:47) [1]

imho, железных пути 3:
1. качественная защита на основе аппаратного ключа.
2. размещение основной логики в онлайн.
3. любая защита, вынуждающая крякера вносить изменения в код, т.е. "патчить", чтобы слетала ЦП.


 
Dennis I. Komarov ©   (2012-05-11 23:56) [2]

Лиц. соглашение.


 
Inovet ©   (2012-05-11 23:58) [3]

> [1] Eraser ©   (11.05.12 23:47)
> чтобы слетала ЦП

Это что церебральный паралич чтобы слетал с программы?:)


 
Rouse_ ©   (2012-05-12 00:11) [4]


> Eraser ©   (11.05.12 23:47) [1]

Идея здравая, но, на практике не реализуема по всем трем пунктам.
1. Блэкбокс на железе компроментируется эмуляторами
2. Это очень плохой подход - любая контора решившая сделать онлйан блэкбокс наказыается DDOS, что очень сильно влияет на репутацию...\
3.1. Если работаем с физическими данными, то нам подменят путь при чтении образа на неизмененный бинарник.
3.2 Если работаем с распакованными в памяти данными, то обходится на этапе самой проверки, а именно снимается алго ЦП участка кода и вносятся изменения в блок данных, с которым идет проверка. Алго страхующие сами себя на уровне секций кода, обходятся банально полной копей защищаемого участка в контролируемую память (стаб) и правкой адресов на оффсет стаба. (я так гвардонтовскую схему защиты снимал - требуется написание допсофта дампящее образ и несколько раз запускающее результат под отладчиком с протектом всех выделеных страниц, куда чекер образа лезет).

В итоге не фонтан...
А кто-то еще более интересное делал?


 
alexdn ©   (2012-05-12 00:14) [5]

> Rouse_ ©   (11.05.12 23:42)  
opens, гулять так гулять)..


 
Rouse_ ©   (2012-05-12 00:17) [6]


> opens, гулять так гулять)..

Что за opens ?  :)


 
wicked ©   (2012-05-12 00:31) [7]


> А кто-то еще более интересное делал?

свою маленькую стековую виртуальную машинку, которая молотила проверку серийника
для усложнения жизни взломщика она имела очень маленький набор операций, которые выполнала много раз - например, все булевы операции реализовывались через две базовые - или И-НЕ, или ИЛИ-НЕ
то есть, можно было и на одной И-НЕ, просто для усложнения кода было насколько наборов "макросов", каждый на своей операции

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


 
Rouse_ ©   (2012-05-12 00:59) [8]


> wicked ©   (12.05.12 00:31) [7]
>
> > А кто-то еще более интересное делал?
>
> свою маленькую стековую виртуальную машинку, которая молотила
> проверку серийника
> для усложнения жизни взломщика она имела очень маленький
> набор операций, которые выполнала много раз - например,
> все булевы операции реализовывались через две базовые -
> или И-НЕ, или ИЛИ-НЕ

Очень знакомая конструкция...
Морф криптора, собственно на базе стрелки Пирса сделан (банальный стэковый стакан). А что у тебя за софт, можно линк?


 
Германн ©   (2012-05-12 01:02) [9]


> А что у тебя за софт, можно линк?

Так он же по утверждению автора "савсэм не взлетел". Значит и линка никакого нет.


 
Rouse_ ©   (2012-05-12 01:02) [10]

ЗЫ:
> но программировать её было нудно, ибо "компилятор" я сделать
> поленился, а в результате все эти проверки набивались ручками
> в длинную цепочку команд

Та-же ерунда, отладчик для ВМ так и не написан, Jack128 оч сильно смеялся когда я пикод из под нее пытался отлаживать :)))


 
Jeer ©   (2012-05-12 01:02) [11]

не хуже будет интерпретатор форта использовать для в этом случае :)


 
oxffff ©   (2012-05-12 01:24) [12]

Любые надстройки так или иначе изучаются и разворачиваются в нужную (обратную) сторону автоматически или полуавтоматически. Бо умных людей на планете хватает. А сделать обратное преобразование неоднозначным сложнее(даже если набор команд разный, можно рассуждать на более высоком уровне семантическом, и так или иначе свести к однозначности).
Следуют подумать, как оградить от анализа кода, но тут
видимо нужно реализовать ВМ на аппаратном уровне с недокументированным набором команд. Это дорого и не защищает на 100%. Это тоже надстройка. И тоже ломается. Уже другими ребятами.
Которые тоже есть на белом свете. :)


 
oxffff ©   (2012-05-12 01:30) [13]

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

Это решение. IMHO.


 
oxffff ©   (2012-05-12 01:33) [14]

Rouse, я думаю, что проблем с доступом в инет у Ваших заказчиков нет.
Да за идею 1%. :)
Можно пивом.


 
oxffff ©   (2012-05-12 01:50) [15]


> 2. Это очень плохой подход - любая контора решившая сделать
> онлйан блэкбокс наказыается DDOS, что очень сильно влияет
> на репутацию...\


Не заметил. Ну наказываться она может как угодно.
Это к самому раскрытию сервиса отношения не имеет.


 
Rouse_ ©   (2012-05-12 01:54) [16]


> oxffff ©   (12.05.12 01:30) [13]

Серег, спасибо за предложение, но не надо :)
Ветка вообще планировалась как обмен идеями, а не толщиной его самого...
ЗЫ: кстати, что есть "ВМ на аппаратном уровне с недокументированным набором команд".
Судя по всему имелся АРМ, ибо что-то быстроработающее в плане ВМ можно конечно на ПИк-ах с шлюзовым препроцессором изобразить...


 
Германн ©   (2012-05-12 02:01) [17]


> Rouse_ ©   (12.05.12 01:02) [10]
>
> ЗЫ:
> > но программировать её было нудно, ибо "компилятор" я сделать
> > поленился, а в результате все эти проверки набивались
> ручками
> > в длинную цепочку команд
>
> Та-же ерунда, отладчик для ВМ так и не написан, Jack128
> оч сильно смеялся когда я пикод из под нее пытался отлаживать
> :)))

Чё то все мы постоянно работаем используя "недоинструменты" :)
Я постоянно (правда достаточно редко) пишу на ассемблере новые процедуры/перевожу на ассемблер с паскаля старые процедуры, но подключать я их в программу могу только с использованием старой доброй паскалевской inline. Ибо линкер мне не доступен. (((
P.S. Я как всегда о своём, о девичьем. Т.е. о микропроцессорах.


 
Германн ©   (2012-05-12 02:04) [18]


> Ветка вообще планировалась как обмен идеями

Я так и понял. Но...


 
Eraser ©   (2012-05-12 02:32) [19]


> Rouse_ ©   (12.05.12 00:11) [4]

по поводу online - DDOS это, во многом, домыслы. кому оно надо, да и уголовно наказуемо. лет через 10 вообще все там будет.

по поводу ЭЦП и аппаратного ключа - наверно я не совсем точно описал суть задумки. бороться непосредственно с патчерами и эмуляторами, imho, пустая трата времени. важно, чтобы в случае проверки ОБЭП ломанный софт было сразу видно. в т.ч. чтобы такой софт автоматически легко вычислялся спец. утилитами, которые есть в наличии у "органов".


 
Rouse_ ©   (2012-05-12 02:43) [20]


> Eraser ©   (12.05.12 02:32) [19]
> по поводу online - DDOS это, во многом, домыслы. кому оно
> надо, да и уголовно наказуемо. лет через 10 вообще все там
> будет.

Да нет - это вполне действенный метод, есть примеры и практика...

> по поводу ЭЦП и аппаратного ключа - наверно я не совсем
> точно описал суть задумки. бороться непосредственно с патчерами
> и эмуляторами, imho, пустая трата времени. важно, чтобы
> в случае проверки ОБЭП ломанный софт было сразу видно. в
> т.ч. чтобы такой софт автоматически легко вычислялся спец.
>  утилитами, которые есть в наличии у "органов".

Ну в кратце так оно и должно работать по задумке :)


 
wicked ©   (2012-05-12 04:13) [21]


> Очень знакомая конструкция...
> Морф криптора, собственно на базе стрелки Пирса сделан (банальный
> стэковый стакан). А что у тебя за софт, можно линк?


Германн прав - софт не взлетел, поэтому в интернете его и нету
да и писался он лет 6-7 назад, для клиента, найденного на eLance


> по поводу online - DDOS это, во многом, домыслы. кому оно
> надо, да и уголовно наказуемо. лет через 10 вообще все там
> будет.


и кого ты будешь ловить?
хомячков, у кого комп с букетом троянов и пожизненным членством в ботнете?


 
oxffff ©   (2012-05-12 11:38) [22]


> Rouse_ ©   (12.05.12 01:54) [16]
>
> > oxffff ©   (12.05.12 01:30) [13]
>
> Серег, спасибо за предложение, но не надо :)
> Ветка вообще планировалась как обмен идеями, а не толщиной
> его самого...
> ЗЫ: кстати, что есть "ВМ на аппаратном уровне с недокументированным
> набором команд".
> Судя по всему имелся АРМ, ибо что-то быстроработающее в
> плане ВМ можно конечно на ПИк-ах с шлюзовым препроцессором
> изобразить...


Я имел ввиду некий процессор с системой команд(для усложнения можно реализовать алгоритм который меняет коды операций в зависимости от предыдущей последовательности команд) известной только разработчикам и реализация такого процессора аппаратно. Такое устройство выполняет код(в том числе и обращение к СУБД например через основное устройство(x86) в память кладется SQL, шифрование, ..
), как и обычный процессор, а результаты вычислений кладет в память. Соответственно устройство выполняет полную логику работы с крит. данными. Для защиты от снятия дампа любая логика по крит. данным исполняется на этом устройстве.

То есть вся бизнес логика на устройстве.


 
Eraser ©   (2012-05-12 11:52) [23]


> Rouse_ ©   (12.05.12 02:43) [20]


> wicked ©   (12.05.12 04:13) [21]

за вполне вменяемые деньги сейчас можно разместить свой сервер в облаке того же amazon. в общем, думаю контора, достигшая такого уровня, что её захотят за DDOSить конкуренты может себе позволить фактически непотопляемый "сервер". если контора не занимается политикой, а рассчитывает, к примеру, строительные сметы, то глобально, как дядюшку Билли или же Эхо москвы её DDOSить никто не станет.


 
oxffff ©   (2012-05-12 11:59) [24]


> а рассчитывает, к примеру, строительные сметы,


+100500. :)


 
KSergey ©   (2012-05-12 12:57) [25]

Защита для чего нужна? чтобы не взломали? чтобы не скопировали?
Нет.

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

А потому самая надежная защита - это
- невозможность развернуть и эксплуатировать ПО без участия разработчика
- качественная работа саппорта в таких условиях.


 
ZeroDivide ©   (2012-05-12 13:17) [26]

Тут я думаю нужно разделять, как минимум:
1. Софт для юр. лиц
2. Массовый софт

Для юр.лиц. катит лицензия и наезды, а вот для хомячков катит только защита. Из реально работающих и не взломанных популярных программ "Guitar FXBox". Защита такая: Есть прога, которая выполняет определенный набор функций и показывает прямо в интерефейсе, чего еще можно там сделать... Но функции не работают, то есть это демо-версия, то есть кода там вообще нет и крякать просто нечего! Полная копия отсылается с уникальным ключем после покупки. Если копия утекает, ключ заносится в черный список. Сейчас что-то демо-версии не сильно распространены, но вообще защита хорошая в плане эффективности.

   Еще вариант ((с) by me) делать фуфлыжную функциональность глобального масштаба. То есть при окончании триального периода, допустим, для примера, пользователь запускает прогу, открывает какие-то окошки, выполняет какие-то действия и все вроде бы нормально но натыкается, допустим, при нажатии какой-то кнопки на сообщение о невозможности выполнения операции в связи с окончанием триального периода.
   Причем на коде кнопки никаких проверок на окончание триала, никаких проверок на какие-то флажки, а просто что то типа ShowMessage("trial perid expired"); и всё. Сама проверка была вообще хрен знает где, и по результатам ее создавались фуфлыжные объекты, то есть такие же, но не содержащие кода обработок каких-то кнопок в принципе.
  Если сделать таких разветвлений штук 15, то взломать программу будет очень трудоемко. Мозги любого крякера заточены на то, что копать нужно где-то рядом с тем местом, где пошло ответвление от нетриальной функциональности. Для пущей надежности и защиты от особо продвинутых: Защищаем отрезанные фуфлыжную функциональность от дебага теми же виртуальными стековыми машинами. Если крякер раздебажит машину и расковыряет код, потратив на это кучу пота, то будет удивлен отсутствию каких либо проверок и условных переходов, а наличию одного лишь ShowMessage, окруженного мусорным кодом.


 
Rouse_ ©   (2012-05-12 13:28) [27]


> ZeroDivide ©   (12.05.12 13:17) [26]

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


 
Rouse_ ©   (2012-05-12 13:34) [28]

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


 
KSergey ©   (2012-05-12 14:07) [29]

> Rouse_ ©   (12.05.12 13:34) [28]

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

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

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

но ведь то, что я пишу сейчас - это и так всем известно... (это опять же в разрезе имени ТС), так что прямо и не знаю


 
KSergey ©   (2012-05-12 14:13) [30]

> KSergey ©   (12.05.12 12:57) [25]
> - невозможность развернуть и эксплуатировать ПО без участия  разработчика

Уточню: здесь речь вовсе не о технических каких-то защитах, нет!

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

Некоторые говорят, что мы пишем "говнософт", но у меня подозрение, что это лицензионная политика )


 
Rouse_ ©   (2012-05-12 14:22) [31]


> но ведь то, что я пишу сейчас - это и так всем известно..

Не, ну почему - всегда есть шанс что кто-то выдаст на гора стоящую идею :)
Я вот сколько раз заводил подобного плана ветки - постоянно что-то для себя в плане направления куда пощупать находил :)

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


 
Rouse_ ©   (2012-05-12 14:23) [32]


> то-ли реально разработчик заставил выдать на гора такой
> результат.

в смысле разработчик заставил компилер выдать результат :)


 
Anatoly Podgoretsky ©   (2012-05-12 14:31) [33]

> KSergey  (12.05.2012 14:13:30)  [30]

По образцу Самсунга, замучался их убивать и редактировать, особенно в HKCR


 
Sha ©   (2012-05-12 15:18) [34]

> Rouse_ ©   (12.05.12 14:23) [32]
> в смысле разработчик заставил компилер выдать результат :)

а что там было необычно?


 
Rouse_ ©   (2012-05-12 15:56) [35]

Из нюансов которые помню, изменяемые данные находились непосредственно в теле процедуры прямо посреди выполняемого кода, ну что-то вроде:

 asm
   call @1
 @1:
   pop eax
   add eax, 22
   jmp eax
   dd 1, 2, 3, 4
   // читаем например
   mov eax, [eax - 16]
   // что-то делаем, потом туда-же пишем
 end;

фишка в том, что в этот блок данных заносится указатель на данные по очередному подключению.
Изначально сервер ограничен восемью подключениями.
Соответственно если попробовать обойти первую проверку где происходит сверка с восьмеркой, то он попробует записать данные по девятому по оффсету этого буффера и затрет кусок кода, в данном примере имя является mov eax, [eax - 16]

ну и еще там много всего интересного...


 
Rouse_ ©   (2012-05-12 16:06) [36]

Вообще там вся фишка что для каждого увеличения кол-ва подключений взломщику приходится решать очередную головоломку.
Я, если не изменяет память остановился на 12 подключениях, с 13-ым была заморочка в рамках winsock.select() с буффером. Терпения не хватило и забросил на время, вот до сих пор дома лежит никак не закончу этот кроссворд :)


 
Sha ©   (2012-05-12 16:26) [37]

> Rouse_ ©   (12.05.12 15:56) [35]

Такой call - ассемблерная вставка скорее всего,
такой jump иногда соответствует case.

> для каждого увеличения кол-ва подключений взломщику
> приходится решать очередную головоломку

Вот не лень им было )


 
Rouse_ ©   (2012-05-12 16:28) [38]

Не - это я код для примера написал, в оригинале конечно по другому было, просто кода под рукой нема :)


 
QAZ   (2012-05-12 18:44) [39]


> Помнится самая толковая защита была в VentaFax: по сути
> так и не было сделано нормальной крякнутой весии, на сколько
> мне известно

неправильно помница,ее никто и не крякал ибо она хавает серийник и работает :) лежит на любом трекере


 
Anatoly Podgoretsky ©   (2012-05-12 19:17) [40]

> Rouse_  (12.05.2012 15:56:35)  [35]

Обычная ассемблерная ручная или автоматическая вставка, известная в технике
защиты.
Эффективно, но нового ничего.



Страницы: 1 2 3 4 5 6 вся ветка

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

Наверх




Память: 0.58 MB
Время: 0.083 c
15-1344972507
guest
2012-08-14 23:28
2013.03.22
conhost.exe...


15-1343248203
Юрий
2012-07-26 00:30
2013.03.22
С днем рождения ! 26 июля 2012 четверг


15-1352901277
ЕщеОдинКакжеНадоели
2012-11-14 17:54
2013.03.22
Удалить кусок текста.


15-1341007816
vasa777
2012-06-30 02:10
2013.03.22
0-Core


2-1341236271
>|<
2012-07-02 17:37
2013.03.22
Повторная загрузка изображения на форму, которая в DLL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский