| Hacks & Crackmes Tests, Fragen oder Hilfestellungen. Crackmes und Hackits werden hier diskutiert. |
Diskussion: Rückberechnung einer Crack Routine im Forum Hacks & Crackmes, in der Kategorie Software Home; Wie löst man folgendes Schema: 1. Eingabestring durchläuft eine beliebige Routine, die einen 32 u Bit Wert als Ergebnis zurückliefert ...
![]() |
| | #1 (permalink) |
| Wie löst man folgendes Schema: 1. Eingabestring durchläuft eine beliebige Routine, die einen 32 u Bit Wert als Ergebnis zurückliefert 2. Das Zurückgelieferte wird mit einer Konstante verglichen - sind sie gleich, darfs weiter gehen / man bekommt die Goodboy Message Ich denke mal, man müsste da die Routine genauer untersuchen und versuchen, einen String durch Rückberechnung (Konstante) zu generieren. Konkretes Beispiel: Code: Routine: MOVZX ECX,BYTE PTR DS:[EDI] // EDI = STRING ADD EAX,ECX ROR EAX,8 XOR EAX,7B INC EDI CMP EDI,ESI // ESI = (Startwert von) EDI + Stringlänge JNZ !back! Später: cmp eax, AAE23242h jnz --BadBoy-- jmp --GoodBoy-- MfG der Einzelgänger | |
| | |
| HaBOT | |
| |
| | #3 (permalink) | |
| Moderator ![]() Registriert seit: 30.03.04 ![]() Likes: 14 | Hallo, das Problem könnte evt. sein, dass du in deinem Post kein Fragezeichen verwendest und man somit sehr schwierig eine Frage, die uns gerne stellen möchtest, findet. Und ohne Frage kann hier auch keiner sinnvoll antworten. Zitat:
Nur durch (Eingabe, Ausgabe)-Paare ist es vollkommen unmöglich, auf die zugrundeliegende Funktion zu schließen. Da hilft nur den Code zu analysieren. | |
| | |
| | #4 (permalink) |
| Senior Member Registriert seit: 03.09.05 ![]() Likes: 0 | Das mit der Rückberechnung ist allerdings nicht immer so einfach und ist je nach Qualität der Hashfunktion auch teils nur durch Brute-Force zu lösen. |
| | |
| | #5 (permalink) |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() Likes: 156 | Bei ROR und XOR lässt sich die Routine meistens gut umkehren. Bsp (schnell in Olly eingetippt): Code: CPU Disasm Address Hex dump Command Comments 00401030 /. B8 4232E2AA MOV EAX,AAE23242 ; startwert 00401035 |. BF 00204000 MOV EDI,OFFSET Crackme.00402000 ; ein leerer string 0040103A |. 83C7 1F ADD EDI,1F ; starte am Ende des Strings 0040103D |> 83F0 7B /XOR EAX,0000007B 00401040 |. C1C0 08 |ROL EAX,8 ; ror rueckgaengig machen 00401043 |. 0FB6C8 |MOVZX ECX,AL ; zeichen "extrahieren" 00401046 |. 29C8 |SUB EAX,ECX ; volstndigkeitshalber das Zeichen subtrahieren 00401048 |. 880F |MOV BYTE PTR DS:[EDI],CL ; in den String schreiben 0040104A |. 4F |DEC EDI ; annahme fuer Startwert von EAX==0 0040104B |. 3D 007B7B7B |CMP EAX,7B7B7B00 ; da ja sonstige Infos fehlen ;) 00401050 |.^ 75 EB \JNE SHORT 0040103D bekomme ich "Erzeugerstring" Code: CPU Dump Address Hex dump ASCII 0040201C 39 32 E2 AA| 92 Um eine "anständige" Ausgabe zu erhalten, sollte man einige Infos mehr einbeziehen (was darf eingegeben werden? Z.B Zahlen oder Groß/Kleinbuchstaben) und dann das auch in den Algo einarbeiten (subtrahiere statt dem kompletten AL Wert nur ASCII Wert von 0 oder 'A'/ 'a').
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. |
| | |
| | #6 (permalink) | |
| Themenstarter | Zitat:
@CDW Och mannn ... das hätt ich mir aber auch wirklich selber denken können.. Sorry, die Frage hat sich gelöst.. Die schlaflosen Nächte machen mir manchmal echt zu schaffen xD MfG und danke nochmal | |
| | |
![]() |
| | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| eMule CRACK | andi_hauser | Downloads | 4 | 23.02.04 14:41 |
| 1.6 Lan Crack | Reaper | Games | 2 | 04.11.03 17:02 |