Checkrutine umschreiben mündet in Chaos xD

Hi @ All
Also ich hab folgendes Problem:
Ich hab ein KeyGenMe das den Key in einem Call generiert,diesem Call folgt dann ein Bedingter Jump,also so z.B.:
Code:
call 00403BCC
jz   00406664
Sooo jetzt wird in dem Call das Zeroflag gesetzt oder eben nicht,und dann mit dem
Code:
jz   00406664
überprüft,oder?
Naja wenn ich soweit richtig leige ist schon mal gut :D
Naja der Call sieht so aus:
Code:
00403BCC  /$ 53             PUSH EBX
00403BCD  |. 56             PUSH ESI
00403BCE  |. 57             PUSH EDI
00403BCF     89C6           MOV ESI,EAX
00403BD1     89D7           MOV EDI,EDX
00403BD3     39D0           CMP EAX,EDX
00403BD5     0F84 8F000000  JE programm_.00403C6A
00403BDB     85F6           TEST ESI,ESI
00403BDD     74 68          JE SHORT programm_.00403C47
00403BDF     85FF           TEST EDI,EDI
00403BE1     74 6B          JE SHORT programm_.00403C4E
00403BE3     8B46 FC        MOV EAX,DWORD PTR DS:[ESI-4]
00403BE6     8B57 FC        MOV EDX,DWORD PTR DS:[EDI-4]
00403BE9     29D0           SUB EAX,EDX
00403BEB     77 02          JA SHORT programm_.00403BEF
00403BED     01C2           ADD EDX,EAX
00403BEF     52             PUSH EDX
00403BF0     C1EA 02        SHR EDX,2
00403BF3     74 26          JE SHORT programm_.00403C1B
00403BF5     8B0E           /MOV ECX,DWORD PTR DS:[ESI]
00403BF7     8B1F           |MOV EBX,DWORD PTR DS:[EDI]
00403BF9     39D9           |CMP ECX,EBX
00403BFB     75 58          |JNZ SHORT programm_.00403C55
00403BFD     4A             |DEC EDX
00403BFE     74 15          |JE SHORT programm_.00403C15
00403C00     8B4E 04        |MOV ECX,DWORD PTR DS:[ESI+4]
00403C03     8B5F 04        |MOV EBX,DWORD PTR DS:[EDI+4]
00403C06     39D9           |CMP ECX,EBX
00403C08     75 4B          |JNZ SHORT programm_.00403C55
00403C0A     83C6 08        |ADD ESI,8
00403C0D     83C7 08        |ADD EDI,8
00403C10     4A             |DEC EDX
00403C11    ^75 E2          \JNZ SHORT programm_.00403BF5
00403C13     EB 06          JMP SHORT programm_.00403C1B
00403C15     83C6 04        ADD ESI,4
00403C18     83C7 04        ADD EDI,4
00403C1B     5A             POP EDX
00403C1C     83E2 03        AND EDX,3
00403C1F     74 22          JE SHORT programm_.00403C43
00403C21     8B0E           MOV ECX,DWORD PTR DS:[ESI]
00403C23     8B1F           MOV EBX,DWORD PTR DS:[EDI]
00403C25     38D9           CMP CL,BL
00403C27     75 41          JNZ SHORT programm_.00403C6A
00403C29     4A             DEC EDX
00403C2A     74 17          JE SHORT programm_.00403C43
00403C2C     38FD           CMP CH,BH
00403C2E     75 3A          JNZ SHORT programm_.00403C6A
00403C30     4A             DEC EDX
00403C31     74 10          JE SHORT programm_.00403C43
00403C33     81E3 0000FF00  AND EBX,0FF0000
00403C39     81E1 0000FF00  AND ECX,0FF0000
00403C3F     39D9           CMP ECX,EBX
00403C41     75 27          JNZ SHORT programm_.00403C6A
00403C43     01C0           ADD EAX,EAX
00403C45     EB 23          JMP SHORT programm_.00403C6A
00403C47     8B57 FC        MOV EDX,DWORD PTR DS:[EDI-4]
00403C4A     29D0           SUB EAX,EDX
00403C4C     EB 1C          JMP SHORT programm_.00403C6A
00403C4E     8B46 FC        MOV EAX,DWORD PTR DS:[ESI-4]
00403C51     29D0           SUB EAX,EDX
00403C53     EB 15          JMP SHORT programm_.00403C6A
00403C55     5A             POP EDX
00403C56     38D9           CMP CL,BL
00403C58     75 10          JNZ SHORT programm_.00403C6A
00403C5A     38FD           CMP CH,BH
00403C5C     75 0C          JNZ SHORT programm_.00403C6A
00403C5E     C1E9 10        SHR ECX,10
00403C61     C1EB 10        SHR EBX,10
00403C64     38D9           CMP CL,BL
00403C66     75 02          JNZ SHORT programm_.00403C6A
00403C68     38FD           CMP CH,BH
00403C6A  |> 5F             POP EDI
00403C6B  |. 5E             POP ESI
00403C6C  |. 5B             POP EBX
00403C6D  \. C3             RETN
Jetzt wollte ich ungefähr sowas draus machen:
Code:
00403BCC  /$ 53             PUSH EBX
00403BCD  |. 56             PUSH ESI
00403BCE  |. 57             PUSH EDI
>>>>>>>>>>>00403BCF     89C6           JMP 00403C66<<<<<<<<<<<
00403BD1     89D7           MOV EDI,EDX      
00403BD3     39D0           CMP EAX,EDX
00403BD5     0F84 8F000000  JE programm_.00403C6A
00403BDB     85F6           TEST ESI,ESI
00403BDD     74 68          JE SHORT programm_.00403C47
00403BDF     85FF           TEST EDI,EDI
00403BE1     74 6B          JE SHORT programm_.00403C4E
00403BE3     8B46 FC        MOV EAX,DWORD PTR DS:[ESI-4]
00403BE6     8B57 FC        MOV EDX,DWORD PTR DS:[EDI-4]
00403BE9     29D0           SUB EAX,EDX
00403BEB     77 02          JA SHORT programm_.00403BEF
00403BED     01C2           ADD EDX,EAX
00403BEF     52             PUSH EDX
00403BF0     C1EA 02        SHR EDX,2
00403BF3     74 26          JE SHORT programm_.00403C1B
00403BF5     8B0E           /MOV ECX,DWORD PTR DS:[ESI]
00403BF7     8B1F           |MOV EBX,DWORD PTR DS:[EDI]
00403BF9     39D9           |CMP ECX,EBX
00403BFB     75 58          |JNZ SHORT programm_.00403C55
00403BFD     4A             |DEC EDX
00403BFE     74 15          |JE SHORT programm_.00403C15
00403C00     8B4E 04        |MOV ECX,DWORD PTR DS:[ESI+4]
00403C03     8B5F 04        |MOV EBX,DWORD PTR DS:[EDI+4]
00403C06     39D9           |CMP ECX,EBX
00403C08     75 4B          |JNZ SHORT programm_.00403C55
00403C0A     83C6 08        |ADD ESI,8
00403C0D     83C7 08        |ADD EDI,8
00403C10     4A             |DEC EDX
00403C11    ^75 E2          \JNZ SHORT programm_.00403BF5
00403C13     EB 06          JMP SHORT programm_.00403C1B
00403C15     83C6 04        ADD ESI,4
00403C18     83C7 04        ADD EDI,4
00403C1B     5A             POP EDX
00403C1C     83E2 03        AND EDX,3
00403C1F     74 22          JE SHORT programm_.00403C43
00403C21     8B0E           MOV ECX,DWORD PTR DS:[ESI]
00403C23     8B1F           MOV EBX,DWORD PTR DS:[EDI]
00403C25     38D9           CMP CL,BL
00403C27     75 41          JNZ SHORT programm_.00403C6A
00403C29     4A             DEC EDX
00403C2A     74 17          JE SHORT programm_.00403C43
00403C2C     38FD           CMP CH,BH
00403C2E     75 3A          JNZ SHORT programm_.00403C6A
00403C30     4A             DEC EDX
00403C31     74 10          JE SHORT programm_.00403C43
00403C33     81E3 0000FF00  AND EBX,0FF0000
00403C39     81E1 0000FF00  AND ECX,0FF0000
00403C3F     39D9           CMP ECX,EBX
00403C41     75 27          JNZ SHORT programm_.00403C6A
00403C43     01C0           ADD EAX,EAX
00403C45     EB 23          JMP SHORT programm_.00403C6A
00403C47     8B57 FC        MOV EDX,DWORD PTR DS:[EDI-4]
00403C4A     29D0           SUB EAX,EDX
00403C4C     EB 1C          JMP SHORT programm_.00403C6A
00403C4E     8B46 FC        MOV EAX,DWORD PTR DS:[ESI-4]
00403C51     29D0           SUB EAX,EDX
00403C53     EB 15          JMP SHORT programm_.00403C6A
00403C55     5A             POP EDX
00403C56     38D9           CMP CL,BL
00403C58     75 10          JNZ SHORT programm_.00403C6A
00403C5A     38FD           CMP CH,BH
00403C5C     75 0C          JNZ SHORT programm_.00403C6A
00403C5E     C1E9 10        SHR ECX,10
00403C61     C1EB 10        SHR EBX,10
00403C64     38D9           CMP CL,BL
>>>>>>>>>>>00403C66     75 02          NOP<<<<<<<<<<<
>>>>>>>>>>>00403C68     38FD           CMP EAX,EAX<<<<<<<<<<<
00403C6A  |> 5F             POP EDI
00403C6B  |. 5E             POP ESI
00403C6C  |. 5B             POP EBX
00403C6D  \. C3             RETN
Das er also gleich Jumpt dann EAX mit EAX vergleicht(Zeroflag setzen) und dann wieder Returnt
Aber dann will er nimmer Starten o_O
Mach ich hier nen Grundlegenden Fehler oder is einfach ein Detail falsch?

Danke im voraus,
Xalon
 
Wieso so kompliziert? Patch das jz zu einem jnz bzw. jmp, wenn du springen willst.
 
Jaja hab ich ja und es hat auch gefunzt aber ich möchte es trotzdem auf die andere Art lösen,Übung macht den Meister :D

Xalon
 
patched.JPG

Das kommt dann :/
Mach ich einen Fehler beim umschreiben?

Xalon
 
naja, wer weiß wozu z.B die Schleife an 00403BF5 - 00403C11 und der Rest des Codes gut sind - vielleicht laden sie bestimmte Teile vor oder decrypten diese - und wenn Du dann zwar den Flag richtig setzt, aber eben der Code nicht ausgeführt wurde, kracht es.
Versuch mal lieber statt am Anfang einen Jump direkt ans Ende zu setzen und da die Adresse 403c66 zu modifizieren, Dich dem "Programm" anzupassen und die Flagmodifikation auf 00403C6A zu verlagern - Du musst dann zwar auch die POPs selber "verschieben" (also selber eingeben) und auch den RETN - man fügt also einen 2-Byte Befehl ein, dafür lässt man dem Programm einen "natürlichen" Ablauf - und zwischen den Funktionen (also direkt nach RETN und bevor die nächste Funktion kommt) lassen die meisten Compiler eher noch Platz (wegen der Codeausrichtung/optimierung) so dass man noch etwas Spielraum hat. Noch günstiger wäre es, erst da vo RETN steht, die Flagmodifikation reinzutun (und RETN danach zu schreiben), dann braucht man nichts zu verschieben und vom Prinzip her ist es dasselbe.
Also z.B

Code:
00403C6D 38FD         CMP EAX,EAX
00403C6F   C3         RETN
Auch wenn Olly meistens irgendwelche "Befehle" direkt nach RETN anzeigt - sehr oft ist es Junkcode.Zumindest kann man es ausprobieren ;)
 
Ok danke ich werds ausprobieren,hab zwar jetzt schon die Serial gesnifft aber jetzt gehts ums Prinzip :D
Ach und ich glaub ich weiß jetzt an was es liegen könnte,die funktion wird 15 mal aufgerufen und zwar mit Hardcoded Werten wie Form1 oder so o_o

Xalom
 
Zurück
Oben