Просмотр полной версии : конкурс по реверсингу
F-Secure Reverse Engineering Challenge
http://www.khallenge.com/
первый уровень с оффсайта можно сразу слить. после его прохождения полу4аем второй, как я понимаю. вообщем пишем кто 4то смотрел-прошел, щас тоже бегло гляну
серийник должен быть длиной 4 байта,
вот таблица констант по адресу 690030D4: table: array [0..7] of byte = ($07, $2E, $35, $29, $70, $20, $76, $68);
вот код самой проверки введенного серийника:
6900108C |. 83F8 04 CMP EAX,4
6900108F |. 0F85 95000000 JNZ FSC08_Le.6900112A
69001095 |. 0FB615 0231006>MOVZX EDX,BYTE PTR DS:[69003102]
6900109C |. A0 00310069 MOV AL,BYTE PTR DS:[69003100]
690010A1 |. 3005 D4300069 XOR BYTE PTR DS:[690030D4],AL
690010A7 |. 3015 D6300069 XOR BYTE PTR DS:[690030D6],DL
690010AD |. 3005 D8300069 XOR BYTE PTR DS:[690030D8],AL
690010B3 |. 0FB615 0331006>MOVZX EDX,BYTE PTR DS:[69003103]
690010BA |. 0FB605 0131006>MOVZX EAX,BYTE PTR DS:[69003101]
690010C1 |. 3015 D7300069 XOR BYTE PTR DS:[690030D7],DL
690010C7 |. 3005 D9300069 XOR BYTE PTR DS:[690030D9],AL
690010CD |. 8A0D D5300069 MOV CL,BYTE PTR DS:[690030D5]
690010D3 |. 0FB615 0231006>MOVZX EDX,BYTE PTR DS:[69003102]
690010DA |. 0FB605 0331006>MOVZX EAX,BYTE PTR DS:[69003103]
690010E1 |. 320D 01310069 XOR CL,BYTE PTR DS:[69003101]
690010E7 |. 3015 DA300069 XOR BYTE PTR DS:[690030DA],DL
690010ED |. 3005 DB300069 XOR BYTE PTR DS:[690030DB],AL
690010F3 |. 80F9 61 CMP CL,61
690010F6 |. 880D D5300069 MOV BYTE PTR DS:[690030D5],CL
690010FC |. 75 2C JNZ SHORT FSC08_Le.6900112A
690010FE |. 803D D7300069 >CMP BYTE PTR DS:[690030D7],79
69001105 |. 75 23 JNZ SHORT FSC08_Le.6900112A
69001107 |. 803D D8300069 >CMP BYTE PTR DS:[690030D8],32
6900110E |. 75 1A JNZ SHORT FSC08_Le.6900112A
69001110 |. 803D DA300069 >CMP BYTE PTR DS:[690030DA],30
($07, $2E, $35, $29, $70, $20, $76, $68)
table[1] := serial[1] xor table[1];
table[3] := serial[3] xor table[3];
table[5] := serial[1] xor table[5];
table[4] := serial[4] xor table[4];
table[6] := serial[2] xor table[6];
temp1 := table[2];
temp1 := temp1 xor serial[2];
table[7] := serial[3] xor table[7];
table[8] := serial[4] xor table[8];
mov table[2], temp1
table[2] = 61h
table[4] = 79h
table[5] = 32h
table[7] = 30h
с4итаем верный серийник, ответ не пишу 4тобы инетерсней было. когда вбиваешь валидный, появится мыло, на которе нужно послать ответ и полу4ить линку на 2 уровень
neprovad
05.08.2008, 16:11
перешел на второй уровень. делал минут 20 :(
первый уровень по статистике сайта сделал кто-то за 8 минут.
только4то вывесили результаты на оффсайте.
а второй уровень времени нет проходить, там либо долго реверсить либо нудно рипать и брутить, в любом слу4ае пока нет времени, хотя сама идея интересная
beerhack
05.08.2008, 16:28
первый уровень по статистике сайта сделал кто-то за 8 минут.
дык так и норм... хули там... алго в пару строк... я минут за 10 зделал.
а вот со вторым влом уже возится... он вопервых не запускаеццо, там антиотладка и упх повешен(хотя нах было его так паковать, "типо трудно"?)
хотя надо и второй ломать... ибо интересно на третье чудо посмотреть...
алго на лицо, в первую минуту стало ясно что оно делает. но есть загводка - как это работает? так что пользуясь моментом спрошу - каким способом получить валиднф?
Hellsp@wn
05.08.2008, 16:43
только4то вывесили результаты на оффсайте.
а второй уровень времени нет проходить, там либо долго реверсить либо нудно рипать и брутить, в любом слу4ае пока нет времени, хотя сама идея интересная
реверсить не получиться долго) там мд5 в конце :) зато можно найти маски для перебора...
beerhack запускать нада с параметром, который собственно пасс :)
тело сабжа обнажилось в первую минуту и возбудило мой аппетит своей простотой и лаконичность. xD но копаясь дальше я споткнулся об xor. пользуясь моментом - как он работает и есть ли статейки по реверсу за'xor'иных строк?
я, канеш, пытался xor'ить константы для проверки (61, 79, 32, 30) значениями из памяти, но ничего не вышло, тем более, что я не незнаю какими именно нужно xor'ить.
на худой конец, не могли бы вы на примере конкурсного крякмиса объяснить (в личку, если не желаете компромтировать) алго нахождения первого символа?
beerhack
05.08.2008, 16:55
интересно третье творение тоже консолькой будет? кто знает... кто дошел туда?
тело сабжа обнажилось в первую минуту и возбудило мой аппетит своей простотой и лаконичность. xD но копаясь дальше я споткнулся об xor. пользуясь моментом - как он работает и есть ли статейки по реверсу за'xor'иных строк?
я, канеш, пытался xor'ить константы для проверки (61, 79, 32, 30) значениями из памяти, но ничего не вышло, тем более, что я не незнаю какими именно нужно xor'ить.
на худой конец, не могли бы вы на примере конкурсного крякмиса объяснить (в личку, если не желаете компромтировать) алго нахождения первого символа?
ужс, я же в 3 посте весь алго практи4ески сорцом на делфе написал...
Hellsp@wn
05.08.2008, 18:34
beerhack да тоже консольное :) и тоже сложное...
ProTeuS, так ведь я и спрашиваю про xor, я ж спп учил, от чего аналогия асмовского xor'a с обджект паскалевеским для меня бесполезна - не работал с ним, значит и не знаю для чего он, и как с ним бороться. если б понимал механизм работы оного, то и не спрашивал, тем более что в этой ветке это оффтоп, да и вы всё разжевали для самых маленьких.
table[3] := serial[3] xor table[3];
ну а теперь про ужасы xD
тут
table: array [0..7] of byte = ($07, $2E, $35, $29, $70, $20, $76, $68);
и тут
table[8] := serial[4] xor table[8];
не состыковочка, во всяком случае на спп. но(!) не будем путать простую невнимательность, если она вообще есть, с незнанием.
>>так ведь я и спрашиваю про xor, я ж спп учил, от чего аналогия асмовского xor'a с обджект паскалевеским для меня бесполезна
там не паскаль, а псевдокод, хоть и паскалеподобный для простоты понимания
>>не состыковочка, во всяком случае на спп. но(!) не будем путать простую невнимательность, если она вообще есть, с незнанием
см. прошлый пункт
>>я, канеш, пытался xor'ить константы для проверки (61, 79, 32, 30) значениями из памяти, но ничего не вышло, тем более, что я не незнаю какими именно нужно xor'ить.
X xor const = Y
->
const xor Y = X
ни4его кроме математики ненужно знать, язык программирования-это уже подообности для конкретного алгоритма. предполагаю, 4то ты проксорил там 4то-то, полу4ил ответ в X но непонял 4то с ним делать. а нужно было просто полу4ить аски-символ (CHAR) от результата. это и будет ответом.
ProTeuS, спасибо! не смею больше отвлекать
первый улыбнул ) левелап )
если кто ещё не видел
тема на краклабе
http://www.cracklab.ru/f/index.php?action=vthread&forum=1&topic=12457
победители
http://www.f-secure.com/weblog/archives/00001480.html
ЗЫ а UPX во втором не обычный или мне с недосыпа всякая фигня мерешится?
beerhack
06.08.2008, 02:30
да вроде упх обычный, снимается самим же упх)
снимается, но Tls-колбек в анпакнутой версии вроде как не отрабатывает и не исполняет код, который далее будет крити4ен при прос4ете сериала
первий уровень БРЕД!
я его за 1минуту сделал, +к тому, я только новичок =)
мой пасс: Asm07REC
а второй упакован UPXом, роспаковка запросто идет, в Ольке открив,
заNOPим строчки 4011E1, 4012D?, 10123F, и виходит messagebox:
"Congratulations!
Please send an e-mail to LuckyNumberIs_22657865_FSC@khallenge.com
Assembly 2007 Reverse-Engineering Challenge - Level 2
Copyright (c) 2007 F-Secure Corporation
"
первий уровень БРЕД!
я его за 1минуту сделал, +к тому, я только новичок =)
мой пасс: Asm07REC
а второй упакован UPXом, роспаковка запросто идет, в Ольке открив,
заNOPим строчки 4011E1, 4012D?, 10123F, и виходит messagebox:
"Congratulations!
Please send an e-mail to LuckyNumberIs_22657865_FSC@khallenge.com
Assembly 2007 Reverse-Engineering Challenge - Level 2
Copyright (c) 2007 F-Secure Corporation
"
LuckyNumberIs_22657865_FSC@khallenge.com
имейл невалиден, просто запат4ив бинарь он сгенерил неверный выходной буфер, ибо вход-выход зависим
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot