Как стать автором
Обновить

Комментарии 24

А если, например, незначительно менять ход выполнения программы? Например, при запуске мы куда-то сохраняем дату запуска, просим данные для пяти справочников и прочее. Все эти действия можно делать в любой последовательности. Таких мест в программе обычно много. Меняя вызовы методов в этих последовательностях мы можем создавать уникальные сигнатуры. По-моему, определить, можно ли менять последовательность вызовов метода непросто.
Если я верно понял — требуется «инвариант» — имманентное свойство программы, не зависящее от бинарника.
Последовательность запроса данных выливается во что? Вроде бы в бинарник, CRC/SHA/MD5 которого мы «знаем».
Но если крякер перепакует бинарник, то понять какой именно CRC/MD5 был изначально — нам не дано. Автор «наложил запрет» на реверсный инжиниринг бинарника.
Единственное, что я могу предположить, это писать лог «спросил фамилии, спросил имена» и отличать его от лога «спросил имена, спросил фамилии». Либо иметь свой монитор на источниках данных, который покажет нам последовательность запросов.

Что касается автора статьи, то я не могу понять как он гарантирует, что при перемене пароля юзер (стандартная секурная процiдурка) не обрушит логику софта. Вероятно он имел в виду вместо Pass нечто вроде LicensedTo.
Вашу программу на этот раз крадёт хакер

Не хакер, а крякер.
Да какая разница кто именно крадет ;)
Если не видеть разницы, то усилия по защите будут неэффективными.
Оптимальная защита строится на противодействии чётко классифицированным рискам.

Но суть замечания не в этом, а в том, что уже достали журналистские штампы.
Слово «хакер» обозначает других людей с другими видами деятельности и, на практике, весьма редко пиратов.
Я, возможно, сейчас глупость скажу — но что если взломщик получит два или больше экземпляров программы — что помешает ему в таком случае обнаружить отличия и тем самым выяснить точное место в коде, где создаются вотермарки?
Индвидуальность софта. Ему придётся грабануть две трейдерские конторы, а лучше три.
Я не увидел в посте уточнения, о каком типе софта идет речь — возможно, о бухгалтерском, и попросить друга ФЛП Васисуалий Веревочкин купить за деньги взломщика еще один экземпляр на свое имя, должно быть тривиальным.
А… Крякер — дело принципа, а не денег. Тратить через подставное лицо не станет.
Здесь просчитывается сценарий: трейдинговый софт, две конторы «успешно автоматизированы». В городе (или соседнем) проявляется третья контора с таким же софтом, но без лицензии. Требуется наложить санкции на одного из двух лицензиатов.
Случай специфический, но, надо полагать, не редкий.
В статье поднимается хоругвь на борьбу с этим случаем.
Место как раз не точное, каждый раз среди функций, отвечающих критериям «крупности» и вероятности выполнения, выбирается N случайных, в которые внедряется ватермарк. Соответственно в разных программах место так же будет отличаться. Коме того, в усиленном варианте на данные ватермарка буде завязано множество других функций и выпилить его будет весьма проблематично.
А разве апаратные ключи типа HASP, которые может выдавать клиенту только сам производитель ПО, не решают проблему в тех случаях, когда количество клиентов ограничено и контролируется?
Другое дело, что такими методами можно доказать свое авторство библиотеки, которая распространяется бесплатно или условно бесплатно.
Да, аппаратные ключи — хорошее решение, когда клиентов не много и продукт большой. Мы скорее всего добавим их поддержку в Appfuscator в будущем. Но утечку дистрибутива они идентифицировать не помогут, в отличии от Watermark.
кроме того что HASP по сути проверяет наличие ключа _и все_ (ну иногда — умееет сложную формулу считать)
более продвинутый вариант — ключи вроде SenseLock — переписываем небольшой но критичный кусок программы на ANSI C, загружаем в ключ, и потом вызываем из ключа, нет ключа — нет данных. от взлома Senselock защищен… хорошо. Включая взлом аппаратными средствами. Недостаток — процессор там… не особо мощный, в России они есть.

другой вариант той же идеи — Guardant Code — с защитой ключа от взлома аппаратными средствами похуже но зато — существенно более быстрый процессор

Да, речь, в первую очередь, шла именно про SenseLock. С ним у нас есть опыт работы.
Про Guardant Code слышу впервые, спасибо, обязательно посмотрю на досуге.
Вы не правы. HASP выполняет шифровку/расшифровку произвольных данных при помощи симметричного алгоритма с зашитым ключом, содержит собственные часы и перезаписываемую память. Все это можно и нужно использовать. Проверка только наличия ключа — плохая практика.
> переписываем небольшой но критичный кусок программы на ANSI C, загружаем в ключ

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

есть кстати VMProtect SenseLock Edition — товарищи в ключ перенесли часть кода 'обычного' протектора (какую именно часть — не говорят, и говорят что интеграция руками все равно полезна очень даже, но если на это нет времени то....)
А почему метку нельзя вставить в иконку основного exe-файла каким-нибудь стеганографическим методом типа LSB?
Можно, но если кто-то об этом узнает то удалить ее будет крайне просто :)
А мы никому не скажем :)
Но это не гарантирует что никто не догадается :) Как минимум, можно заметить что меняется иконка при отправки на обфускацию типового пустого приложения. Второй минус метода — вместимость хранения данных ограничена.

Но никто не мешает совмещать несколько методов ватермарков. Шанс что хакер вычислит их все, существенно меньше. Статья как раз направлена на всестороннее рассмотрение данной проблемы.
Хы
Автор публикации: Дмитрий Косолобов, разработчик Appfuscator.


Bitdefender Antivirus Free Edition has blocked a page!
Malware detected!
Access to this page has been blocked.
Даже не знаю что могло не понравиться Bitdefender. Неужели Яндекс метрика (кросдоменный запрос)?
Скорее всего не стали разбираться, для чего это сделано.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории