eXeL@B —› Программирование —› Cube crackme by Promix17 |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 26 июля 2012 21:26 · Поправил: Promix_17 · Личное сообщение · #1 Давно возникла у меня одна интересная идея насчёт алгоритма проверки регистрационных номеров, но всё никак руки что-то не доходили... И вот, наконец, после долгих мучений и попыток навесить хоть какую-то защиту crackme заработал. Я думаю, что для успешного его решения нужно не сколько навыков реверса, сколько программирования, и это обнаружится на последнем этапе . Кто скажет, что крякми не решаемый - тот ошибется; можно математически доказать, что решение быстро находится. В общем, всем удачи и терпения))) Надеюсь, идея Вам понравится))) |
|
Создано: 26 июля 2012 21:27 · Поправил: Promix_17 · Личное сообщение · #2 |
|
Создано: 28 июля 2012 21:10 · Личное сообщение · #3 |
|
Создано: 28 июля 2012 22:06 · Личное сообщение · #4 Promix_17 Во-первых: про кнопку "Правка" знаешь, а все равно клепаешь сообщения (апаешь, да?) Во-вторых: Тут не очень сильно любят всякие разные крякмисы, кейгенми и т.д. Действительно интересных крякмисов тут не часто встретишь... В-третьих: на Crackmes.de тебе тоже не отвечают, поэтому ты тут решил тоже поспрашивать? Ну а по мне, так я его скачал, но еще не смотрел, не до этого пока ----- One death is a tragedy, one million is a statistic. |
|
Создано: 28 июля 2012 23:19 · Личное сообщение · #5 |
|
Создано: 28 июля 2012 23:55 · Личное сообщение · #6 |
|
Создано: 29 июля 2012 01:06 · Поправил: ajax · Личное сообщение · #7 ARCHANGEL пишет: перехват некоторых импортируемых функций декрипт кода в рантайме. если не ошибаюсь, есть кривизна хендлера (или это фича? daFix пишет: На удивление интересная штука ...не интересная старо, как мир ----- От многой мудрости много скорби, и умножающий знание умножает печаль | Сообщение посчитали полезным: NikolayD |
|
Создано: 29 июля 2012 09:59 · Личное сообщение · #8 |
|
Создано: 29 июля 2012 15:26 · Поправил: OKOB · Личное сообщение · #9 ARCHANGEL пишет: через которые осуществляется перехват некоторых импортируемых функций И где там такое счастье?? на int 3 весит: 1) jmp short 2) proc prolog 3) ret 4) push eax 5) call [proc] 6) call (согласен с исправлением -=AkaBOSS=-) ЗЫ написал ИДАвский скрипт котрый разксоривает все куски (6) (кроме секции ХХХ), отвязывается от исключения Инт 03 и двух элементов антиотладки. В ИДЕ можно свободно трейсить. С кучей крипто копаться лениво. Лучше на пиво. Скрипт пока не прикладываю, может кому еще нтересно с этим этапом повозиться. ----- 127.0.0.1, sweet 127.0.0.1 |
|
Создано: 29 июля 2012 15:35 · Личное сообщение · #10 |
|
Создано: 29 июля 2012 16:17 · Поправил: -=AkaBOSS=- · Личное сообщение · #11 OKOB пишет: 6) push imm_value не, это "call (relative_offset)", тоесть 0xE8 /ADD в аттаче полностью пофикшеный от всякой левой фигни крякми там и без всяких антиотладок есть над чем мозги попарить алго интересный Promix_17 пишет: Кто скажет, что крякми не решаемый - тот ошибется; можно математически доказать, что решение быстро находится если бы не эта фраза, забил бы сразу после того, как увидел MD5 8034_29.07.2012_EXELAB.rU.tgz - Cube.7z | Сообщение посчитали полезным: OKOB |
|
Создано: 30 июля 2012 21:09 · Личное сообщение · #12 |
|
Создано: 30 июля 2012 22:34 · Личное сообщение · #13 |
|
Создано: 30 июля 2012 22:42 · Поправил: Promix_17 · Личное сообщение · #14 |
|
Создано: 31 июля 2012 17:45 · Личное сообщение · #15 |
|
Создано: 31 июля 2012 22:07 · Личное сообщение · #16 Несколько замечаний: - Количество возможных состояний, которые надо брутить, меньше 5 млн. - ничто для современного компьютера - Алгоритм шифрования картинки поточный (если никто никак не может догадаться, то это seal), а т.к. в итоге необходимо получить bmp с известным всем заголовком, то это тоже можно использовать для оптимизации - В итоге кейген - это оптимизированный перебор |
|
Создано: 03 августа 2012 10:20 · Личное сообщение · #17 |
|
Создано: 03 августа 2012 11:16 · Поправил: -=AkaBOSS=- · Личное сообщение · #18 Promix_17 пишет: Все уже сдались? крипто брутфорсми не рулят /ADD: Promix_17 пишет: Блин, где здесь такой сложный брутфорс? По-моему, дело не в сложности Просто писать брут ключа для реальной программы, и ждать окочания перебора - это еще нормально Но для очередного крякми, автор которого применил готовый криптоалго, и предлагает сбрутить ключ... Как по мне, это трата и процессорного, и личного времени. Promix_17 пишет: Или Вы собираетесь 24 символьную строку рандомными перестановками перебирать? эту строку еще придётся перестановками обратить до уровня ключа, переколбашенного с именем, чтобы получить регкод. А это тоже время. И на брут, и на его написание. Не интересно. Имхо, лучше писать крякми, которые можно рассчитать хоть как-то, а не тупо брутить Хочешь продемонстрировать интересный способ защиты, придумай её сам.. Ведь всем и так известно, что навесить крипто на прогу можно, и даже не очень сложно, но в большинстве случаев, и в твоём тоже - уплывёт ОДНА валидная пара имя/код и защита пошла далеко-далеко ЗЫ: весь пост - одно большое имхо. простите, если кого задел. |
|
Создано: 03 августа 2012 12:59 · Поправил: Promix_17 · Личное сообщение · #19 |
|
Создано: 03 августа 2012 16:57 · Поправил: Promix_17 · Личное сообщение · #20 Во первых - тут нет никакого готовой криптографии в основной логике программы: - Программа на основе введённого имени изменяет своё внутреннее состояние - Затем внутреннее состояние программы снова меняется, но теперь уже в зависимости от регистрацинного номера - В случае успеха расшифровывается основная логика программы (с внутренним состоянием как ключом для расшифровки) Причем последний этап совершенно неважен с точки зрения взлома защиты и может быть реализован стандартными криптоалгоритмами. Вся суть защиты заключена в первых двух этапах, немножко подумав над которыми можно за совершенно небольшое время найти правильный ключ для регистрации программы. Криптография здесь была вставлена для исключения возможности тупо пропатчить программу. А что насчёт защиты ПО - то тут вообще сложно что-то разумное придумать, чтобы при возникновении хотя бы одной валидной пары защита сразу не капитулировала бы. Использовать параметры компьютера - бред, интернет-активация или всевозможные HASP - тоже самое... А хотя да, ступил я немножко, - надо было ещё жёстко задать имя пользователя как имя пользователя Windows или ещё что-нибудь сдалать в таком роде, тогда хотя бы ключ на одном компьютере не подошёл бы к другому... Хотя это тоже бы особо ничего не решило... |
|
Создано: 04 августа 2012 01:07 · Личное сообщение · #21 Promix_17 пишет: Цель - написать Keygen. Мой работает в среднем секунд 15. вот это вообще гениально. этот "кейген" брутит вводимый код на основе правильного ключа расшифровки, и ключа, который зашит в крякми и переколбашен с введённым именем я пытался реализовать брут - прошло ~11 часов, я результата не дождался а всё потому, что в случае неизвестного ключа расшифровки, каждый вариант проходит через расшифровку seal и подсчёт его мд5, что занимает весьма значительное время ну и еще потому, что у меня древний однояйцевый комп именно поэтому я и говорю - крипто брутфорсми не рулят |
|
Создано: 04 августа 2012 03:50 · Личное сообщение · #22 |
|
Создано: 04 августа 2012 13:06 · Личное сообщение · #23 Isaev пишет: это не даст разницы 15 сек против 11 часов что-то не доглядел или реализовал криво В крякми зашита строка-ключ На основе введённых имени и кода происходит перетасовка символов в ключе (см аттач) Потом этот ключ импользуется для расшифровки каких-то данных (автор пишет, что это ВМР картинка) После чего от этих данных берётся МД5 и сравнивается с эталоном Так вот, моему бруту приходится проходить через все этапы, начиная от перетасовки ключа на основе кода А в кейгене у автора по уже известному ключу подбирается код, который нужно ввести для какого-либо имени. Соответственно, алгоритмы брута существенно различаются, и могут отрабатывать разное количество времени. Хотя в своём бруте я тоже тупанул, но уже переписал и запустил опять. Уже почти час прошёл. Still waiting... 250a_04.08.2012_EXELAB.rU.tgz - code.7z |
|
Создано: 04 августа 2012 15:12 · Поправил: OKOB · Личное сообщение · #24 Promix_17 пишет: Количество возможных состояний, которые надо брутить, меньше 5 млн Длина ключа 24 символа, три из них (6й, 19й, 22й) остаются на своих местах, символов шесть (r0bWGY). Получаем комбинаторную задачу про число перестановок с повторениями Р21(4,4,4,3,3,3)=21! / (4! * 4! * 4! * 3! * 3! * 3!) = 1,71 * 10^13, что несколько больше заявленных пяти милионов. ----- 127.0.0.1, sweet 127.0.0.1 |
|
Создано: 05 августа 2012 23:59 · Поправил: Promix_17 · Личное сообщение · #25 Извиняюсь за задержку - выходные всё-таки. Итак: - Имеем Р(4,4,4,3,3,3) состояний и 3 операции перестановки, НО кто сказал, что 3 операции перестановки могут породить из начального внутреннего состояния всё множество Р(4,4,4,3,3,3)? Данные 3 операции разбивают всё множество перестановок на небольшие и равные по размеру группы. Как до этого можно догадаться - имеем 9 вариантов перестановки на каждом символе, всего символов в пароле максимум 11 => Имеем максимум 9^11 состояний. Это уже меньше 1,71 * 10^13. - Как я уже говорил, т.к. алгоритм шифрования картинки поточный, то можно расшифровать, например, первые два байта, сравнить их с сигнатурой "BM", и в случае успеха проверить оставшиеся данные. Это уже отсекает в среднем 65535/65535 всех проверок. - Ну и самое главное: как качественно написать брут. Грубая оценка сверху 9^11 не очень похожа на число меньшее 5 млн. Заметим, что если мы произвели перестановку 1 четыре раза, то вернулись в исходное состояние. Значит имея 3 типа перестановок и произведя одну из них при бруте нам не следует её брутить на следующем шаге - у нас остаётся лишь 2 варианта. Имеем тогда всего 6^10*3=181398528 состояний для перебора. Развивая эту мысль, можно догадаться, что нужно отсекать львиную долю проверяемых состояний, т.к. они уже нами проверялись - это и есть один из ключевых моментов всего перебора, который сокращает число 6^10*3 до нескольких миллионов. В принципе, я уже всё рассказал для решения данного crackme. Осталось немного подождать: кто же всё-таки первым сбрутит ключ и напишет кейген. Самое весёлое тут то, что можно буквально в уме и без помощи компьютера сгенерировать валидный ключ для своего имени))) Причём за время меньшее 10 секунд))) |
|
Создано: 06 августа 2012 05:41 · Личное сообщение · #26 OKOB ну хз... всё это конечно хорошо. Я тоже могу сделать кейгенми на брут, который сам могу сбрутить только за несколько суток Хотя знаю пару человек, которые могут сбрутить за несколько секунд... вот так вот ) А я не могу и мне интересен тот другой подход к решению данной проблемы. Может тут та же ситуация ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh |
|
Создано: 09 августа 2012 12:49 · Поправил: ajax · Личное сообщение · #27 Promix_17 если время есть свободное - займись тем, что в аттаче затраченное время на программинг ядра - ~2 дня (лет 10 назад) + 5 минут сейчас для 15 строчной проги на дельфи. никакого крипто и пака цель - пароль 4833_09.08.2012_EXELAB.rU.tgz - obtest.exe ----- От многой мудрости много скорби, и умножающий знание умножает печаль |
|
Создано: 09 августа 2012 16:47 · Поправил: Модератор · Личное сообщение · #28 Меньше времени, чем это девелопилось На всякий случай ключ в аттаче, если кто хочет сам. 3273_09.08.2012_EXELAB.rU.tgz - txt.txt |
|
Создано: 09 августа 2012 17:21 · Личное сообщение · #29 |
|
Создано: 09 августа 2012 19:24 · Поправил: ajax · Личное сообщение · #30 Archer пишет: Меньше времени, чем это девелопилось фи, все испортил меньше 5 минут? брякался на r/w символов строки (не стал это прикрывать)? Promix_17 специально для Вас, могу изменить пароль в принципе, можете глянуть и рассказать, как получили искомый Арчером пасс ----- От многой мудрости много скорби, и умножающий знание умножает печаль |
. 1 . 2 . >> |
eXeL@B —› Программирование —› Cube crackme by Promix17 |
Эта тема закрыта. Ответы больше не принимаются. |