Na IV roku studiów? To faktycznie masz "dużo" roboty...
Zabezpieczenie nie zostało złamane, od początku było wyraźnie napisane o keygenie (i jak widać dwie osoby które rozwiązały to przed Tobą to zrozumiały)...
W rzeczywistych systemach nie ma zasad, że musi być generator plików kluczy, dlatego wszystkie chwyty dozwolone, poszedłem najkrótszą drogą
A gdyby to był fragment kodu wrzuconego na mikroprocesor? Pensetą byś go patchował? Każde wyzwanie ma pewne założenia, inaczej nie byłoby zabawy ;)
Ze wszystkich możliwych sposobów na patcher wybrałeś najbardziej lamerski z możliwych. Mianowicie: otwórz -> seek:
.text:00401176 push 0 ; dwMoveMethod
.text:00401178 push 0 ; lpDistanceToMoveHigh
.text:0040117A push lDistanceToMove ; lDistanceToMove
.text:00401180 push hFile ; hFile
.text:00401186 call SetFilePointer
-> nadpisz:
.text:004011A0 push 0 ; lpOverlapped
.text:004011A2 push offset NumberOfBytesWritten ; lpNumberOfBytesWritten
.text:004011A7 push nNumberOfBytesToWrite ; nNumberOfBytesToWrite
.text:004011AD push offset unk_404004 ; lpBuffer
.text:004011B2 push hFile ; hFile
.text:004011B8 call WriteFile
-> zamknij.
Ten patcher nie będzie działał gdybym chociażby przekompilował program, więc nawet nie można tego nazwać sensownym patcherem.