Jetzt bist du ein witzbold.
MOV EAX,DWORD PTR DS:[EBX]
ist eax = 3258 und das wird IMMER ausgeführt, egal was man eingibt.
das heisst es wird an 0x004013C7 IMMER gesprungen und somit
natürlich auch nie an der Addresse (was nötig wäre)i:
004013EC. Desweiteren wird die erste Zahl bzw der erste Buchstabe von den eingegeben password garnicht gecheckt.
DH:
Erste Zahl bzw Buchstabe egal.
So weiter....
PW muss sein XBCDEF (erste wird wie gesagt nicht gescheckt ),
damit hier --->
004013A4 |. /7F 1A JG SHORT CrackMe1.004013C0
nicht gesprungen wird und somit nicht 3258 in EAX gepackt wird.
Jedoch ist es egal ob dort gesprungen wird oder in den anderen möglichen jump (in der PW check function) 3258 wird immer in EAX gesetzt.
Weil beide jumps zu der
MOV EAX,DWORD PTR DS:[EBX]
Zeile springen und wie bereits gesagt, ändert sich ebx nicht.
Wers nicht glaubt kann es testen.
Code:
004013C2 |. 3D 5A320000 CMP EAX,325A
004013C7 |. 7C 1E JL SHORT CrackMe1.004013E7
004013C9 |. C703 BEBA0000 MOV DWORD PTR DS:[EBX],0BABE
004013CF |> 8D9D E4FDFFFF LEA EBX,[LOCAL.135]
004013D5 |. 891C24 MOV DWORD PTR SS:[ESP],EBX
004013D8 |. E8 83000000 CALL CrackMe1.00401460
004013DD |. 8D65 F4 LEA ESP,[LOCAL.3]
004013E0 |. 31C0 XOR EAX,EAX
004013E2 |. 5B POP EBX ; CrackMe1.00403016
004013E3 |. 5E POP ESI ; CrackMe1.00403016
004013E4 |. 5F POP EDI ; CrackMe1.00403016
004013E5 |. 5D POP EBP ; CrackMe1.00403016
004013E6 |. C3 RETN
004013E7 |> 3D BEBA0000 CMP EAX,0BABE ; |
004013EC |.^ 74 E1 JE SHORT CrackMe1.004013CF ; |
ps:
auch wenn das pw pBCDEF ist, damit am anfang gesprungen wird ändert sich EBX nicht
(da der erste Buchstabe doch verglichen wird und zwar mit p, aber egal wie mans dreht und wendet, es wird in eax immer 2258 sein).
Soviel zu deinem neuen hochgeladen crackme nachdem ich dein vorheriges nach 20 sekunden geknackt hab :>
004013EC an der Zeile müsste übrigens gesprungen werden
damit "das kannst du besser" nicht ausgegeben wird, aber ich hab ja erklärt,
das es unmöglich ist das dort gesprungen wird weil dort halt vergleichen wird
ob eax 0xBABE ist.
Insgesamt wird verglichen ob der erste Buchstabe "p" ist, der zweite "B" der dritte "C" der vierte
"D" und der letzte "E"