7/21/00
version 202
* Referenced by a CALL at Addresses:
|:0043E057 , :0043E7F0 , :00443BE1 , :00449AAD , :0044B2C0
|
:0043C4F8 55 push ebp
:0043C4F9 8BEC mov ebp, esp
change the 55 to C3 (ret)
----------------------------------------------------
version 203:
* Referenced by a CALL at Addresses:
|:00441620 , :00446A9A , :004498BF , :0044C4B3 , :0044DCBC
|
:0043F820 55 push ebp
change the 55 to C3
---------------------------------------------------
looking for search & replace crack (version 203)
First, we happened on this code while searching for registration keywords:
* Possible StringData Ref from Code Obj ->"fsreg.dll"
|
:0043F976 68A8FB4300 push 0043FBA8
* Reference To: kernel32.LoadLibraryA, Ord:0000h
|
:0043F97B E88865FCFF Call 00405F08
Looking up a few lines we find the begining of the function call
(file location 0003ec20)
* Referenced by a CALL at Addresses:
|:00441620 , :00446A9A , :004498BF , :0044C4B3 , :0044DCBC
|
:0043F820 55 push ebp
:0043F821 8BEC mov ebp, esp
:0043F823 81C4ECFEFFFF add esp, FFFFFEEC
:0043F829 53 push ebx
:0043F82A 56 push esi
:0043F82B 57 push edi
:0043F82C 33D2 xor edx, edx
:0043F82E 8995F0FEFFFF mov dword ptr [ebp+FFFFFEF0], edx
:0043F834 8995ECFEFFFF mov dword ptr [ebp+FFFFFEEC], edx
:0043F83A 8BF0 mov esi, eax
:0043F83C 33C0 xor eax, eax
:0043F83E 55 push ebp
:0043F83F 6860FB4300 push 0043FB60
:0043F844 64FF30 push dword ptr fs:[eax]
:0043F847 648920 mov dword ptr fs:[eax], esp
and look at where the return value is examined:
:004498BF E85C5FFFFF call 0043F820
:004498C4 83F80D cmp eax, 0000000D <----
:004498C7 0F8489000000 je 00449956
:004498CD 83F81A cmp eax, 0000001A <----
:004498D0 7525 jne 004498F7
:004498D2 A190214500 mov eax, dword ptr [00452190]
:004498D7 833800 cmp dword ptr [eax], 00000000
:004498DA 747A je 00449956
:004498DC 6A00 push 00000000
:004498DE 6A01 push 00000001
:004498E0 68D00B0000 push 00000BD0
:004498E5 A1443A4500 mov eax, dword ptr [00453A44]
:004498EA E83D76FDFF call 00420F2C
:004498EF 50 push eax
so let's try manually moving in 0000000D and 0000001A and see what happens:
B81A000000 mov eax, 0000001A
B80D000000 mov eax, 0000000D
followed by a C3 ret of course.
both seem to make the program unregistered. wierd.
doing mov eax, 000000FF makes it registered.
at another call to this func we see a jump if less than 0000001A.
Any value greater than 0000001A seems to make it really registered.
----------------------
Looking at version 202 and version 203, a search and replace patch should be
based on preceding bytes:
change:
8BC0 558B EC81 C4?? FEFF FF53 5657
to:
8bC0 B8FF 0000 00C3 0000 0000 0000
8BC0558BEC81C4??FEFFFF535657
8BC0B8FF000000C3000000000000
----------------------
Change "Registered to:"
to "Registered "
(this is for the about box).
----------------------------------
wierd how the "(Registered to )" string on top of window is encoded at
file location 0004ba80)
"(...........R...........egi.........ste.........red......... to ............)"
28000000FFFFFFFF0100000052000000FFFFFFFF0300000065676900FFFFFFFF0300000073746500FFFFFFFF0300000072656400FFFFFFFF0400000020746F2000000000FFFFFFFF0100000029
so we can change this to
" ........... ........... ......... ......... ......... ............ "
20000000FFFFFFFF0100000020000000FFFFFFFF0300000020202000FFFFFFFF0300000020202000FFFFFFFF0300000020202000FFFFFFFF040000002020202000000000FFFFFFFF0100000020
-----------------------------------------