Well, I thought nobody requires a tutorial for
that program - but one Newbie ask for one (perhaps he hasn't even "tried" to
crack it), because he got lost in the program (??). So here it is:
Step 1
Well, let's run the target and see what we can find out. A NAG-Screen appears saying
"SimulBrowse 1.5 is shareware ...". This looks like a standard messagebox. So
now press OK. Go to the Help-Menu and choose Register. Now a dialog "Validation"
asks for our User Name and Registration Number. So enter "Cracking Tutorial" and
"999999999". Press Ok. Now you get "Your registration user name and
password could not be validated". So press OK and exit the application. The
NAG-Screen pops up once again and then the application exits. So we know enough to take
our Disassembler and have a look at the program in
Step 2
Now choose String Reference and look for interesting strings. I found the following
interesting:
" - UNREGISTERED
VERSION"
"SimulBrowse 1.5 is shareware. "
"Software\SeaglassSoftware\SimulBrowse"
"Software\SeaglassSoftware\SimulBrowse\"
"Software\SeaglassSoftware\SimulBrowse\CurrentV"
"Thank you for registering SimulBrowse."
"Validation"
"Your registration user name and " |
Step 3
We want to go to the Validation-Function, so double click on
"Validation". You'll get this:
* Possible
StringData Ref from Code Obj ->"User" |
|
| |
:00457B17 |
mov ecx, 00457B6C |
|
* Possible
StringData Ref from Code Obj ->"Validation" |
We want to be there, where this location was called, so scroll up a few lines,
until you find
* Referenced by a CALL at
Address: |
|:00457DE1 |
So let's go to 457DE1. You'll get
:00457D56 |
call 0042F470 |
|
:00457D5B |
mov eax, dword ptr [ebp-0C] |
|
:00457D5E |
cmp dword ptr [eax+00000150],
00000001 |
|
:00457D65 |
jne 00457DF3 |
; jump out of the function |
... |
... |
... |
:00457DB8 |
call 0045767C |
|
:00457DBD |
cmp dword ptr [ebp-08],
00000000 |
; have we entered
something? |
:00457DC1 |
je 00457DE8 |
; if not, jump to invalid code
message |
:00457DC3 |
mov eax, dword ptr [ebp-08] |
; the right serial# is in now
hold in EAX |
:00457DC6 |
mov edx, dword ptr [ebp-04] |
|
:00457DC9 |
mov edx, dword ptr [edx+3C] |
; our serial# is now hold in
EDX |
:00457DCC |
call 00403CF8 |
; compare right
serial # with that what we entered |
:00457DD1 |
jne 00457DE8 |
; if they're not
equal, jump to invalid code message |
:00457DD3 |
mov edx, dword ptr [ebp-04] |
|
:00457DD6 |
mov eax, dword ptr [ebp-04] |
|
:00457DD9 |
call 00457A94 |
|
:00457DDE |
mov eax, dword ptr [ebp-04] |
|
:00457DE1 |
call 00457AE4 |
; we land here |
:00457DE6 |
jmp 00457DF3 |
; jump out of the function |
Have you recognized those jumps to 457DF3 and 457DE8? 457DF3 simply jumps out of
the function. 457DE8 jumps to the invalid code message.
Step 4
We can get the serial # we entered if we do a D EDX at just before that CALL
00403CF8 ... guess what's in EAX. Or we can trace through that call. So our registration
code for "Cracking Tutorial" is "574368372017". BTW, it's not
important if you write a capital letter or not. |
This tutorial was written by
TORN@DO. I hope you enjoyed reading it as I enjoyed writing it - I'm always trying to
improve my writing skills.
I'd like to greet the following people (no specific order):
+ORC, Fravia, nIabI, JosephCo, Razzia, MisterE, Krazy_N, Vizion, YOSHi, Qapla, Odin
everyone in #Cracking and in #Cracking4Newbies ... and everyone else I forgot. |