| Hacks & Crackmes Tests, Fragen oder Hilfestellungen. Crackmes und Hackits werden hier diskutiert. |
Diskussion: crackme#7 im Forum Hacks & Crackmes, in der Kategorie Software Home; Anzeige Hallo, hab mal wieder ein neues Crackme geschrieben. Lösung ist ein gültiges CD-Image + Keygen. Ist eigentlich nicht so ...
![]() |
| | #1 (permalink) |
| Registriert seit: 27.02.07 ![]() Likes: 2 | crackme#7 Anzeige Hallo, hab mal wieder ein neues Crackme geschrieben. Lösung ist ein gültiges CD-Image + Keygen. Ist eigentlich nicht so schwer, nur bisschen Krypto und was zum Knobeln. Viel Spaß! PS: Falls jemand wegen dem Anti-Debugger-Trick wütend sein sollte, den hab ich mir selbst ausgedacht :) Auch CD-Images kann man mit einem Hexeditor manipulieren. Ich hab mein ISO-Testimage mit Nero erstellt (als Rekorder "Image Recorder" nehmen). Zum Testen virtuelles Laufwerk (z.B. DAEMON Tools/CloneCD) nehmen. |
| | |
| | #2 (permalink) |
| Senior Member Registriert seit: 03.09.05 ![]() Likes: 0 | Also bei mir gibt es noch 'nen kleines Problem mit dem ISO(im Anhang). Der Code wird zwar richtig entschlüsselt, doch das Programm stürzt darauf hin ab. Ich hab das Ganze dann gedumpt und bisschen gepatcht, dass ich mir auch die Keyprüfung "live" ansehen kann. Im Anhang sind mein Image und ein Keygen. Klasse CrackMe übrigens spoiler |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Themenstarter Registriert seit: 27.02.07 ![]() Likes: 2 | Es freut mich, wenn es dir gefallen hat, jedoch funktioniert dein Keygen bei mir nicht. Hier ist mal meine Lösung. |
| | |
| | #4 (permalink) |
| Senior Member Registriert seit: 03.09.05 ![]() Likes: 0 | Das ist seltsam, also bei mir funktioniert sowohl mein Keygen, als auch deiner, jedoch weder mein noch dein Image(Alles auf win2k) akzeptiert(beide Male der selbe Absturz). Also der Überprüfungsalgo sieht bei mir nach Entschlüsselung so aus: Code: 0040144D /$ 8925 A8754000 MOV DWORD PTR DS:[4075A8], ESP 00401453 |. 892D AC754000 MOV DWORD PTR DS:[4075AC], EBP 00401459 |. 68 14764000 PUSH t2.00407614 0040145E |. FF35 10764000 PUSH DWORD PTR DS:[407610] 00401464 |. E8 23010000 CALL <t2.crc32> 00401469 |. 8BD8 MOV EBX, EAX 0040146B |. 6A 32 PUSH 32 ; /Length = 32 (50.) 0040146D |. 68 62774000 PUSH t2.00407762 ; |Destination = t2.00407762 00401472 |. E8 1B080000 CALL <JMP.&kernel32.RtlZeroMemory> ; \RtlZeroMemory 00401477 |. 68 BE704000 PUSH t2.004070BE ; ASCII "E903EF989D260FA9" 0040147C |. 68 CF704000 PUSH t2.004070CF ; ASCII "807DCE21717D22AD" 00401481 |. 68 62774000 PUSH t2.00407762 ; ASCII "Y003M00=" 00401486 |. 68 25764000 PUSH t2.00407625 0040148B |. E8 70000000 CALL t2.00401500 00401490 |. 68 62774000 PUSH t2.00407762 ; ASCII "Y003M00=" 00401495 |. 68 BA704000 PUSH t2.004070BA ; |format = "%lx" 0040149A |. 68 62774000 PUSH t2.00407762 ; |s = "Y003M00=" 0040149F |. FF15 90604000 CALL DWORD PTR DS:[<&msvcrt.sscanf>] ; \sscanf 004014A5 |. 83C4 0C ADD ESP, 0C 004014A8 |. A1 62774000 MOV EAX, DWORD PTR DS:[407762] 004014AD |. 33C3 XOR EAX, EBX 004014AF |. 25 FFFFFF7F AND EAX, 7FFFFFFF 004014B4 |. 3D 0F270000 CMP EAX, 270F 004014B9 |. 7F 36 JG SHORT t2.004014F1 004014BB |. 50 PUSH EAX ; /<%lu> 004014BC |. 68 B6704000 PUSH t2.004070B6 ; |Format = "%lu" 004014C1 |. 68 DE144000 PUSH t2.004014DE ; |s = t2.004014DE 004014C6 |. E8 EF060000 CALL <JMP.&user32.wsprintfA> ; \wsprintfA 004014CB |. 68 E8144000 PUSH t2.004014E8 ; SE handler installation 004014D0 |. 64:FF35 00000000 PUSH DWORD PTR FS:[0] 004014D7 |. 64:8925 00000000 MOV DWORD PTR FS:[0], ESP 004014DE |. CC INT3 004014DF |. CC INT3 004014E0 |. CC INT3 004014E1 |. CC INT3 004014E2 |. CC INT3 004014E3 |. B8 01000000 MOV EAX, 1 004014E8 |$ 64:8F05 00000000 POP DWORD PTR FS:[0] ; Structured exception handler 004014EF |. EB 02 JMP SHORT t2.004014F3 004014F1 |> 33C0 XOR EAX, EAX 004014F3 |> 8B25 A8754000 MOV ESP, DWORD PTR DS:[4075A8] 004014F9 |. 8B2D AC754000 MOV EBP, DWORD PTR DS:[4075AC] 004014FF \. C3 RETN Code: 77E089CE F643 2B C0 TEST BYTE PTR DS:[EBX+2B], 0C0 Abgesehen von dem CD-Check, der ja leider abstürzt und dem Antidebugger-Trick ist nichts dran rausgepatcht.(An der Originaldatei kann ich das aufgrund des Absturzes nicht testen, der notwendige Code zur Überprüfung ist aber drinne(ist nach der Entschlüsselung gedumpt): http://img217.imageshack.us/my.php?image=screendc5.png Ich sehe auch gerade, dass ich bei meinem Keygen eine Sache ausgenutzt habe, die nicht immer gültig sein muss: Nach einer Exception, wird bei mir(win2k) der Exception-Handler mit eax!=0 betreten, da der xor eax,eax-Befehl jedoch übersprungen wird, ist eax noch !=0(ist das bei dir anders?), somit also die Serial gültig, auch wenn der entschlüsselte Code eine Exception ausgelöst hat, was wahrscheinlich nicht sein sollte. Um das zu ändern, sodass Keygen auch so funktionieren sollte, muss man einfach Zeile 18 damit ersetzen: Code: DWORD crc = c.FullCRC((unsigned char*)name.c_str(),name.length()) ^ 0x176f; |
| | |
| | #5 (permalink) |
| Themenstarter Registriert seit: 27.02.07 ![]() Likes: 2 | Unter WinXP steht 0 in eax, wenn der Exceptionhandler eingreifen musste (hatte nicht gedacht, dass es Unterschiede zwischen den Windowsversionen gibt). Welche Api ist bei dir denn bei 77E089CE? Code: DWORD crc = c.FullCRC((unsigned char*)name.c_str(),name.length()) ^ 0x176f; Um noch ein wenig Motivation zu schaffen: Wenn jemand ein Tutorial schreibt, gibt es den Quellcode |
| | |
| | #6 (permalink) | |
| Senior Member Registriert seit: 03.09.05 ![]() Likes: 0 | Ok, ich habe noch rausgefunden, dass auch der Keygen mit führenden Nullen im CRC Probleme bekommt, daran lag das Problem. Als Patch einfach dies als Zeile 20: Code: sprintf(serial_t,"%08x",crc); Zitat:
Code: 77E08938 55 PUSH EBP 77E08939 8BEC MOV EBP, ESP 77E0893B 83EC 14 SUB ESP, 14 77E0893E 53 PUSH EBX 77E0893F 8B5D 08 MOV EBX, DWORD PTR SS:[EBP+8] 77E08942 56 PUSH ESI 77E08943 57 PUSH EDI 77E08944 0FB743 2A MOVZX EAX, WORD PTR DS:[EBX+2A] 77E08948 8B3B MOV EDI, DWORD PTR DS:[EBX] 77E0894A 33F6 XOR ESI, ESI 77E0894C 3BC6 CMP EAX, ESI 77E0894E 897D 08 MOV DWORD PTR SS:[EBP+8], EDI 77E08951 0F84 5A010000 JE user32.77E08AB1 77E08957 3D A2020000 CMP EAX, 2A2 77E0895C 0F85 93050000 JNZ user32.77E08EF5 77E08962 53 PUSH EBX 77E08963 E8 4B060000 CALL user32.77E08FB3 77E08968 85C0 TEST EAX, EAX 77E0896A 0F84 85050000 JE user32.77E08EF5 77E08970 39B3 98000000 CMP DWORD PTR DS:[EBX+98], ESI 77E08976 0F85 65010000 JNZ user32.77E08AE1 77E0897C 8B7D 0C MOV EDI, DWORD PTR SS:[EBP+C] 77E0897F 8975 FC MOV DWORD PTR SS:[EBP-4], ESI 77E08982 83FF 70 CMP EDI, 70 77E08985 0F84 82030000 JE user32.77E08D0D 77E0898B 8B83 9C000000 MOV EAX, DWORD PTR DS:[EBX+9C] 77E08991 8B75 14 MOV ESI, DWORD PTR SS:[EBP+14] 77E08994 8B00 MOV EAX, DWORD PTR DS:[EAX] 77E08996 85C0 TEST EAX, EAX 77E08998 74 3E JE SHORT user32.77E089D8 77E0899A 8BD0 MOV EDX, EAX 77E0899C B9 000000C0 MOV ECX, C0000000 77E089A1 23D1 AND EDX, ECX 77E089A3 3BD1 CMP EDX, ECX 77E089A5 0F84 44010000 JE user32.77E08AEF 77E089AB 56 PUSH ESI 77E089AC FF75 10 PUSH DWORD PTR SS:[EBP+10] 77E089AF 57 PUSH EDI 77E089B0 FF75 08 PUSH DWORD PTR SS:[EBP+8] 77E089B3 50 PUSH EAX 77E089B4 E8 D7A2FFFF CALL user32.77E02C90 77E089B9 8B4D 08 MOV ECX, DWORD PTR SS:[EBP+8] ; hierhin kehrt die Dialog-Routine zurück 77E089BC B2 01 MOV DL, 1 77E089BE 8945 FC MOV DWORD PTR SS:[EBP-4], EAX 77E089C1 E8 27C0FFFF CALL user32.77E049ED 77E089C6 85C0 TEST EAX, EAX 77E089C8 0F84 D1050000 JE user32.77E08F9F 77E089CE F643 2B C0 TEST BYTE PTR DS:[EBX+2B], 0C0 ; AV hier | |
| | |
| | #7 (permalink) | |
| Senior Member Registriert seit: 03.09.05 ![]() Likes: 0 | Zitat:
http://en.wikipedia.org/wiki/X86_cal...ntions#stdcall | |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Crackme#1 | X360 Andy | Hacks & Crackmes | 9 | 13.08.09 17:30 |
| Third Crackme | .tails | Hacks & Crackmes | 22 | 06.08.05 03:03 |
| First Crackme | .tails | Hacks & Crackmes | 4 | 05.08.05 23:21 |
| CrackMe 1 | xlro | Hacks & Crackmes | 5 | 18.07.05 19:36 |
| Crackme 1 | Mobius | Hacks & Crackmes | 10 | 10.10.04 11:10 |