![]() |
Re: "Защита" *.DLL
Cyan
я кстати имперу в асе предлагал такой вариант для ООП языков ето самое оно :) либа с одной функцией ... и что юзер с ней делать то будет ? :) impersonalis что мешает закапать ето все в exe с нормальным названием а потом при открытии банально распоковать в левую папку и запустить ? |
Ответ: "Защита" *.DLL
Хотелось бы узнать мнение Knightmare по этому вопросу.
|
Ответ: Re: "Защита" *.DLL
Цитата:
Конечно, можно было разобрать и этот код и восстановить ключ, но это совсем не то же, что прогнать фильтр chr()>31. Ну и, "уязвимости" подвластны не только блитцевые exe. Цитата:
|
Ответ: "Защита" *.DLL
В дополнении к генерации ключей, можно использовать приёмы антиотладки чтобы лучше защитить сам генератор. А вообще всё советы выше это скорее отправные точки, далее нужно подходить конкретно в зависимости от особенностей кода DLL. Для этого нужно сказать какому-нибудь челу чтобы он только и делал что взламывал эту DLL и на каждую уязвимость пилить патчи. В общем по возможности работать на опережение. |
Ответ: "Защита" *.DLL
Цитата:
Если ты делаешь что-то не особо популярное (или очень узконаправленное) и врядли над этим будет пыхтеть куча людей чтобы изломать и выкинуть на торренты, то можно особо не заморачиваться с защитой изощренной, потому как лишняя работа (ну разве что для лулзов, для лулзов как я уже писал можно хоть что делать без каких-либо обоснований). Если кого-то приспичит очень сильно, то все равно сломают, а большинство юзеров и с весьма простой защитой соснут. В целом обфусцированный кусок кода для проверки ключей, который в целях отдельного извращения можно размазать по функционалу либы, и частично на результат проверки завязать функционал (ну там из правильного куска ключа получается правильная константа и все работает верно), у нас был код который крашил не до конца поломанную (если остановится на проверке ключа и не втыкать что дальше в движке происходит) либу, например. Антидебаггерная защита тож полезной будет, потому как одно дело с дебаггером ковырять ассемблерную мешанину, а другое дело медитировать на этот самый ассемблер без возможности запуска. Плюс всегда можно написать свой упаковшик с самопальным шифрованием (но тут я не уверен насколько возможно в современных вендах с наглой мордой запихать в память код и сказать что его надо выполнять), тогда соответственно при инициализации DLL с верным ключом в память развернется уже непосредственно код с функционалом либы, но даже при возможности загрузки левого кода задача не самая тривиальная. А вообще по возможности можно все вынести на сервер, а в либе будет только связь с ним, типа отправить запрос, распарсить ответ. Тогда хоть заломайся в либе нихера толкового не будет, надо ломать уже сервер, что несколько сложнее, а если он правильно анально огорожен, то и практически невозможно (ну всякие там Heartbleedы всегда могут нарисоваться). Хотя этот вариант не везде подойдет (интернет сейчас есть в любом зажопинске, но для чего-то реалтаймового не подойдет очевидно). Алсо при этом подходе легко выпиливаются скомпрометированные ключи. Ну а если функционал либы уникальный и нужный кому-то, то этот кто-то согласится и на такие условия. И плюсом сюда крайне просто под разные платформы все это растиражировать, а если под какую-то и нет официальной либы, то кому надо сами запилят по документации к API. |
Ответ: "Защита" *.DLL
Цитата:
Цитата:
Еще больше проблем взломщику принесет виртуальная машина. То есть она ничего отлаживать не запрещает (присутствует пара методов, но они легко обходятся), однако вместо ассемблера у вас в отладчике непонятная каша, вследствие чего отладка становится попаболью (нет авт. анализа (IDA идет лесом), нет брейкпоинтов, никаких "констант" в коде и т.д.). Единственное решение для таких ВМ - заниматься распаковкой, но это задачка совсем не тривиальная и в принципе ВМ это лучшее из решений "на стороне клиента". |
Ответ: "Защита" *.DLL
Цитата:
С виртуальной машиной интересная штука, однако я считал что машины как раз наоборот помогают отлаживать код. |
Ответ: "Защита" *.DLL
Цитата:
|
Ответ: "Защита" *.DLL
Цитата:
Там есть демка в разделе Downloads. Цитата:
|
Ответ: "Защита" *.DLL
Цитата:
Цитата:
Цитата:
Но они в любом случае говорят что их фишка это работа в ring0, а всё остальное для полноты картины добавлено и менее эффективно. Хотя если конечно всё это применять в таком количестве то наверное что-то взломать после этого действительно будет трудно, но и самому разработчику не сладко придётся если его код будет как-то конфликтовать с методами защиты. Демку посмотрю. Цитата:
|
Ответ: "Защита" *.DLL
Виртуальные машины бывают разные.
У jvm, например, команд мало и они вполне очевидные (положить в стек, достать из стека, сложить два верхних и положить результат на стек)- такой код с чётким разделением на методы разбирать действительно проще. Но можно сделать наоборот: нафигачить сложных команд (дальше идут мои фантазии, дела с такими не имел), например, присваивание сразу нескольких регистров или переменных друг другу и что-нибудь в таком роде, реализовать в них алгоритм, можно ещё каких-нибудь левых вычислений добавить по ходу. Производительность сильно упадёт, но всем пофиг. Кроме того, "код" для вм можно будет расшифровывать по кусочкам прям во время выполнения, чтобы его в исходной программе в явном виде не было. насколько я понимаю, разобраться в том, что делает такая виртуальная машина, станет очень трудно - придётся понять, как работают её команды, а потом написать нечто вроде анализатора кода для такой машины, чтобы он наконец-то разобрался, какие переменные важны, а какие - не влияют на результат. И только потом можно будет докопаться до алгоритма. P.S. где-то читал, что в лаборатории Касперского есть софт, который умеет анализировать работу таких виртуальных машин без помощи человека. Цитата:
|
Ответ: "Защита" *.DLL
Ага всё попробовал демку.
Ну вроде работает но нагромождений дофига. Из ограничений: платная и только для Windows. Вот ещё кстати статейка, но правда старая, её смысл в том что нужно макросами указывать внутри своего кода что и как защитнику делать, т. к. полностью автоматический режим не очень хорошо справляется с задачей. Цитата:
Цитата:
|
Ответ: "Защита" *.DLL
Цитата:
Но если запустить код в виртуальной машине (я имею в виду что-то типа VirtualBox, а не те, которые обфусцируют код), то можно будет спокойно приостанавливать, читать память и делать прочие непотребства. Либо у них есть какие-то фишки, которые позволяют обнаружить факт выполнения кода в виртуальной машине, либо они тупо забили на этот вариант, что маловероятно |
Ответ: "Защита" *.DLL
Цитата:
Кстати демка которую я запускал не требовала инсталляции и не требовала прав администратора на запуск защищаемого софта, так что похоже действительно есть вариант, который работает в режиме пользователя. Единственное что меня смутило у Themid'ы нет цифровой подписи и Windows даёт соответствующее предупреждение при её запуске. |
Ответ: "Защита" *.DLL
Цитата:
Ты все время говоришь про какие-то там привелегии. Что ты имеешь в виду под "привелегиями" ? Отсутствие каких конкретно привелегий является проблемой для пакеров вроде темиды (исключая вариант с ring0 защитой) ? |
Часовой пояс GMT +4, время: 03:27. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot