Сейчас на форуме: Rio (+10 невидимых) |
eXeL@B —› Основной форум —› keygenme: простенькая вм с математикой |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 02 июня 2006 22:07 · Личное сообщение · #1 никаких брутфорсов, патчей и тд. не упакован, msvc7 [ps] автор не я =) c528_02.06.2006_CRACKLAB.rU.tgz - Keygenme2.zip |
|
Создано: 03 июня 2006 09:39 · Личное сообщение · #2 |
|
Создано: 03 июня 2006 13:16 · Личное сообщение · #3 |
|
Создано: 03 июня 2006 13:47 · Личное сообщение · #4 |
|
Создано: 03 июня 2006 14:15 · Личное сообщение · #5 |
|
Создано: 04 июня 2006 00:54 · Личное сообщение · #6 ======================================================== Код основной ======================================================== 0040224F /$ 55 PUSH EBP 00402250 |. 8BEC MOV EBP,ESP 00402252 |. 51 PUSH ECX 00402253 |. 53 PUSH EBX 00402254 |. 56 PUSH ESI 00402255 |. 8B75 0C MOV ESI,DWORD PTR SS:[EBP+C];серийник кладут в esi 00402258 |. 57 PUSH EDI 00402259 |. 56 PUSH ESI; в стек ложат серийник 0040225A |. C646 08 00 MOV BYTE PTR DS:[ESI+8],0; в стеке - первые 8 цифр серийника (параметр) 0040225E |. E8 8CF9FFFF CALL Keygenme.00401BEF;вызов процедуры "что-то делается с серийником..." 00402263 |. 8D7E 11 LEA EDI,DWORD PTR DS:[ESI+11]; в edi - символы серийника с позиции 8 по 15(следующие 8 штук) 00402266 |. 57 PUSH EDI; пихаем edi в стек (параметр функции "что-то делается с серийником...") 00402267 |. 8BD8 MOV EBX,EAX ;в ebx - первые 8 символов серийника (?) 00402269 |. E8 81F9FFFF CALL Keygenme.00401BEF;вызов процедуры "что-то делается с серийником..." 0040226E |. 83C6 09 ADD ESI,9; типа в esi теперь уже 16 символов серийника (которые уже передали в функцию?) 00402271 |. 56 PUSH ESI; Кидаем 16 символов в стек 00402272 |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX; в esi опять 8 символов серийника... 00402275 |. C607 00 MOV BYTE PTR DS:[EDI],0 00402278 |. E8 72F9FFFF CALL Keygenme.00401BEF;вызов процедуры "что-то делается с серийником..." 0040227D |. 8B75 08 MOV ESI,DWORD PTR SS:[EBP+8]; НАЧАЛИСЬ ЗАМОРОЧКИ С username...username содержится в esi 00402280 |. 83C4 0C ADD ESP,0C 00402283 |. 56 PUSH ESI; Первый раз ложим username в стек 00402284 |. 56 PUSH ESI ;второй раз ложим username в стек.. Параметры функции! 00402285 |. 8BF8 MOV EDI,EAX ; | Точно не пойму, но кажется, что в EDI - часть серийника... 00402287 |. FF15 0C104000 CALL DWORD PTR DS:[<&KERNEL32.lstrlenA>] ; Длина строки - определяем... 0040228D |. 50 PUSH EAX; Она (длина) имени пользователя заносится в EAX 0040228E |. 6A FF PUSH -1; Кидаем в стек FFFFFFFF (???) 00402290 |. E8 ABF7FFFF CALL Keygenme.00401A40; ======= А ВОТ ДАЛЬШЕ КТО РАЗРУЛИТ?============ 00402295 |. 83C4 0C ADD ESP,0C; Что это была за процедура? ^^^ Я хочу спать! 00402298 |. 56 PUSH ESI 00402299 |. 56 PUSH ESI 0040229A |. 8945 0C MOV DWORD PTR SS:[EBP+C],EAX 0040229D |. E8 BE030000 CALL Keygenme.00402660 004022A2 |. 59 POP ECX 004022A3 |. 50 PUSH EAX 004022A4 |. E8 01F8FFFF CALL Keygenme.00401AAA 004022A9 |. FF75 0C PUSH DWORD PTR SS:[EBP+C] 004022AC |. 50 PUSH EAX 004022AD |. FF75 FC PUSH DWORD PTR SS:[EBP-4] 004022B0 |. 57 PUSH EDI 004022B1 |. E8 C3FEFFFF CALL Keygenme.00402179 004022B6 |. 83C4 18 ADD ESP,18 004022B9 |. 0FB6F0 MOVZX ESI,AL 004022BC |. 8B45 0C MOV EAX,DWORD PTR SS:[EBP+C] 004022BF |. 0FBAF0 1F BTR EAX,1F 004022C3 |. 0FBAF0 1E BTR EAX,1E 004022C7 |. 0FBAF0 1D BTR EAX,1D 004022CB |. 8945 0C MOV DWORD PTR SS:[EBP+C],EAX 004022CE |. 53 PUSH EBX 004022CF |. E8 ABF8FFFF CALL Keygenme.00401B7F 004022D4 |. 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C] 004022D7 |. 2BC8 SUB ECX,EAX 004022D9 |. 51 PUSH ECX 004022DA |. E8 0C040000 CALL Keygenme.004026EB 004022DF |. 3D 00020000 CMP EAX,200 004022E4 |. 59 POP ECX 004022E5 |. 59 POP ECX 004022E6 |. 7D 07 JGE SHORT Keygenme.004022EF 004022E8 |. 33C0 XOR EAX,EAX 004022EA |. 40 INC EAX 004022EB |. 3BF0 CMP ESI,EAX 004022ED |. 74 02 JE SHORT Keygenme.004022F1 004022EF |> 33C0 XOR EAX,EAX 004022F1 |> 5F POP EDI 004022F2 |. 5E POP ESI 004022F3 |. 5B POP EBX 004022F4 |. C9 LEAVE 004022F5 \. C3 RETN =================================================================== Дальше, в зависимости от test eax,eax идет сообщение о верном или кривом коде... содержимое стека в момент вызова процедуры проверки: 0012FBF8 0012FC44 ASCII "Cr@wler";username 0012FBFC 0012FC84 ASCII "1111111111111111111111111";serial code ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. |
|
Создано: 04 июня 2006 00:55 · Личное сообщение · #7 Процедура "что-то делается с серийником" ================================================================== 00401BEF /$ 56 PUSH ESI 00401BF0 |. 57 PUSH EDI 00401BF1 |. FF7424 0C PUSH DWORD PTR SS:[ESP+C] 00401BF5 |. 33F6 XOR ESI,ESI 00401BF7 |. E8 FA0A0000 CALL Keygenme.004026F6 00401BFC |. 8BF8 MOV EDI,EAX 00401BFE |. 57 PUSH EDI 00401BFF |. E8 5C0A0000 CALL Keygenme.00402660 00401C04 |. 59 POP ECX 00401C05 |. 33D2 XOR EDX,EDX 00401C07 |. 85C0 TEST EAX,EAX 00401C09 |. 59 POP ECX 00401C0A |. 7E 3B JLE SHORT Keygenme.00401C47 00401C0C |> 8A0C3A /MOV CL,BYTE PTR DS:[EDX+EDI] 00401C0F |. 80F9 30 |CMP CL,30;сравнение с "0" 00401C12 |. 7C 0E |JL SHORT Keygenme.00401C22 00401C14 |. 80F9 39 |CMP CL,39жсравнение с "9" 00401C17 |. 7F 09 |JG SHORT Keygenme.00401C22 00401C19 |. 0FBEC9 |MOVSX ECX,CL 00401C1C |. 8D740E D0 |LEA ESI,DWORD PTR DS:[ESI+ECX-30] 00401C20 |. EB 11 |JMP SHORT Keygenme.00401C33 00401C22 |> 80F9 41 |CMP CL,41; сравнение с "A" 00401C25 |. 7C 1D |JL SHORT Keygenme.00401C44 00401C27 |. 80F9 46 |CMP CL,46; сравнение с "F" 00401C2A |. 7F 18 |JG SHORT Keygenme.00401C44 00401C2C |. 0FBEC9 |MOVSX ECX,CL 00401C2F |. 8D740E C9 |LEA ESI,DWORD PTR DS:[ESI+ECX-37] 00401C33 |> 8D48 FF |LEA ECX,DWORD PTR DS:[EAX-1] 00401C36 |. 3BD1 |CMP EDX,ECX 00401C38 |. 74 03 |JE SHORT Keygenme.00401C3D 00401C3A |. C1E6 04 |SHL ESI,4 00401C3D |> 42 |INC EDX 00401C3E |. 3BD0 |CMP EDX,EAX 00401C40 |.^7C CA \JL SHORT Keygenme.00401C0C 00401C42 |. EB 03 JMP SHORT Keygenme.00401C47 00401C44 |> 83CE FF OR ESI,FFFFFFFF 00401C47 |> 5F POP EDI 00401C48 |. 8BC6 MOV EAX,ESI 00401C4A |. 5E POP ESI 00401C4B \. C3 RETN ================================================================== ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. |
|
Создано: 04 июня 2006 00:56 · Личное сообщение · #8 |
|
Создано: 04 июня 2006 13:23 · Личное сообщение · #9 |
|
Создано: 04 июня 2006 22:50 · Личное сообщение · #10 |
|
Создано: 05 июня 2006 12:00 · Личное сообщение · #11 |
|
Создано: 05 июня 2006 12:02 · Личное сообщение · #12 |
|
Создано: 05 июня 2006 15:44 · Личное сообщение · #13 |
|
Создано: 05 июня 2006 15:48 · Личное сообщение · #14 |
|
Создано: 05 июня 2006 15:51 · Личное сообщение · #15 |
|
Создано: 05 июня 2006 16:21 · Личное сообщение · #16 |
|
Создано: 05 июня 2006 20:25 · Поправил: Hellspawn · Личное сообщение · #17 про лень - это правда... да и сессия на носу, так мельком глянул... по-моему он не очень то и легкий, (если без брута), гы вроде прикольно нарыл правдо не много... вводим для наглядности Hellsp@wN 1111122222333334444455555
на этом мой интузиазм поостыл... пойду фан делать... ----- [nice coder and reverser] |
|
Создано: 06 июня 2006 01:59 · Поправил: NG · Личное сообщение · #18 во! hellspawn добрался-таки до самого интересного, с моей точки зрения, места =) далее - развернутые комментарии от автора. "А somehash - это самодельный или какой - нибудь готовый?" А хз, из какой-то проги взял, реверсить его не надо, так что ничего интересного,можно использовать "как есть", код такой: long somehash( unsigned len, LPVOID string)
"по-моему он не очень то и легкий" если понять чего-там в коде творится, то ничего неподъемного там нет, но код специально написан так, что выглядит как бред "вот это вроде тоже интересно" да, тут и крутится проверка второй части ключа, вызывается ранее выделенная память в которой с помощью CALL 00401C4C был динамически сгенерен код проверки, где "игра со стеком"... Рекомендую для начала разобраться с проверкой первой части ключа CALL Keygenme.00401B7F, она менее трудоемкая для разбора, нежели CALL Keygenme.00402179. |
|
Создано: 06 июня 2006 02:06 · Поправил: mrX · Личное сообщение · #19 |
|
Создано: 06 июня 2006 09:19 · Поправил: Hellspawn · Личное сообщение · #20 |
|
Создано: 06 июня 2006 18:11 · Личное сообщение · #21 |
|
Создано: 06 июня 2006 23:44 · Личное сообщение · #22 Дизассемблирование [00401b7f] ("Проверка серийника-1"): В стеке: "12345123" (HEX - значение из ebx: 1 часть серийника) 00401B7F /$ 55 PUSH EBP 00401B80 |. 8BEC MOV EBP,ESP 00401B82 |. 83EC 0C SUB ESP,0C 00401B85 |. 53 PUSH EBX; В стек кладем ту самую часть серийника 00401B86 |. 56 PUSH ESI; Сохраняем "00000000"(?) 00401B87 |. 57 PUSH EDI; Hex-Символы серийника с позиции 9 по 16 00401B88 |. 8B7D 08 MOV EDI,DWORD PTR SS:[EBP+8] В edi - первые 8 символов 00401B8B |. 57 PUSH EDI; Первые 8 штук символов - в стеке 00401B8C |. 57 PUSH EDI; И еще раз то же самое... 00401B8D |. C745 F4 AAAAAA>MOV DWORD PTR SS:[EBP-C],8AAAAAAA; В память помещаем число 2326440618(dec) 00401B94 |. C745 F8 888888>MOV DWORD PTR SS:[EBP-8],888888;no comments... 00401B9B |. C745 FC 344003>MOV DWORD PTR SS:[EBP-4],80034034;-`-`-`-`- 00401BA2 |. 897D 08 MOV DWORD PTR SS:[EBP+8],EDI; SS: [0x63fb28] = "12345123" 00401BA5 |. E8 2AFFFFFF CALL KEYGENME.00401AD4; [Crazymath] 00401BAA |. 57 PUSH EDI 00401BAB |. 50 PUSH EAX 00401BAC |. E8 23FFFFFF CALL KEYGENME.00401AD4; [Crazymath] 00401BB1 |. 83C4 10 ADD ESP,10 00401BB4 |. 8BD8 MOV EBX,EAX 00401BB6 |. 33F6 XOR ESI,ESI Судя по всему, весь keygenme и нижеследующее написано на С++ с изрядной примесью ассемблера. Или я не прав? 00401BB8 |> FF74B5 F4 /PUSH DWORD PTR SS:[EBP+ESI*4-C] 00401BBC |. 53 |PUSH EBX 00401BBD |. E8 12FFFFFF |CALL KEYGENME.00401AD4 00401BC2 |. 50 |PUSH EAX 00401BC3 |. FF75 08 |PUSH DWORD PTR SS:[EBP+8] 00401BC6 |. E8 3CFFFFFF |CALL KEYGENME.00401B07 00401BCB |. 57 |PUSH EDI 00401BCC |. 53 |PUSH EBX 00401BCD |. 8945 08 |MOV DWORD PTR SS:[EBP+8],EAX 00401BD0 |. E8 FFFEFFFF |CALL KEYGENME.00401AD4; [Crazymath] 00401BD5 |. 57 |PUSH EDI 00401BD6 |. 50 |PUSH EAX 00401BD7 |. E8 F8FEFFFF |CALL KEYGENME.00401AD4; [Crazymath] 00401BDC |. 83C4 20 |ADD ESP,20 00401BDF |. 46 |INC ESI 00401BE0 |. 83FE 03 |CMP ESI,3 00401BE3 |. 8BD8 |MOV EBX,EAX 00401BE5 |.^7C D1 \JL SHORT KEYGENME.00401BB8 00401BE7 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8] 00401BEA |. 5F POP EDI 00401BEB |. 5E POP ESI 00401BEC |. 5B POP EBX 00401BED |. C9 LEAVE 00401BEE \. C3 RETN В стеке перед вызовом этой байды содержится: ;0063FB00 11111222:[esp] ;0063FB04 11111222:[esp+4] ;0063FB08 23333344:[esp+8] ;0063FB0C 00000000:[esp+C] ;0063FB10 11111222:[esp+10] Следовательно, можно посмотреть, что там понаркоманил автор в этой функции... ;=========================Процедурка интересная...======================== 00401AD4 /$ 53 PUSH EBX 00401AD5 |. 8B5C24 08 MOV EBX,DWORD PTR SS:[ESP+8]; symbols of serials (9-16) 00401AD9 |. 335C24 0C XOR EBX,DWORD PTR SS:[ESP+C]; zeroes -noliki (00000000) -xor- им, т.е. обнуляем 00401ADD |. 8B4424 08 MOV EAX,DWORD PTR SS:[ESP+8]; eax :=hexademical ( symbols of serials (9-16)) ; !!!Вот тут операции слегка логического характера и производятся: 00401AE1 |. 0FBAF0 1F BTR EAX,1F 00401AE5 |. 99 CDQ 00401AE6 |. 8B4C24 0C MOV ECX,DWORD PTR SS:[ESP+C]; наши первые 8 символов пароля в ecx 00401AEA |. 0FBAF1 1F BTR ECX,1F 00401AEE |. F7E9 IMUL ECX; EDX:EAX <- EAX * ECX (Что - то невообразимое) 00401AF0 |. 8BC2 MOV EAX,EDX 00401AF2 |. C1E0 02 SHL EAX,2;сдвиг логический на 2 00401AF5 |. 81E3 00000080 AND EBX,80000000; лог. операция "И" 00401AFB |. 0BC3 OR EAX,EBX; лог. операция "ИЛИ" 00401AFD |. 894424 08 MOV DWORD PTR SS:[ESP+8],EAX 00401B01 |. 8B4424 08 MOV EAX,DWORD PTR SS:[ESP+8] 00401B05 |. 5B POP EBX; возвращаем ebx 00401B06 \. C3 RETN; возвращаемся ;================================================================ ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. |
|
Создано: 06 июня 2006 23:50 · Личное сообщение · #23 |
|
Создано: 06 июня 2006 23:57 · Личное сообщение · #24 |
|
Создано: 07 июня 2006 01:19 · Личное сообщение · #25 |
|
Создано: 07 июня 2006 03:14 · Личное сообщение · #26 |
|
Создано: 07 июня 2006 10:49 · Личное сообщение · #27 |
|
Создано: 08 июня 2006 01:44 · Личное сообщение · #28 на почту свалилось еще одно письмо от автора =) Общее пожелание совпадает с мнением Ara и NG, зачем такие листинги приводить, включая даже опкоды O_o. Для упрощения описать функции, выкинув, понятное дело, опкоды, можно даже адреса убрать, если попадается функция, то push'и тоже убрать описав типа somefunc(a,b,c), хотя конечно может вам так удобней... например функцию CALL KEYGENME.00401AD4 легко привести к такому виду: long proc00401AD4(long a,long b)
есть взаимосвязь между btr и константой 80000000h ;) Функцию 00401B7F также преобразовать , свернуть цикл JL SHORT KEYGENME.00401BB8... |
|
Создано: 08 июня 2006 17:57 · Личное сообщение · #29 |
|
Создано: 12 июня 2006 02:39 · Личное сообщение · #30 Зря вы подзабили на это чудо. Очень даже не чего, прикольный. На анализ всех процедур проверок и генераций ушло часов 5. А на написание кейгена 2 дня Этот чертов С# недает вставлять АСМ код, покрайней мере я не допер как Так что пришлось писать все на чистом Си, зато выглядит красиво Хотя как там обойтись без брутфорса не совсем понятно, теоритически функцию проверки первой части ключа можно реверснуть, т.к. одно уравнение - одна неизвестная, вот только решать его круша поедет, когда тоже самое достигается за 5-6 итераций (приближений) к исходному значению. Хотелось бы узнать у автара идет "строгая" формула на генерацию ключа, или тоже подгоняет плавая ибо 004022CF |. E8 ABF8FFFF CALL Keygenme.00401B7F 004022D4 |. 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C] 004022D7 |. 2BC8 SUB ECX,EAX <<<<< CRC - (ключ после преобразований) 004022D9 |. 51 PUSH ECX 004022DA |. E8 0C040000 CALL Keygenme.004026EB <<<<< EAX = ECX 004022DF |. 3D 00020000 CMP EAX,200 <<<<< зачем такой большой промежуток? Если к нему написать неплохой туториал, где показать анализ кода и его реверс, то цены емуб небыло, т.к. народ обленился прет один БИТХАК 8268_12.06.2006_CRACKLAB.rU.tgz - KeyGen_me_by_freeExec.exe |
. 1 . 2 . >> |
eXeL@B —› Основной форум —› keygenme: простенькая вм с математикой |