Форум: "Прочее";
Текущий архив: 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