«Если вы промолвите слово, получите тридцать ударов! Если сохраните молчание, получите тридцать ударов!» (с) Дэшан помедитируйте-ка на это, Rel и не переживайте, что я не на вашей и вообще ни на чьей стороне - я могу себе позволить быть человеком по отношению к кому угодно, почему бы и вам не попробовать?
ormoulu, в общем кипиже пропустили ваш вопрос по поводу асинхрона в защитах. Да были, конечно, такие программы, но взглянем на их создание с точки зрения разработчиков. Если вы это 3 с половиной человека и пишете некоторый специфичный продукт, то вам требуется расширение команды для создания своей нормальной защиты людьми, которые понимают _как_ это будет защищено и _почему_ это будет невозможно сломать без валидного ключа. Такой софт, наверняка узкоспециализированный (мало кто про него вообще знает) и пользуются им те же 3 с половиной человека и покупают его за деньги. Если вы это корпорация, которая у всех на виду, то все эти асинхроны поломают за интерес и на зло в ближайшее же время, используя первый же найденный валидный ключ. Как уже было сказано в этой же теме - всё ломаемо, что будет работать у вас локально на компутере при наличии ключа, а после взлома будет работать и не только лишь на вашем компутере. Ещё короче: сложная защита это личный гемор, а также дополнительный интерес, и мотиватор реверсёров. --- Сообщение объединено, 23 фев 2022 --- Дабы не быть голословным, вот мой личный опыт такой программы. Если в первых версиях серийный номер проверялся одной функцией, которая по сути ксорила на fuck разнообразные идентификаторы железа, то кейген писался тупым рипом защитной функции из IDA (а ломалось всё битхаком). В последующих версиях заасинхронили участки кода не относящиеся к демо версии, у меня не было ключа, взять его было негде (кроме как купить) и меня это остановило, вообщем-то. Последний раз когда интересовался ею, для этой программы вообще какой-то железячный ключ на флешке чтоле нужен был, ну, то же всё самое, наверное, просто покупать некому, тк лично мне не нужно.
В мире корпораций, да и вообще в цивилизованом мире все эти протекторы и без того давно стали чем-то неприличным, тем более что опенсорс правит бал. Это теперь локальный феномен местами по СНГ, да на паре сайтов вроде васма (тоже по СНГ). На практике применимость ограничена парой областей вроде малваре да читов с античитами. Вопрос в другом. Но по факту во времена популярности шароваре, и крякерства соответственно, эти три с половиной человека как только не изгалялись чтоб поинтереснее свой "кракмис" исполнить, некоторые похоже что половину времени разработки только на это тратили. И это не считая всяких вмпротов. Неужели тоже исключительно ради фана? И возможность поломать оставляли по той же причине? --- Сообщение объединено, 23 фев 2022 --- Опять же кейгены, почему ключи не делали криптостойкими?
Врядли ради фана, ради денег, конечно, и из непонимания больших и толстых косяков "защиты", которые они оставили в своих программах. Файнд говорил уже здесь это. В случае, что я привел выше, разработчик на делфе, совершенно очевидно, не отдуплял в первых версиях как эта его защита ломается\кейгенится и почему это легко и просто сделать.
Помню было эпично, когда кто-то незабвенный (а вот кто не помню, может Бэдгай?) провел исследование по взлому программ социнженерией, сэмулировав для этого юного имбецила школьника из бедной семьи и опубликовал результаты. Статья быстро стала популярной, и что меня тогда немало удивило так это что упомянутые разработчики вместо того чтоб написать "Да, уважаемый потребитель, обрати внимание что наша контора вся из себя благотворительная и социально ответственная" брызгали слюной и обещали "больше никогда и никому, хоть умирающего больного на каталке прикатите, ни единого ключика у нас не получите!".
Вот я делал простой модуль (правда на VB6) который ксорит весь код (за исключением расшифровщика) внешним ключом.
а Вот тращ делал и поксорил песь пейлоад на фак вместе с виртуальной машиной. Осмеюсь напомнить, ключом были адреса 4х функций из модуля для расшифровки декомпрессора, вм и прочей картинки, которую Инде предоставил в том же топе по ссылке в начале этого сообщения. /me есчо разок кончил^^
Мне немного лениво ходить по ссылкам (извините), но можно подробностей по поксорингу? Как я понимаю обычный ксор подбирается как нехрен делать просто по предположительным опкодам которые должны быть на том месте.
смотря что за ксор и как долго придется подбирать. легче для нативного модуля это валидный ключ, затем дамп и немного колдовства. как morgot сказал в теме по кракме: "у всех такой низкий уровень крякера чтоле?"
Дамп это несомненно хорошо во всех отношениях, но при отсутствии ключа как я понимаю простой ксор это не защита? Если поксореный код конечно больше никак не обфусцирован или там, не пожат хитрым образом.
Guardant Stealth. Гавно. Хороший у них только Guardant Code, фиолетовый. Но и то, "хороший" с оговорками.
f13nd, не шарю, но снимаю шляпу перед вашими знаниями! --- Сообщение объединено, 23 фев 2022 --- любое синхронное шифрование это суть ксор. и ключ может быть разной длины. да много чего может быть, чтобы никто не стал брутфорсить, а поискал ключ, который сам всё расшифрует
Не пойму, какое отношение имеет сложность шифрования к взлому программ? Выполнения программы предполагает, что весь пошифрованный код выполнится, а значит - ключ так или иначе достанется реверсеру. Ну да, простой ксор на 'fuck' можно сбрутить, а RSA нельзя, но толку то. Шифрование придумали для случаев, когда ключ неизвестен, есть только шифротекст. Не особо хороший реверсер, но могу сказать, что лучшей защитой является, наверное, онлайн активация + проверка время от времени на сервере. Вот там да, можно применять асиметричное шифрование. И то - в теории, все можно перехватить и взломать.
Такая привязка к серверу ничем не лучше того же вон Guardant Stealth, который фактически является хранилищем ключей шифрования. Такие защиты держатся на том, что программа становится Неуловимым Джо, в которой просто не станут рыться за те деньги, которые за это дадут. Вообще пользование пиратским ПО, особенно в коммерческих целях - так себе удовольствие, поэтому граждан, тоговых дать много денег за отлом, исчезающе мало. Почти идеальная и почти непобедимая защита это когда часть функционала программы вынесена на сервер или в донгл, причем такая часть, которую нельзя ни отреверсить ни сэмулировать табличным способом. Но такой подход требует определенных усилий со стороны разработчиков и тупо понимания как будет действовать реверсёр (которого у большинства программистов нет), поэтому встречается редко.
f13nd, но как такое обходят (привязка к серверу)? Нужно поднять левый сервер + отреверсить логику протокола - но если там SSL , это весьма непростая задача. И почему тогда не могут взломать айфоны, в плане разблокировать, сделав левый сервер? Донгл это флешка? А почему нельзя повторить ее функционал? По выносу логики на сервер - тут да, но вопрос в быстродействии, наверное..
На всех уровнях передачи можно эмулировать, в том числе тупо перехватом апей. Донгл это контроллер. Разница в том, в каком качестве его используют. Повторить функционал можно, но только если ты можешь этот функционал воспроизвести. Например в программе, которая шьет какие-нибудь устройства, есть несколько тысяч профилей устройств, содержащих ключ для динамической авторизации на устройстве и параметры записи и прочего. Профили зашифрованы заранее, размер выравнен например до 128 байт, чтобы казалось, что там есть соль. Профиль передается донглу, он его расшифровывает и оставляет себе ключ авторизации, остальное возвращает. Когда приходит очередь авторизоваться донглу отдается сид, он считает алгоритмом (которого у тебя нет) с ключем (которого у тебя нет и он передан неявно) кей и возвращает. Обычно в таких случаях снимают таблицы: всё многообразие сидов сопоставляется со всем многообразием кеев (для 4х4 байта это 0x100000000*4=16Гбайт), но залупа в том, что эта таблица всего для одного из нескольких тысяч профилей. И как бы это тупик, хорошего решения нет. Теоретически используя один сид можно расфасовать профили по группам, в которых ключ одинаковый, и снять таблицы для каждой группы, но это уже для самых отчаянных. И в лучшем случае отлом будет весить несколько сотен гигабайт, что немало удивит заказчика.
Ну лан, раз вы перестали сраться и начали говорить по теме, го второй раунд? Во втором раунде вас ждет еще больше бесполезного рандома, еще больше высокоуровневого цэшного мышления, еще больше булевых переменных и всего того, что вы любите. Опять же никаких спецовых спецов к участию не заставляю, но не стесняйтесь, никаких убер сложных технологий вас само собой не ждет, вы же про меня уже все всё поняли, та же ВМ, но немного другой вид. И реквестую, чтобы в этот раз и мюсье TrashGen тоже подключился, а то скучно без него, все слишком серьезные.
Не сильно че-то поменялось. Очень остроумный ход с вызовом обработчика 0x49 дважды чтобы проконтролировать не пропатчен ли он, хотя как бы решается простенькой врезкой со счетчиком. Но ладно, если псевдокод надо патчить, таки могём и такое. Искомый вызов 0x49 образуется из 0x8C^0xC5 в псевдокоде, я хочу например заменить обработчик на 0x5E, понравился он мне содержимым. Для этого патчу 0xC5 на 0xD2 и опять предсказуемый успех. Код (Text): #882B: D2