![]() |
eXeL@B —› Вопросы новичков —› Crackme v1.0 by Cruehead |
Посл.ответ | Сообщение |
|
Создано: 05 мая 2007 19:41 · Личное сообщение · #1 Все привет. Вообщем недавно занялся крякерством, но вот появилась проблема, ничего не могу придумать. Короче есть crackme v1.0 by Cruehead, крякнуть его легко, чтобы он всегда выдал что верный ключ. А вот как написать кейген я так и не понял. Вообщем как я понял этот крякми делает так: Имя пользователя представляет большими латинскими буквами и суммирует шестнадцатиричные коды этих символов в один из регистров, потом ксорит его с 5678h ну и кидает в стёк. Затем берёт первый символ введённого серийника, его шестнадцатиричный код из него отнимает 30h и прибавляет к регистру edi(это при первой итерации). Затем повторяет ещё раз, токо edi умножает на 0Ah. Кому не понятно вот код: 004013E2 |> /B0 0A /MOV AL,0A 004013E4 |. |8A1E |MOV BL,BYTE PTR DS:[ESI] 004013E6 |. |84DB |TEST BL,BL 004013E8 |. |74 0B |JE SHORT CRACKME.004013F5 004013EA |. |80EB 30 |SUB BL,30 004013ED |. |0FAFF8 |IMUL EDI,EAX 004013F0 |. |03FB |ADD EDI,EBX 004013F2 |. |46 |INC ESI 004013F3 |.^\EB ED \JMP SHORT CRACKME.004013E2 затем ксорит полученное с 1234h Ну и потом забирает из стёка, то что было получено из имени пользователя и сравнивает с этим. Если равно то всё Ok, а если не равно то всё плохо =)) Так вот, получается что это какая-то хэш функция чтоли? У меня вопрос обратима ли она? и что можно сделать, писать брут или что? ![]() |
|
Создано: 05 мая 2007 21:15 · Личное сообщение · #2 Ну, хэш-функцие это можно назвать весьма условно (хотя и можно назвать ![]() А "обратить" ее проще простого для имени Sturgeon получаем "хэш" 540F. Где его можно посмотреть наверное знаешь. Отсюда начинаем идти по алгоритму для пароля (который ты привел) в обратном порядке. (ВСЕ ЦИФЕРКИ В ШЕСТНАДЦАТЕРИЧНОМ ФОРМАТЕ) 540F ксорим с 1234 = 463В - 9 = (пятый символ 9) 4632 / А = 705 - 7 = (четвертый символ 7) 6FE / A = B3 - 9 = (третий сивол 9) АА / А = 11 - 7 = (второй символ 7) А / А = 1 (первый символ 1) Пароль для Sturgeon "17979" Предвижу совершенно справедливый вопрос. Откуда я взял, что надо отнимать именно 7 или 9? Это тоже просто. Для последнего символа: переводим 463Вh в десятичный формат. Получаем 17979. Чтобы разделить на 0Ah (разделить на 10 в десятичном формате) без остатка, необходимо отнять 9 ![]() Переложить этот алгоритм на ассемблер наверное можно, но для меня (чайника) довольно непросто, поэтому дальше сам. ![]() |
|
Создано: 05 мая 2007 21:18 · Личное сообщение · #3 MaXL Крякми не смотрел, но если ты всё описал правильно то: 1. Алгоритм который ты написал - нахождение числа из строки. Т.е. если пароль 12345 - в hex виде это будет выглядеть как строка 31 32 33 34 35 00 . После обработки этой строки этим алгоритмом в edi окажется число 3039h = 12345. 2. Получается у нас имеется - число равное сумме байт из имени - назовём его X - число которое является паролем - назовём его Y - справедливо равенство (X xor 5678h) = (Y xor 1234) 3 отсюда следует Y = (X xor 1234 xor 5678) Вот собственно и всё. ![]() |
|
Создано: 06 мая 2007 04:46 · Поправил: MaXL · Личное сообщение · #4 asd я не знаю, алгоритм вроде бы описал правильно, но для пароля 12345 совсем другой число получается. Sturgeon т.е смотри 540F ксорим с 1234 = 463В, а 463B = 17979 в десятичной, т.е это и есть наш пароль. Только я не могу понять, откуда ты взял, что пароль будет состоять именно из цифр, ведь там берёться шестнадцатиричный код символа и отнимается от него 30h. Объясни плиз? ![]() |
|
Создано: 06 мая 2007 09:18 · Личное сообщение · #5 MaXL пишет: смотри 540F ксорим с 1234 = 463В, а 463B = 17979 в десятичной, т.е это и есть наш пароль Тьфу ты! Етить! А я и не обратил внимание, а только все запутал ![]() Да я и не взял, что пароль будет только из цифр. Просто я сразу не увидел, что после ксора мы уже имеем готовый пароль ![]() Вот пожалуйста, например пароль из буковок (для имени Sturgeon) 463В - 45 = `E` + 30 = `u` 45F6 / A = 6FF - 47 = `G` + 30 = `w` 6B8 / A = AC - 48 = `H` + 30 = `x` 64 / A = A ` непечатаемый символ` + 30 = `:` ":xwu" коллизия однако ![]() |
|
Создано: 06 мая 2007 15:21 · Личное сообщение · #6 |
![]() |
eXeL@B —› Вопросы новичков —› Crackme v1.0 by Cruehead |