Сейчас на форуме: _MBK_, UniSoft, laslo (+11 невидимых)

 eXeL@B —› Программирование —› Cube crackme by Promix17
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 37.1 (посетитель), 11thx
Активность: 0.030
Статус: Участник

Создано: 26 июля 2012 21:26 · Поправил: Promix_17
· Личное сообщение · #1

Давно возникла у меня одна интересная идея насчёт алгоритма проверки регистрационных номеров, но всё никак руки что-то не доходили... И вот, наконец, после долгих мучений и попыток навесить хоть какую-то защиту crackme заработал. Я думаю, что для успешного его решения нужно не сколько навыков реверса, сколько программирования, и это обнаружится на последнем этапе . Кто скажет, что крякми не решаемый - тот ошибется; можно математически доказать, что решение быстро находится. В общем, всем удачи и терпения))) Надеюсь, идея Вам понравится)))



Ранг: 37.1 (посетитель), 11thx
Активность: 0.030
Статус: Участник

Создано: 26 июля 2012 21:27 · Поправил: Promix_17
· Личное сообщение · #2

Файл что-то сюда не залился... Вот ссылка.



Ранг: 37.1 (посетитель), 11thx
Активность: 0.030
Статус: Участник

Создано: 28 июля 2012 21:10
· Личное сообщение · #3

У кого-нибудь есть идеи?




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 28 июля 2012 22:06
· Личное сообщение · #4

Promix_17
Во-первых: про кнопку "Правка" знаешь, а все равно клепаешь сообщения (апаешь, да?)
Во-вторых: Тут не очень сильно любят всякие разные крякмисы, кейгенми и т.д. Действительно интересных крякмисов тут не часто встретишь...
В-третьих: на Crackmes.de тебе тоже не отвечают, поэтому ты тут решил тоже поспрашивать? --> Crackmes.de <--...

Ну а по мне, так я его скачал, но еще не смотрел, не до этого пока

-----
One death is a tragedy, one million is a statistic.





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 28 июля 2012 23:19
· Личное сообщение · #5

Я тоже скачал, глянул очень мельком, через векторную обработку исключений хукаются int3, через которые осуществляется перехват некоторых импортируемых функций. Но некогда разбирать крякмис, лабиринт не ждёт.

-----
Stuck to the plan, always think that we would stand up, never ran.





Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 28 июля 2012 23:55
· Личное сообщение · #6

Promix_17
На удивление интересная штука. Сейчас нет времени всё восстанавливать, но гляну когда будет побольше свободного времени

-----
Research For Food





Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 29 июля 2012 01:06 · Поправил: ajax
· Личное сообщение · #7

ARCHANGEL пишет:
перехват некоторых импортируемых функций

декрипт кода в рантайме. если не ошибаюсь, есть кривизна хендлера (или это фича?
daFix пишет:
На удивление интересная штука

...не интересная старо, как мир

-----
От многой мудрости много скорби, и умножающий знание умножает печаль


| Сообщение посчитали полезным: NikolayD


Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 29 июля 2012 09:59
· Личное сообщение · #8

через векторную обработку исключений хукаются int3, через которые осуществляется перехват некоторых импортируемых функций

Тю, так ведь это же арма так делает )))

-----
StarForce и Themida ацтой!





Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 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





Ранг: 568.2 (!), 465thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 29 июля 2012 15:35
· Личное сообщение · #10

OKOB пишет:
И где там такое счастье??

Ну он наверно неправильно обозвал call [proc]

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.





Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 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

Ранг: 37.1 (посетитель), 11thx
Активность: 0.030
Статус: Участник

Создано: 30 июля 2012 21:09
· Личное сообщение · #12

Кто на последней стадии решения?




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 30 июля 2012 22:34
· Личное сообщение · #13

Promix_17 пишет:
Кто на последней стадии решения?


Что есть последняя стадия? И вообще это crackme или keygenme. Что пойдет в зачет?

-----
127.0.0.1, sweet 127.0.0.1




Ранг: 37.1 (посетитель), 11thx
Активность: 0.030
Статус: Участник

Создано: 30 июля 2012 22:42 · Поправил: Promix_17
· Личное сообщение · #14

Цель - написать Keygen. Мой работает в среднем секунд 15.

После первой успешной попытки ввода имени и серийного номера Вам всё сразу станет ясно.

Могу ответить ещё на некоторые не слишком критичные вопросы.



Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 31 июля 2012 17:45
· Личное сообщение · #15

Promix_17 пишет:
Могу ответить ещё на некоторые не слишком критичные вопросы.

та давай уже валидную пару



Ранг: 37.1 (посетитель), 11thx
Активность: 0.030
Статус: Участник

Создано: 31 июля 2012 22:07
· Личное сообщение · #16

Несколько замечаний:

- Количество возможных состояний, которые надо брутить, меньше 5 млн. - ничто для современного компьютера

- Алгоритм шифрования картинки поточный (если никто никак не может догадаться, то это seal), а т.к. в итоге необходимо получить bmp с известным всем заголовком, то это тоже можно использовать для оптимизации

- В итоге кейген - это оптимизированный перебор



Ранг: 37.1 (посетитель), 11thx
Активность: 0.030
Статус: Участник

Создано: 03 августа 2012 10:20
· Личное сообщение · #17

Все уже сдались?




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 03 августа 2012 11:16 · Поправил: -=AkaBOSS=-
· Личное сообщение · #18

Promix_17 пишет:
Все уже сдались?

крипто брутфорсми не рулят

/ADD:
Promix_17 пишет:
Блин, где здесь такой сложный брутфорс?

По-моему, дело не в сложности
Просто писать брут ключа для реальной программы, и ждать окочания перебора - это еще нормально
Но для очередного крякми, автор которого применил готовый криптоалго, и предлагает сбрутить ключ...
Как по мне, это трата и процессорного, и личного времени.

Promix_17 пишет:
Или Вы собираетесь 24 символьную строку рандомными перестановками перебирать?

эту строку еще придётся перестановками обратить до уровня ключа, переколбашенного с именем, чтобы получить регкод. А это тоже время. И на брут, и на его написание. Не интересно.

Имхо, лучше писать крякми, которые можно рассчитать хоть как-то, а не тупо брутить
Хочешь продемонстрировать интересный способ защиты, придумай её сам..
Ведь всем и так известно, что навесить крипто на прогу можно, и даже не очень сложно,
но в большинстве случаев, и в твоём тоже - уплывёт ОДНА валидная пара имя/код и защита пошла далеко-далеко

ЗЫ: весь пост - одно большое имхо. простите, если кого задел.



Ранг: 37.1 (посетитель), 11thx
Активность: 0.030
Статус: Участник

Создано: 03 августа 2012 12:59 · Поправил: Promix_17
· Личное сообщение · #19

Блин, где здесь такой сложный брутфорс? Или Вы собираетесь 24 символьную строку рандомными перестановками перебирать? Алгоритм работы программы намного более детерминирован.



Ранг: 37.1 (посетитель), 11thx
Активность: 0.030
Статус: Участник

Создано: 03 августа 2012 16:57 · Поправил: Promix_17
· Личное сообщение · #20

Во первых - тут нет никакого готовой криптографии в основной логике программы:

- Программа на основе введённого имени изменяет своё внутреннее состояние

- Затем внутреннее состояние программы снова меняется, но теперь уже в зависимости от регистрацинного номера

- В случае успеха расшифровывается основная логика программы (с внутренним состоянием как ключом для расшифровки)

Причем последний этап совершенно неважен с точки зрения взлома защиты и может быть реализован стандартными криптоалгоритмами. Вся суть защиты заключена в первых двух этапах, немножко подумав над которыми можно за совершенно небольшое время найти правильный ключ для регистрации программы. Криптография здесь была вставлена для исключения возможности тупо пропатчить программу. А что насчёт защиты ПО - то тут вообще сложно что-то разумное придумать, чтобы при возникновении хотя бы одной валидной пары защита сразу не капитулировала бы. Использовать параметры компьютера - бред, интернет-активация или всевозможные HASP - тоже самое...

А хотя да, ступил я немножко, - надо было ещё жёстко задать имя пользователя как имя пользователя Windows или ещё что-нибудь сдалать в таком роде, тогда хотя бы ключ на одном компьютере не подошёл бы к другому... Хотя это тоже бы особо ничего не решило...




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 04 августа 2012 01:07
· Личное сообщение · #21

Promix_17 пишет:
Цель - написать Keygen. Мой работает в среднем секунд 15.

вот это вообще гениально.
этот "кейген" брутит вводимый код на основе правильного ключа расшифровки, и ключа, который зашит в крякми и переколбашен с введённым именем

я пытался реализовать брут - прошло ~11 часов, я результата не дождался
а всё потому, что в случае неизвестного ключа расшифровки, каждый вариант проходит через расшифровку seal и подсчёт его мд5, что занимает весьма значительное время
ну и еще потому, что у меня древний однояйцевый комп
именно поэтому я и говорю - крипто брутфорсми не рулят




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 04 августа 2012 03:50
· Личное сообщение · #22

-=AkaBOSS=- пишет:
потому, что у меня древний однояйцевый комп

это не даст разницы 15 сек против 11 часов
что-то не доглядел или реализовал криво

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 04 августа 2012 13:06
· Личное сообщение · #23

Isaev пишет:
это не даст разницы 15 сек против 11 часов
что-то не доглядел или реализовал криво

В крякми зашита строка-ключ
На основе введённых имени и кода происходит перетасовка символов в ключе (см аттач)
Потом этот ключ импользуется для расшифровки каких-то данных (автор пишет, что это ВМР картинка)
После чего от этих данных берётся МД5 и сравнивается с эталоном
Так вот, моему бруту приходится проходить через все этапы, начиная от перетасовки ключа на основе кода

А в кейгене у автора по уже известному ключу подбирается код, который нужно ввести для какого-либо имени. Соответственно, алгоритмы брута существенно различаются, и могут отрабатывать разное количество времени.
Хотя в своём бруте я тоже тупанул, но уже переписал и запустил опять. Уже почти час прошёл. Still waiting...



250a_04.08.2012_EXELAB.rU.tgz - code.7z




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 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




Ранг: 37.1 (посетитель), 11thx
Активность: 0.030
Статус: Участник

Создано: 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 секунд)))




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 06 августа 2012 05:41
· Личное сообщение · #26

OKOB ну хз... всё это конечно хорошо.
Я тоже могу сделать кейгенми на брут, который сам могу сбрутить только за несколько суток
Хотя знаю пару человек, которые могут сбрутить за несколько секунд... вот так вот )
А я не могу и мне интересен тот другой подход к решению данной проблемы.
Может тут та же ситуация

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 09 августа 2012 12:49 · Поправил: ajax
· Личное сообщение · #27

Promix_17
если время есть свободное - займись тем, что в аттаче затраченное время на программинг ядра - ~2 дня (лет 10 назад) + 5 минут сейчас для 15 строчной проги на дельфи. никакого крипто и пака
цель - пароль

4833_09.08.2012_EXELAB.rU.tgz - obtest.exe

-----
От многой мудрости много скорби, и умножающий знание умножает печаль





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 09 августа 2012 16:47 · Поправил: Модератор
· Личное сообщение · #28

Меньше времени, чем это девелопилось

На всякий случай ключ в аттаче, если кто хочет сам.

3273_09.08.2012_EXELAB.rU.tgz - txt.txt



Ранг: 37.1 (посетитель), 11thx
Активность: 0.030
Статус: Участник

Создано: 09 августа 2012 17:21
· Личное сообщение · #29

ajax - Не успел...

Как у кого успехи?




Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 09 августа 2012 19:24 · Поправил: ajax
· Личное сообщение · #30

Archer пишет:
Меньше времени, чем это девелопилось

фи, все испортил меньше 5 минут? брякался на r/w символов строки (не стал это прикрывать)?
Promix_17
специально для Вас, могу изменить пароль в принципе, можете глянуть и рассказать, как получили искомый Арчером пасс

-----
От многой мудрости много скорби, и умножающий знание умножает печаль



. 1 . 2 . >>
 eXeL@B —› Программирование —› Cube crackme by Promix17
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати