frage zu einem patch

Hi.
Ich wollte zu Übungszwecken ein Programm zu dem ich eine gültige Serial besitze patchen, so dass keine Serial mehr notwendig ist.
Ich habe die Seriennummerüberprüfung gepatcht, so dass jede Nummer zum Erfolg führt. Gleichzeitig wurde das ganze unbeabsichtigt zu einem Inline Keygen, da das Programm die richtige Serial in der Erfolgsmeldung anzeigt. Allerdings wird der Dialog "Seriennummer eingeben" immer noch bei jedem Programmstart angezeigt. Nun könnte man natürlich einfach die angezeigte Serial verwenden, um das Programm ganz freizuschalten, aber ich wollte auch dieses Problem gerne durch einen Patch lösen. Ich habe festgestellt, dass das Speichern der eingegebenen Serial in der Registry geschieht, habe den entsprechenden Aufruf von RegSetValueExA gefunden, und habe die Anweisung geändert, die das entsprechende Argument von RegSetValueExA in das Register kopiert, das anschließend "gepusht" wird.
Snapshot davon habe ich angefügt.
Eigentlich sieht es so aus, als würde es funktionieren.
Das ist der einzige Aufruf von RegSetValueExA, der diesen Schlüssel ändert, dennoch ist der Wert dieses Schlüssels am Ende immer 0 und nicht, wie erwartet und gewünscht, die richtige Seriennummer.
Hat jemand eine Idee, woran das liegen kann?

cu Gabriel

Edit:
Die geänderte Zeile ist diese: 00446102 MOV ECX,WmrProFi.0049FE10
Im Original stand dort: LEA ECX,DWORD PTR SS:[ESP+18]
Wobei das Ziel hier die vom User eingegebene Serial war.
 
Bitte keine konkreten Programmnamen angeben - Screenshot deshalb entfernt.

lea ecx,DWORD ptr [esp+18] sollte nur 4 Bytes groß sein, Du überschreibst diese Anweisung dagegen mit 5 Byte-Anweisung (MOV ECX,xyz.0049FE10) und dann auch noch paar Nops. Entweder fehlt also irgendwas hier beim API Aufruf (also danach im Regedit prüfen, ob der Aufruf korrekt den Schlüssel schreibt) oder der Schlüssel wird nachträglich gelöscht - z.B per RegDeleteValue. Setze einfach auf alle Reg-APIs einen BP . Alternative wäre beim Programmstart die Stelle zu erwischen, wenn die Nummer aus der Registry ausgelesen wird.
 
Zurück
Oben