Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Реверсинг (https://forum.antichat.xyz/forumdisplay.php?f=94)
-   -   CrackMe#3 by Taha (https://forum.antichat.xyz/showthread.php?t=27510)

taha 18.11.2006 19:24

CrackMe#3 by Taha
 
Вот недавно написал новый CrackMe. В нём я немного повторился (пусть это будет подсказкой).
http://slil.ru/23426600
Да, hidden +x(крякми) +3(на асме) :) :). Шутка.
____________________________
В крякми только-что обнаружился недостаток. Несколько валидных ключей.
ProTeuS можешь удалить тему если хочешь.
Я осознал свою ошибку спасибо BUG(O)R'у.

Reject 18.11.2006 19:52

Не закачивай пожалуйста больше ничего на slil.ru. спасибо.

taha 18.11.2006 19:59

с прогрессбарами больше не связываюсь

hidden 18.11.2006 20:26

То что я говорил, насчёт этой структуря, не значит что я не знаю что у неё в нулевом элементе, это слишком важный элемент, чтоб его не знать. ;)
Уже на этапе завершения, а тут срочно уходить надо, позже продолже :(

hidden 18.11.2006 21:45

Эх выкроил ещё 5 минут, молодец хороший крякми, помогло знание опкодов, нехороший ключик ты выбрал :rolleyes: ...
+2 КрякМи, +2 Асм

taha 20.11.2006 12:32

Цитата:

молодец хороший крякми
Приятно слышать(читать) это от тебя.
Но всё таки я не разделяю твоего оптимизма.
Вообще пасс - 1037.
Он преобразовывается так
Код:

004022EC  33DB            XOR EBX,EBX
004022EE  43              INC EBX
004022EF  C1E3 03          SHL EBX,3
004022F2  2BC3            SUB EAX,EBX

В итоге должно получится 405h.
Это сообщение отправляется прогрессбару.
И он увеличивает CurrentStep dd ? на некую const.
За всю программу это сообщенние отправляется два раза. Вконце прога смотрит полностью ли заполнен прогрессбар. И в зависимости от ответа выдаёт мессагу.
Также поставлен SEH на зашифрованную часть кода, если вдруг там будет невыполнимое действие.
После расшифровки SendMessage будет иметь следующие параметры:
Код:

00402322  90              NOP
00402323  90              NOP
00402324  90              NOP
00402325  6A 00            PUSH 0
00402327  90              NOP
00402328  90              NOP
00402329  90              NOP
0040232A  90              NOP
0040232B  6A 00            PUSH 0
0040232D  90              NOP
0040232E  90              NOP
0040232F  68 05040000      PUSH 405
00402334  FF35 A4404000    PUSH DWORD PTR DS:[4040A4]

Ошибка в том, что можно подобрать такой пасс, что прога будет расшифровывать не все параметры. И отправит их прогрессбару. например 312131. получится следующее.
Код:

00402322  AE              SCAS BYTE PTR ES:[EDI]
00402323  AE              SCAS BYTE PTR ES:[EDI]
00402324  AE              SCAS BYTE PTR ES:[EDI]
00402325  54              PUSH ESP
00402326  3E:AE            SCAS BYTE PTR ES:[EDI]
00402328  AE              SCAS BYTE PTR ES:[EDI]
00402329  AE              SCAS BYTE PTR ES:[EDI]
0040232A  AE              SCAS BYTE PTR ES:[EDI]
0040232B  54              PUSH ESP
0040232C  3E:AE            SCAS BYTE PTR ES:[EDI]
0040232E  90              NOP
0040232F  68 05040000      PUSH 405
00402334  FF35 A4404000    PUSH DWORD PTR DS:[4040A4]

Как оказалось, или я что не так понял, прогрессбару нассрать что ему отправляют, и CurrentStep dd ? всё равно будет увеличен на некую const.
По мнению BUG(O)R'а проблема в алго шифрования( ябы сказал в его отсутствии, поxorивание- этож разве шифрование). Я думаю, что для любого алго найдётся такой ключ, что не возникнет искл. ситуация.
У меня есть более реальная мысль, думаю нужно создать новое сообщение для окна уж оното не будет принимать что попало и в нём создать SendMessage прогрессбару. Но я считаю, что это было бы не совсем честно по отношению к вам. Сам бы не хотел искать иголку в стоге сена.
Вобщем ошибку понял, исправлюсь!
Цитата:

Не закачивай пожалуйста больше ничего на slil.ru. спасибо.
Хорошо, только скажи куда сливать, чтоб форма да логотип и без метров рекламы.

hidden 20.11.2006 20:19

Как я его получил:
Небольшой фрагмент програмы, XOR'ится одним байтом, но впадряд идущие 3 одинаковых байта, это наиболее вироятно nop инструкции
95 95 95 6F 05 95 95 95 95 6F 05 95 90
но у nop инструкции код 0x90, несложные логические операции: (0x90^0x95)+(1<<3)=13 дали мне это число.

Я не знаю зачем ты запихаешь 1037 в переменную al(byte), думаю то что ты от него отнимаешь 8 можно не учитывать, но если это так не задумано, то тебя прислудует число 13, потому что 1037&255 = 13 и это вполне валидный и более правильнй пас, чем тот который привёл ты, кстате количестко заксориваемых байт тоже 0xD = 13 ;)

ProTeuS 21.11.2006 05:26

к сожалению не было времени поковырять сабж =(

>>бы сказал в его отсутствии, поxorивание- этож разве шифрование

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

>>Хорошо, только скажи куда сливать, чтоб форма да логотип и без метров рекламы.
рапида.ком

taha 21.11.2006 10:34

Не очень люблю рапиду, но ладно так и быть.


Время: 20:18