Pull to refresh

Comments 76

UFO just landed and posted this here
Я понимаю. Поэтому для статьи я выбирал наиболее простой вариант, чтобы на нем можно было обучить.
Самая интересная и крутая защита, которую приходилось отламывать:

Прога под дос, переходит в защищенный режим, делает кучу телодвижений с таблицами дескрипторов, попутно распаковываясь, затем читает определенные сектора HDD через порты. Время: две недели почти круглосуточно, т.к. фактически приходилось эмулировать все действо в Win SoftICE. Назначение софта: некая оболочка для работы с швейным оборудованием.
У меня тоже есть свой опыт «самой крутой» ненавесной защиты. Но описать ее кейгенинг в статье просто нереально, т.к. будет множество отсылок на «набитую руку» и «намыленный взгляд».
Читать про такое всегда интересно.
Нестандартные приёмы работы с ОС (а порой и оборудованием) и их обход — это читается как детектив.
Так что пишите!
В каком году это было?
Возможно ли было заэмулировать всё это дело в Bochs, к примеру? (там есть встроенный отладчик)
Более 10 лет назад, про Bochs тогда еще не слышал… Сомневаюсь что получилось бы проще.
такое и защитой-то язык не поворачивается назвать. уж очень громкое название статьи :)
Мне тоже непонятно, почему автор решил открыть тут филиал кряклаба для самых маленьких. Таких статей базилион на профильных сайтах. Но если пипл хавает, то пусть будет.
Не так уж и много статей по кейгенингу. Их раз-два и обчелся.
Давайте я поясню почему я к вам придираюсь. Мне кажется, что на хабр следует писать статьи, в которых описывается что то новое и эксклюзивное. Вот ВМПрот, например, еще публично никто не разобрал, это было бы интересно. А такие вот новичковые статьи про патчинг, кейгены из CRC32, которых реально сотни, я считаю не совсем тут к месту.
Дайте мне в личку хоть одну статью про "кейгены из CRC32". Тогда я с вами соглашусь.

И почему новая статья о процессе кейгенинга известного продукта не является «новой и эксклюзивной»?
exelab.ru/art/?action=list&f=8 Выбирайте на свой вкус. Куча статей о кейгенах к реальным известным продуктам. Продуктов много, а статей об интересных защитах единицы
Читал я эти статьи. Не все из них простые для понимания и не ко всем из них уже можно достать ломаемый софт. Затем, я решил воспользоваться новыми (с 2005 года — даты последней статьи) представившимися возможностями в плане софта: IDA Pro (именно статья, в которой используется IDA Pro), HexRays, возможность втиснуть скриншоты. На exelab все статьи чисто текстовые.
Спасибо за статью, всегда читаю такие с интересом.
На exelab-е есть возможность выкладывать статьи в файлах, например *.doc.

PS: покопался там в архивах и увидел свою статью… ностальгия по былым временам.
VMProtect публично никто не хочет разбирать лишь потому, чтобы софт, защищенный им, можно было ломать, не опасаясь выхода новой версии протектора. Собственно, так со многими навесными защитами и происходит, если они достаточно тяжелые для снятия.
У нас больше всего не расскрывают эти знания лишь потому что на этом можно рубить бабло. )
Именно!) Ведь опытный крякер в первую очередь думает о возможном заработке на своем умении, а потом уже о релизах для команды.
А вот вы могли бы на пальцах объяснить, что такого делает VMProtect, что его настолько сложно взломать?
Ну то есть в программе всё равно где-то должна быть проверка вроде if (key.IsValid()), где можно всегда возвращать условный true.
Очевидно, что это не так, но в чём сложности и как именно запутывают не осознаю.
На самом деле VMProtect не такой уж и крутой протектор, его фишкой является возможность обфускации кода или интерпритация на собственных виртуальных машинах, такое сложно исследовать и патчить, так как условный переход может быть размазан на десяток ветвлений и т.п.
И много в последнее время на Хабре нового и эксклюзивного? Внезапно — для меня этим оказались две статьи DrMefistO.
Почему вы отсылаете людей на всякие непонятные профильные ресурсы, если все отлично (и в тему) расписано тут?
Туториалы по взлому — тема скользкая. Наверняка рано или поздно этот пост увидит и создатель игры (кто-нибудь ему/им ссылку-то точно скинет на Гугл Транслейт). И тогда это приобретет неприятный оттенок. Можно исследовать что угодно, но не стояло выкладывать алгоритм генерации на Хабр — это мерзко. Статья могла остаться интересной и без него.

А по поводу самой защиты — соглашусь с тем, кто сказал, что её тут и нет вовсе. Разработчики достаточно наивно подошли к этому вопросу. С верой в лучшее, так сказать.
Вы правы. Поэтому некоторые моменты я сознательно опускал, чтобы прям целиком не выкладывать работающий код.

Но, в свое оправдание, я могу сказать, что авторам писал еще давным давно, с той целью, чтобы они улучшили алгоритм. Плюс, ажиотаж к игре прошел.
Пфф, есть мнение, что наличие кряка на продажах не особо отражается. Для массового софта.
К тому же rip этого лимбо на любом торрент-трекере можно найти и даже кейгеном пользоваться не придется.
Для этого существуют crackme и keygenme. Можно найти уровень защиты на свой вкус, не затронув ничьих интересов.
Верно. Но, порой хочется реальных «боевых» условий, т.е. пощупать именно софт из живой природы, а не специально для этого написанный.
В моем понимании лицензионная защита — это то, каким образом сделана лицензионная система в программе.
А где традиционное… «Вся приведенная в статье информация предназначена исключительно для образовательных целей. Все ваши действия вы производите на свой страх и риск. Автор не несет ответственности ни за какие последствия Ваших действий»?
Покупайте хорошие инди игр, не ломайте их. Маленькие независимые разработчики игр, все же, в первую очередь думают, как игру сделать, а не защиту похитрее написать. Говорю от лица инди гейм девелоперов. :)

Вот статья про взлом защиты какого-нибудь энтерпрайз софта была бы намного интереснее и циничнее имхо.
Я полностью с вами согласен! Но, опять же, цель не в том, чтобы обидеть разрабов (им я писал, но ответа не получил), а чтобы кто-то не сделал это с плохой целью (например, барыженье ключами).
Можете сразу от интересного к полезному перейти — предложить разработчикам методы улучшения защиты ))
Ответа на мое письмо, отправленное разрабам еще 12.04.13, я не получил. Значит улучшать защиту они не хотят. Да и смысла нету уже: все кто хотели, купили и сыграли.
Я думаю, что они и без вас прекрасно понимают, что их игру легко сломать и не пытались это решить, в надежде, что найдутся люди, которые принципиально купят, даже если кряк будет лежать по соседней ссылке.
В любом случае, статься достаточно интересная, хоть и косвенно поощряет не самые порядочные пути в жизни.
=) Я всегда считал и буду считать: "If you like it, you will buy it!"
Выше в комментариях я встретил упоминание что это не защита и т.д.
Так вот что я хочу сказать, если Вы прочитали просто много статей про обход защиты и Вам кажется что это слишком просто, то попробуйте на примере автора обойти своими ручками ходить одну защиту, даже самую простую.
Автору спасибо, т.к. эта тема очень специфическая и очень интересная.
А если человек делает вывод не по прочитаным статьям, а по реальному опыту, тогда что?
Если кому — то просто, то не стоит заходить в топик. darked
REU Предполагается что Вы родились сразу со «скилом» Взлома?)
Когда я начинал у меня не было интернета и статей ) а были диски с варезом и в каком-то из них было пару хтмл о отладке и патчинге винрара выдраных с какого-то сайта, пропатчил по ней винрар, немного понял суть, пропатчил вторую, третью,… программу. Потом появился кое какой интернет и желание кейгенить, решил попробовать на простеньком кейгенми, алгорит понимал, но как обратить нет, создал тему на кряклабе (одна с первых :) ) мне там объяснили (да, тогда еще там помагали новичкам :) ) я снова понял суть, и снова много практики во время которой постигаешь новые приемы и техники, всё. )
А я начинал вообще с перевода консольных игр на русский язык. Отсюда появилась тяга к реверсу.
Дальше: статьи кряклаба, крякмисы… Писал много статей по патчингу популярных программ.

А затем я понял, что патчи — не тот уровень уже. Надо бы и кейгены научиться делать. Так я и написал свой первый кейген.)
Столько воды утекло.

Потом, списавшись с одним челом по поводу ArtMoney (о которой я тоже как-нибудь напишу), я решил попробовать вступить в одну реверс-команду. Так я и стал участником той тимы, которая чуть ниже в комментах засветилась на скрине)
Поддерживаю всех поддерживающих автора ) Спасибо за статью. Если кому — то просто, то не стоит заходить в топик.
Интересен не сам взлом как таковой — а как логическая задача. Интересно почитать ход мыслей, посмотреть примеры пользование инструментарием.
Скажите, а возможно ли модифицировать функцию sub_48D410 чтобы она возвращала всегда корректность ключа, так ли создаются таблетки?
Статья очень интересная, спасибо.
Именно так и создаются патчи/патченые ехе-шники.
Да, можно, и так делают самые простые патчи.
У этого способа есть один минус — меняется исполняемый код. Т.е. из другого места можно просканировать собственный код и понять, правили его или нет.
К примеру, если где-то в дальше игре есть код, который вычисляет MD5 участка кода с защитой, и полученным числом расшифровывает какие-нибудь ресурсы, которые используются ближе к концу игры, то это может вызвать некоторое недовольство воспользовавшихся патчем (а обычно просто проверяют — запустилось или нет). Кстати, такое поведение вполне может стимулировать продажи игры.

Кстати, ещё можно вызывать функцию CheckSerial() с заведомо неправильным номером и, если она вернула True, считать код пропатченным и действовать соответственно.
Именно поэтому кейген всегда лучше! Но он и усилий больших требует, понятное дело.
если где-то в дальше игре есть код, который вычисляет MD5 участка кода с защитой...

… и подселяет неубиваемого скорпиона :)
Это по аналогии с неубиваемым Шреддером?
К счастью, я про него только слышал — у меня, насколько я помню, все Шреддеры убивались.
А я сделал реверсинг картинке :)

image
Restorator 2007 — D:\TPORT\unepic_ko\limbo\limbo.exe


Я прав?
Вы правы!) Просто не хотел папку палить) Ибо это цель следующей статьи) Да и имя тимы светится)
Неудачно получилось))
Простенькая защита.
Не знал, что код можно так легко декомпилировать обратно в си, просто асмовый код читал сразу.
Для того что бы «можно так легко декомпилировать обратно в си» нужно одать несколько килобаксов.
первым делом, как обычно, выясняем, на чем написан главный исполняемый файл.
Видим: Visual Studio 2008.


Это ещё как бы ни о чём не говорит. Вот вам, для разнообразия, крякми, который Exeinfo PE распознаётся как «Microsoft Visual C++ 9.0 — Visual Studio 2008», но написан не на VS:

CrackMeLV.7z

Кстати, сможете отреверсить пароль, который приведёт к результату, отличному от Access Denied? Ну или как минимум модифицировать исполняемый файл, так, чтобы в ответ на любой пароль получить доступ (это сильно проще)?

image

Вирусов там нет, деструктивных действий код не выполняет, все рантайм библиотеки приложены, исходники естественно вышлю по запросу. Пароль существует и однозначно реверсится из кода.
Челендж — если будет угодно.
Я знаю, как бы я стал ломать эту штуку (но у меня подход предвзятый, поскольку сам её и написал), но любопытно, как вы подойдёте к снаряду (если есть время недолгими весенними вечерами). Там есть пара забавных мест. Зубодробительных алгоритмов для проверки пароля и обфускаций там не заложено, а изюминка — именно в использованном, скажем так, несколько нетрадиционном, средстве разработки.
Программы идентификаторы подсказывают, чем скомпилирована программа, в первую очередь.
Что-то оно не похоже на крякми…
Ну, тут либо крякать, либо кейгенить. Вполне можно.
Я к тому что внутри много чего лишнего
Об этом, и о многом другом я хотел написать позже)
Это так. Рантайм там весьма увесистый. Собственно в коде лишнего почти нет, хотя я немного «разнёс» места, где производится нажатие и собственно сравнение. Но чтобы туда добраться, придётся продраться через дебри рантайма, да.
Чем же не похоже? Мне казалось, крякми примерно так и выглядят — ну разве что поле «Password» — его кто «Key», кто «Serial» называет. А в остальном — есть исходный код, он скомпилирован в исполняемый файл. Все библиотеки, что там в архиве — они к среде исполнения относятся (их там два рантайма). По идее их надо было инсталляторами разворачивать, но я их бросил в ту же директорию для удобства.
Если крякми с вашей точки зрения по-другому должен выглядеть — напишите как.
Бывает ещё кейгенми — там обычно два поля, связанных алгоритмом и требуется написать программку, воспроизводящую зашитый туда алгоритм.
Я правильно понимаю, если игрушку защитить чем-то таким — написать кряк или ещё как-то поломать вообще не получится?
отсутвующий код или часть приложения никогда ни при каких условиях не покидает доверенные сервера

Как минимум, если это правда, приложение без доступа в инет вообще будет неработоспособно (очень сомнительная защита).

В студенческие годы пытался создать нечто подобное, но с реализацией в аппаратном устройстве со спец. FPGA процем, идея была в том что без этого спец. устройства код, даже сграбленый, будет тормозить на настольном ПК, но дальше теорий все это не ушло.

Если наврали — то как минимум одному человеку придется таки купить, ну а потом собрать «полную локальную версию» — дело техники )
Ну, я так понял что защита для сетевых игрушек, которые без инета и так не работают нормально
Как правило, в сетевых игрушках и так легко вычислить\забанить левых пользователей не особо изощряясь, поэтому польза от такой навороченной защиты сомнительна. Неизвестно, есть ли у них вообще поддержка js и пр. В примере на сайте у них «Сапер» и Notepad++ на сях, и метки именно в код в VS встроены, похоже они ориентированы на защиту «локального» десктопного софта.

Но вообще все это попытки продать то, что умерло 10 лет назад, под новым соусом…
Про js не знаю, на сайте вроде ничего нету про такое. Про игрушки знаю только что тренировались на Doom 3 и на TTD, вроде норм работает.

А что 10 лет назад умерло, если не секрет?
Ну весь этот рынок навесных защит, armadillo, execryptor и т.п. Вообще в первую очередь «умер» рынок десктопного софта, все ушло в веб и на моб. платформы…
Вы назвали 2 прота, которые сами уже умерли и не поддерживаются )
Выше правильно заметили про ассиметричную криптографию. Смотрел как-то софт, а там обычная RSA, простенько и со вкусом. Повезло, что 256-битная оказалась, удалось разложить. А начиная самое позднее с 1024 можно тушить свет.
Эм, это имеется в виду однонавправленное шифрование серийника в наборе процедур которые скажут «серийник валиден, работай на здоровье»?
Примерно так. Серийник (с дополнительными данными по вкусу, типа имени клиента) шифруется приватным ключем, а программа пытается расшифровать публичным.
По типу защиты примененной в FL Studio от Image Line?
Sign up to leave a comment.

Articles