Сейчас на форуме: rmn, exp50848 (+7 невидимых)

 eXeL@B —› Основной форум —› PHD2012-BestReverser
. 1 . 2 . >>
Посл.ответ Сообщение


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

Создано: 30 мая 2012 11:23
· Личное сообщение · #1

Стартовал контест на Positive Hack Days 2012. Конкурс лучший реверсер от ESET.

Адрес жертвы http://crackme.esetnod32.ru/

Удачи в пробе сил!

-----
127.0.0.1, sweet 127.0.0.1


| Сообщение посчитали полезным: obfuskator, ClockMan, neomant

Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 30 мая 2012 12:22
· Личное сообщение · #2

IDA 6.1 с лицензий от ESET для изучения крекми от ESET.

| Сообщение посчитали полезным: DimitarSerg, obfuskator, Dart Raiden, Hexxx


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

Создано: 30 мая 2012 12:59
· Личное сообщение · #3

Switches для обработки нажатой клавиши
Code:
  1. /*40408F*/  JS 004041E9
  2. /*404095*/  TEST EDI,EDI
  3. /*404097*/  JNZ 004041E7
  4. /*40409D*/  CMP EBX,10
  5. /*4040A0*/  JA 004041E4
  6. /*4040A6*/  JMP [EBX*4+4041F0]
  7. /*4040AD*/  MOV ECX,ESI


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




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

Создано: 30 мая 2012 13:14 · Поправил: schokk_m4ks1k
· Личное сообщение · #4

только я не понял что именно нужно там сделать?

нужно по ходу набрать набор их букв и цифр для разблокировки ввода имя и ключа???

разблокировать для ввода ключа оказалось совсем легко
Code:
  1. 00403D91    85C0            TEST EAX,EAX
  2. 00403D93    74 70           JE SHORT 00403E05
  3. 00403D95    6A 00           PUSH 0
  4. 00403D97    68 18798500     PUSH OFFSET 00857918                     ; UNICODE "PHDays 2@12 Crackme"
  5. 00403D9C    68 C0788500     PUSH OFFSET 008578C0                     ; UNICODE "Congrats, you opened the lock !!! Go on !!!"



Первое место: полностью восстановленный алгоритм функционирования электронного замка и ключ для его открытия, а так же полностью восстановленный алгоритм генерации и генератор кодовых последовательностей для любых имен.
Приз – IPAD 3-го поколения

Второе место: полное описание принципа функционирования электронного замка и алгоритма проверки кодовых последовательностей. Также необходимо предоставить ключ к замку и кодовую последовательность для своего имени/ника.
Приз: Amazon Kindle Fire

Третье место: полное описание принципа функционирования электронного замка или алгоритма проверки кодовых последовательностей. Так же необходимо предоставить ключ к замку или кодовую последовательность для своего имени/ника.
Приз: Amazon Kindle Touch



Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 30 мая 2012 13:18
· Личное сообщение · #5

Ну, видимо, сначала кнопками разблокировать окно ввода ключа, ну а потом сам ключ найти.
Или пропатчить всё это дело.
Какбы конкретных условий не стояло как и что нужно нужно делать.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 30 мая 2012 13:19 · Поправил: reversecode
· Личное сообщение · #6

внутри exe, длл для каждой кнопки под rc4(rc4_sub_401790) итд
которая грузится при нажатии, обрабатывается и удаляется сразу

после правильного ввода ключа поля разблокируются и можно отправить даные))

инициализация алго для ключа .text:00404300 итд за ним,
дальше математика... скучно вообщем

2), 3) место ради "читалок" - скучно

r_e
смотри внимательно

ClockMan пишет:
Только вот dll в нутри ресурсов закриптована и без первого валидного ключа "светофора" второе задание выполнять безсмысленно!

ну так естественно
просто смысл всех этих реверс игр - just for fun
математики больше чем в реальный реверс проектах

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

Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 30 мая 2012 13:42 · Поправил: r_e
· Личное сообщение · #7

Задача стоит найти и описать алгоритм, либо сделать кейген.
rc4 там не увидел

-----
старый пень





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

Создано: 30 мая 2012 14:20
· Личное сообщение · #8

reversecode пишет:
внутри exe, длл для каждой кнопки под rc4(rc4_sub_401790) итд

Только вот dll в нутри ресурсов закриптована и без первого валидного ключа "светофора" второе задание выполнять безсмысленно!
schokk_m4ks1k пишет:
разблокировать для ввода ключа оказалось совсем легко

тупой патч здесь неканает ;)

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




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

Создано: 30 мая 2012 14:30
· Личное сообщение · #9

ClockMan пишет:
тупой патч здесь неканает ;)

та уже понял!!!



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 30 мая 2012 15:14
· Личное сообщение · #10

Приаттачил свой код этого крякми под паролем. Как выйдет решение - увидим был ли там rc4 =)

c834_30.05.2012_EXELAB.rU.tgz - phd12.zip

-----
старый пень





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 30 мая 2012 15:22
· Личное сообщение · #11

ну если там нет rc4 то значит я совсем с бодуна)))
кстати а где эта новость была на паблике?
и реддит и хабр молчат по этому поводу, откуда инфа?



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

Создано: 30 мая 2012 15:23 · Поправил: schokk_m4ks1k
· Личное сообщение · #12

r_e
смысл выкладывать если твой код под паролем?

add: ну тогда и не выкладывал бы его и не нёсся впереди паровоза!
Незнаю как другие а я считаю что если выкладывать так уже доступен для всех!



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 30 мая 2012 15:32
· Личное сообщение · #13

schokk_m4ks1k
Смысл нестись впереди паровоза? Код как минимум можно найти брутом 2**10, если я нигде не ошибся.

-----
старый пень




Ранг: 65.4 (постоянный), 10thx
Активность: 0.020
Статус: Участник

Создано: 30 мая 2012 16:24 · Поправил: V0ldemAr
· Личное сообщение · #14

Конкурс только для учасников PHD ( Да на страничке написано что для всех инет юзеров но это не так ... :| )

r_e Есть там РЦ4 для расшифровки длл (2 уровень) в первом уровне нету.

reversecode: http://phdays.com/program/contests/#6323



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 30 мая 2012 16:32
· Личное сообщение · #15

V0ldemAr
О как. reversecode, извиняй, до второго уровня не дошел еще

-----
старый пень




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 30 мая 2012 17:48
· Личное сообщение · #16

А какого цвета должны быть светофоры? Удалось получить их все зеленными, при этом замок не раскрылся. Получается, что не любой ключ подходит. Хрень, я считаю.



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

Создано: 30 мая 2012 17:50 · Поправил: schokk_m4ks1k
· Личное сообщение · #17

int пишет:
Хрень, я считаю.

согласен, не понятный какой то кракми, хоть бы описание подробное написали, как должно быть!



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 30 мая 2012 17:57 · Поправил: r_e
· Личное сообщение · #18

int
Цвет там только в качестве подсказки какие биты утановлены, а какие скинуты.
Если вкратце, то похоже на LFSR 64-бита. С него на каждом клике снимается 16-бит с определенных позиций и показывается тебе. Кликом ты меняешь 1 бит. Значение вносится на ту же позицию и состояние регистра обновляется через
Seed_ = (Seed_ << 1) | BitSum64(Seed_ & 0x9B1ADEDF847D3481ui64);
Задача: кликаньем добиться чтоб значение генератора пришло к одному из предопределенных таблицей вариантов.

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

-----
старый пень




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 30 мая 2012 18:20
· Личное сообщение · #19

Алгоритм-то я изучил. Просто не понравилась визуализация замка. Можно было что-нибудь поумнее придумать. По идее каждый бит определяется 8-ю 64 битными числами, и получить надо такое:

res_value == 0xA3FE45ADF1EC2AB4

r_e пишет:
Кликом ты меняешь 1 бит

Меняешь ты сразу 16. Устанавливается 1 и сбрасывается 15. Потом еще сдвиг влево, а на место освободившегося бита пишется бит полученный на основе 0x9B1ADEDF847D3481u.

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



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 30 мая 2012 18:28 · Поправил: r_e
· Личное сообщение · #20

int
Чой-то вдруг?
Code:
  1.          bool Button(u8_t Idx)
  2.          {
  3.                  u32_t lV = GetWord();
  4.                  u16_t lX;
  5.  
  6.                  if (lV & (1 << Idx))
  7.                         lX = lV & ~(1 << Idx);
  8.                  else
  9.                         lX = lV | (1 << Idx);
  10.  
  11.                  Update(lX);
  12.                  Final();
  13.  
  14.                  return Check();
  15.          }

Ну и число у меня 0xe7fd097289cbb59a.
адд. приложил полный код. могут быть коссяки из-за переоптимизации.

85bd_30.05.2012_EXELAB.rU.tgz - phd12.cpp

-----
старый пень




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

Создано: 30 мая 2012 18:33 · Поправил: bbuc
· Личное сообщение · #21

Могу сказать что там не один ключ, а два для таблички подходят. Но все равно зачем выкладывать даже промежуточные варианты?



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 30 мая 2012 18:33
· Личное сообщение · #22

bbuc
Тут до ответов как до луны.

-----
старый пень




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 30 мая 2012 18:40
· Личное сообщение · #23

r_e
Мы наверное разные файлы реверсим...




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

Создано: 30 мая 2012 19:18 · Поправил: OKOB
· Личное сообщение · #24

r_e пишет:
Ну и число у меня 0xe7fd097289cbb59a.


Брут??

Тут вроде бага

void Final()
{
Seed_ = (Seed_ << 1) | BitSum64(Seed_ & 0x9B1ADEDF847D3481ui64);
}


Seed_ = (Seed_ << 1) | (BitSum64(Seed_ & 0x9B1ADEDF847D3481ui64) & 1);

и на выходе с этим числом у меня получается 0xa3fe45adf16c2aea вместо 0xA3FE45ADF1EC2AB4

-----
127.0.0.1, sweet 127.0.0.1




Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 30 мая 2012 19:48 · Поправил: r_e
· Личное сообщение · #25

OKOB
Точно бага =)
Отбираем из таблицы валидные строки и возможные значения в них. Просеиваем отобранное через ту же таблицу с учетом некорректных значений. На финише берем OR от всего получившегося - должен быть валидный Seed, который используется во второй части.
Но я где-то натупил. Не совпадает пара бит.

А кто-то уже получил ответы на светофор? Что-то упорно ничего не подходит.

-----
старый пень





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

Создано: 31 мая 2012 00:25
· Личное сообщение · #26

r_e пишет:
А кто-то уже получил ответы на светофор?


DLL достал мимо светофора, подменой расчитанного сида.
Потом пропатчил ЕХЕ так, что по нажатию 0 замок открывается. Наверное это не зачет, но можно двигать дальше.

-----
127.0.0.1, sweet 127.0.0.1




Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 31 мая 2012 00:55 · Поправил: r_e
· Личное сообщение · #27

OKOB
Я уже прошел это. Думаю за пару часов доделаю.

addon: Не доделаю. То ли они накосячили, то ли там хитрости какие-то.
Итого в длл:
Compare(Whirpool(Name+EsetPadding, 0x50), Reversed(Serial), 0x40)
Затем перемешивается хеш и начинается мистика. На стеке сразу после хеша должна находиться магическая константа 0x45535320 и за ней два дворда. Кто их туда должен положить - из кода неясно.
Финальная проверка
Compare(Whirpool(MixedHash+PostMagic, 0x4c), ConstMagicHash, 0x0c)

Даже если пропатчить проверку на PostMagic, должны выполняться условия
1. Найти 64-бита PostMagic помимо явной константы
2. Должна существовать коллизия, дающая ConstMagicHash

Вобщем, крякмис интересный, но сил и интереса на него не осталось

-----
старый пень





Ранг: 106.9 (ветеран), 27thx
Активность: 0.080
Статус: Участник

Создано: 02 июня 2012 02:45
· Личное сообщение · #28

Победу одержал Скляров, впрочем, как и в прошлом году. Вот ещё, кому интересно, задание по реверсу с очных соревнований ctf.

e677_02.06.2012_EXELAB.rU.tgz - keygen.exe



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 02 июня 2012 12:17
· Личное сообщение · #29

Oott
Можешь валидную пару выложить? Или там обязательно генератор светофора нужен?

-----
старый пень




Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

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

оффтоп, но ИМХО в этом crackme самое интересное - UPX распаковывать, а не торчать с математикой & crackme_by_eset_enjoy.dll


. 1 . 2 . >>
 eXeL@B —› Основной форум —› PHD2012-BestReverser
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати