Мой первый не слишком сложный крякми. Нужно узнать правильный пас и сказать какое сообщение выводится при вводе правильного серийника. Написание статьи только приветствуется! Ка4аем: http://securityprobe.net/other/ProTeuS/crackme.rar (172Кб)
Я ввел как на мой почти уверенный взгляд правильный код и программа закрылась сразу без сообщений. это значит правильно я ввел ?
>>Я ввел как на мой почти уверенный взгляд правильный код и программа закрылась >>сразу без сообщений. это значит правильно я ввел ? когда введешь правильный - прога даст знать об этом валидным сообщением
>>Ё-мое, да что же это за крякмис весом в 172К в архиве? ну просто лу4шего обфускатора кода и метаморфа в виде компилера делфы я не видел )))
Serial: 204 --------------------------- Information --------------------------- Preved! Registration sucess! --------------------------- OK ---------------------------
00457980 E8A3F9FFFF call 00457328 ; На выходе в eax StrToInt(SpinEdit1.Text) 00457985 B9FF000000 mov ecx, $000000FF 0045798A 99 cdq 0045798B F7F9 idiv ecx 0045798D 3013 xor [ebx], dl Всё)
Какой логики? Процедура которая выдает сообщение о правильном ключе зашифрована, каждый байт поксорен на остаток от деления числа введенного в спинедит на 255, если ввести неверный ключ то после передачи управления на эту процедуру возникнет исключение и управление перейдет на установленный тобою сех, в котором и вылетает сообщение о неверном ключе.
Пароли в таких алгоритмах можно найти только брутом Враки. Я ломанул сей кракми без перебора, мало того сразу после обнаружения, что модифицирует код. Во многих случаях есть уязвимости. В данном кракми была одна вещь, которая и позволила без проблем его крякнуть. Правда это было основано тольео на предположениях и могло не сработать. Но сработало. А делается всё так. Будем считать, что расшифровывается целиком функция. Это первое. И она начинается со стандратных прологов и заканичается на ret. В нашём случае хватит пролога. Видим, что первый байт 99. В дельфи начало процедуры стандартно: push ebp; mov ebp, esp; push ebp - опкод 55. Теперь Из-за симметричности XOR берём и ксорим 0x55 на 0x99 и получаем 0xCC. Это и есть нужное значения для ксора. Теперь надо получить пасс, который даст это число. Зная что FF > CC просто пишем в поле пароля CC. Остаток будет CC. Вот и всё.
Да по-моему всё равно, перебрать 255 значений не было сложной задачей, опирался я конечно на то, что первый байт это 55h.
>>Да по-моему всё равно, перебрать 255 значений не было сложной задачей, >>опирался я конечно на то, что первый байт это 55h. дык эт не брутфорс называется(попробуй пробрути сабж с непосимвольным шифрованием, 4асти4ным хэшифрованием ДЛИННОГО клю4а), а использование намерено оставленной для простоты априорной информации
>>Дискуссия пошла в неправильном ключе =) то4но так, форум-то у нас белый и пуШистый >>Предлагаю тов. Протеусу написать прохождение =) дык как-то даж не знаю, писать без использования либ php и полного брута как-то неинтеренсно(ибо просто) =) хотя можно будет какой-то сиквелл состряпать
По-моему проведениe N действий над множеством значений A, в результате которых мы имеем второе множество N(a), в поиске значения B всегда называлось брутфорсом, а то о чём ты говоришь всего-лишь условности.
незнаю как там множества, а шнаер говорит, 4то брут - перебор каждой комбинаций со всего клю4евого простанства (у4ет 55h в таком слу4ае брутом не назовешь) а то, 4то нужно было у4итывать пролог никак условностью не назовешь, ибо какой смысл в крякми, основаном ТОЛЬКО на бруте, эт имхо в 99% просто неуважение к крякеру 2кловер: дык ra$cal же солюшн запостил, 4итай выше