Welcome to Cracking Tutorial #46!

   Last week when I burnt a cd with all my source codes, I formatted my
   harddrive (for installing NT), then I found out my cd is fokked up.
   Last nite I build an ISO file from that cd and I ripped shit, so I saved
   important data. *phew* :)

   I'm still offline (fok telkom) but as always, you'll hear from me again!
   
   OK, let's go!

   You'll need the following tools:

   (I use these tools, I assume you'll use 'em, but it doesn't
   mean that you'll need to use all those tools, so be sure to
   get them handy for the examples in this tutorial!)

   SoftICE 4.01
   W32Dasm 8.93
   Hacker's View 6.20
   SmartCheck 6.03
   TASM 5.00
   Windows Commander 4.01 (I use it coz of easier to multitask)

   Don't ask me where to download all these tools since you had
   a chance to get them when you used my older tutorials. Here
   is a good site where you can grab tools from:

   http://protools.cjb.net/

   or ask any crackers to get you these tools!

   Are you ready?!

   OK! ;)

Welcome to Gizmo's Cracking Tutorial #11!

Toolz required:
===============
SmartCheck 6.0x
Win32Dasm
Hiew

Target:
=======
Datei Memo v1.00	 - http://www.matthiasrusche.de

Let's r0ck!
===========

Ok, thiz is a shitty program, but who cares? We wanna learn cracking and so we gonna crack thiz fucking
prog.
K, let's look at the program... it's VB! yeah.. Smartcheck...
But what's that? if we start the program by running the DateiMemo.exe a messagebox appears:

Falscher Aufruf! Datei Fehlt! Rufen sie das Programm bitte aus dem Dateikontext (Rechtsklick) auf.

Hmm, this means that it only can be started with a right-click on a file by chosing DateiMemo in the
context-menu.
K, what now? We wanna crack it with smartcheck (cause i don't like softice so much then smartcheck),
but in Smartcheck we can't run it, cause we can't open the EXE...
So we gonna patch thiz shit, so that it starts by clicking the exe and not by right-clicking...
Make a copy of DateiMemo.exe (CTRL + C, CTRL + V).

Fire up Win32Dasm...
Open the copy of DateiMemo.exe and wait till it finished disassembling...
Ok, in the String Ref we only find shit references like VB5! argh.. k, let's have a look at the imports...

Hehe, what's that... sounds good =)

MSVBVM50.__vbaStrCmp

k, double-click on it... hmm, no interesting code... double-click again... Ahh, looks better!

-------------------------	Cut of Code	--------------------------------------

* Reference To: MSVBVM50.__vbaStrCmp, Ord:0000h
					|
:0040CAC5	FF15F4A24100		Call dword ptr [0041A2F4]
:0040CACB	85C0			test eax, eax
:0040CACD	0F8586000000		jne 0040CB59
:0040CAC3	B804000280		mov eax, 80020004
:0040CAC8	89857CFFFFFF		mov dword ptr [ebp+FFFFFF7C]

-------------------------	Cut of Code	--------------------------------------

Hmm, this jump at 0040CACD looks interesting... open Hiew and load DateiMemo.exe. Goto offset [BECD] and
change following bytes:

0F8586000000	to
0F8486000000

k, now the jne is a je.. we have reversed the jump.

Let's try it.. open DateiMemo.exe and Tataa! we can open it with a double-click..

NOTE: There are more references from MSVBVM50.__vbaStrCmp. You're lucky that u patched the right one ;)
... but that had to be the one to patch, because it was the first one in the code. And our compare was
made by starting the prog.. so it had to be the 1st compare...

Ok, Step 1 finished... let's crack thiz shit...

Fire up SmartCheck...

i hope u have already used thiz prog.. otherwise you have to change some settings:

- click "Program", "Settings"
- click Register "Error Detection"
         - in "Type of Errors to check for" enable ALL
         - "Report Errors immediately" disable
         - "Advanced" click
              - "Report errors caused by other errors"  enable
              - "Report errors even if no source code is available" enable
              - "Report each error only once" enable
              - "Check all heap functions on each memory call" enable
              - under "Performance Optimizations" ALL must be DISABLED!
              - click "OK"

- click Register "Reporting"
     - "Start event reporting when starting this program" enable
     - "Report handled VB Runtime Errors" disable
     - "Report Mouse move events from OCX Controls" disable
     - "Report Windows Messages" enable
     - "Report callback and hook functions" enable
     - click "OK"!  (and don't forget to save your settings ;))

BTW: Greetz to Andrenalin... thiz settings are from his tutor (i just translated them)...

Ok, open DateiMemo.exe in Smartcheck...
Then click on the green arrow (play)...
If there's a window which bugs you with trial shit... just fire up softice and set a bpx on messageboxa..
Enter a serial and click ok.. back in Softice.. Press F11 and scroll up a bit.. there must be a ADD ESP,
04 ... set a bpx on that... change so smartcheck and click ok once more... back in s-ice... type "d esp"
and you have you're serial!
Ok, that for now.
Let SmartCheck load the program and when it finished, click on "?" then on "Freischalten"...

K, the program wants a name and a serial from us... let's give him one...

Name: Gizmo
Serial: 9876543210

Now DON'T click ok.. change back to SmartCheck and click on the red button [STOP]...
Scroll down till the end of the code which is:

cmdOK_Click 		<-- you see, our click on ok in the serial window

Ok, now click on the yellow button (SHOW ALL EVENTS)...
if you're still at "cmdOK_Click", stay there :) .. if not, search for cmdOK_Click... found it? ok, let's
continue:

Now you should see this: (after clicking on the "+" left of "cmdOK_Click")

cmdOK_Click
	- Silly commands....
	- txtPassword.Text 			<- sound nice, eh ;)
	- Mid					<- takes the 1st letter from our name (G)
	- __vbaStrVarVal returns DWORD:520FE8
	- Asc returns Integer: 71		<- Ascii value of the letter (G = 71)
	- Hex					<- Hex value of it
	- Mid					<- takes the 2nd letter from our name (i)
	- __vbaStrVarVal returns DWORD:520FE8
	- Asc returns Integer: 105		<- Ascii value of the letter (i = 105)
	- Hex					<- Hex value of it
	- Mid					<- takes the 3rd letter from our name (z)
	- __vbaStrVarVal returns DWORD:520FE8
	- Asc returns Integer: 122		<- Ascii value of the letter (i = 122)
	- Hex					<- Hex value of it
	- __vbaVarCat returns DWORD:64F304	<- uninteresting
	- __vbaVarCat returns DWORD:64F2F4	<- uninteresting
	- __vbaVarCat returns DWORD:64F294	<- uninteresting
        - __vbaVarTstEq returns DWORD:0         <- interesting! have a look at the right window and
                                                   you'll discover the real serial Nr. (4769-7A)

K, now we have a serial.. but it's pretty easy to code a keygen...

What happenes?

G -> 71 -> 47
i -> 105 -> 69
z -> 122 -> 7A

hmm, the serial is: 4769-7A
ah, the - is pushed between the 2nd and the 3rd hex value...
so, here's the source for a keygen:

-------- Cut Here --------
' Gizmo's DateiMemo Keygen source...

For i = 1 To 2
  X = Hex(Asc(Mid$(Text1.Text, i, 1)))
  S = S + X
Next i
S = S + "-"
S = S + Hex(Asc(Mid$(Text1.Text, 3, 1)))
Text2.Text = S
-------- Cut Here --------


That was it! have phun with your keygen...
Contact me on EFnet at #TbC, #learn2crack, #odt
or e-mail me: e-mailGIZMO@gmx.net

BTW: If you want to enter your own serial just edit following key in the registry:

HKEY_USERS -> .DEFAULT -> software -> VB And VBA Program Settings -> DateiMemo -> Settings

Greetz:

and to following dudes:
aDENOZiN, ACiD_BuRN, cheekey, CrackMagic, fLAIEr, Ghostman 1999, sEVanD0, zikariuz,
Berserka, Crackwarrior, Flagg, PlAyEr, Prof_X, Professor, scarabaeus, skorpien, sn00pee,
sToReMaStEr, SiONiDE, The AntiXryst, WeaxWeasel, Berserka, Flagg, Prof_X, skorpien, sn00pee,
The AntiXryst, [iNC]

If you're not in here.. sorry, a lot of ppl to greet ;)

Bye bye

HOW TO CRACK eNotepad Version 2.1.3

Welcome to yet another cracking tutorial, written by some guy in South Africa.
This time I'll show you how to Register eNotepad Version 2.1.3 by editing the registry
so that the program thinks it is registered.

Tools Used:
 Regmon 4.13 by Systems Internals (http://www.sysinternals.com)

Web:
 http://www.edisys.com


Run Regmon and keep it running in the background. Now run enotepad.exe and wait till it
stops on the nag screen

 "Evaluation Instructions
  This product is provided for a 30 day free evaluation"

  etc.

Go back into Regmon and click the 2nd and 3rd buttons (Capture and Autoscroll) so that it
pauses monitoring the registry.

Look towards the buttom of Regmon and you'll notice eNotepad appears quite a few times.
These are the paths you should be looking for.

 "HKLM\Software\ediSys\eNotepad"
 "HKLM\Software\ediSys\eNotepad\RegCode"
 "HKLM\Software\ediSys\eNotepad\KeyCode"
 "HKLM\Software\ediSys\eNotepad\Company"
 "HKLM\Software\ediSys\eNotepad\User"

 You should have a lot more than these 5 because a few of them get repeated along the
 way. I have just used each line once to save some space.  :)


Looking at the above lines, can you see what I can see?
The words "RegCode", "Company", "User" seem to be read during our trace.
Cool....so lets see what happens when we enter our details into these keys.

Double click on "HKLM\Software\ediSys\eNotepad\RegCode" and Regmon will take you right to
the spot in RegEdit.
Ok..cool...all three keys are in one place. So we dont have to waste time hunting for stuff
later. Right click on the empty keys and modify the values to anything you like
 I used:

  Company "[CrackZA]"
  RegCode "10-11-1978"
  User    "JayT"

  KeyCode "36304"   (This should be filled in for you)

 Ok...we seem to be done in RegEdit so lets try run eNotepad again and see what happens.
 Perfect! It goes through the nag...
 Check in the about screen to double check....boom!

  Licensed to:
  JayT
  [CrackZA]

* Dizzy...this one's for you bud!

 Greets to: siward, Zombie, GI-Joe, members of CrackZA and all IRC dudes
 Special Greets to tKC for his totally cool tuts! Thanks man

         Cracking Tutorial Written by JayT
         Email: CZ-JayT@iname.com
         irc: efnet  Channel: #CrackZA

HOW TO CRACK Teleport Pro v1.29 (build 1107)

Welcome to yet another cracking tutorial, written by some guy in South Africa.
This time I'll show you how to Register Teleport Pro v1.29 (build 1107) by using
W32dasm and softice

Tools Used:
 W32dasm 8.93
 Softice 4.01

Web:
 http://www.tenmax.com


Run pro.exe and click Help->Register. Enter some details and click ok.
I used -
Name: JayT99
Company: [CrackZA]
Reg Code: 10111978

I first tried JayT as my name, but got an error saying that my name must be 6 or more
characters.

If your name is correct...then you should get another error message.

 "We're sorry!  The registration number you have entered appears to be invalid"
  etc.


Ok..cool...lets startup W32dasm and disassemble pro.exe.
Now we can either try and find that sentence in the String Reference or we can
get the search to find it for us. I, being lazy, chose the search option *grin*
Ok...push Alt-S and then press Enter. Enter "We're sorry" as the string to
search for and press find next.

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004256D7(C)
|
:0042570A 8945F0                  mov dword ptr [ebp-10], eax

* Possible Reference to String Resource ID=07033: "We're sorry!  The registration number
 you entered appears to"
                                  |
:0042570D 68791B0000              push 00001B79


Ok...so you can see that this has been called from somewhere else. Lets go and find
whats calling it. Push Shift-F12 and enter 004256D7.
Oh...we land just above at another error message.

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00425691(C)
|
:004256C9 57                      push edi
:004256CA E809090000              call 00425FD8
:004256CF 85C0                    test eax, eax
:004256D1 A174B34700              mov eax, dword ptr [0047B374]
:004256D6 59                      pop ecx
:004256D7 7531                    jne 0042570A          *** Jump to "We're sorry error"
:004256D9 8945F0                  mov dword ptr [ebp-10], eax

* Possible Reference to String Resource ID=07032: "You haven't entered a valid username.
  Your username must be"
                                  |
:004256DC 68781B0000              push 00001B78


hmm...do you see what I see? This error message is also being called from somewhere.
Ok...let's press Shift-F12 again and this time enter 00425691.

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0042564C(C)
|
:00425688 8BBFD5000000            mov edi, dword ptr [edi+000000D5]
:0042568E 395FF8                  cmp dword ptr [edi-08], ebx
:00425691 7536                    jne 004256C9         *** we land here!
:00425693 A174B34700              mov eax, dword ptr [0047B374]
:00425698 8945F0                  mov dword ptr [ebp-10], eax

* Possible Reference to String Resource ID=07031: "You must enter your username in
  the Name field, exactly as y"


We land at the above code. Damnit! Another error message. Ok...let's see what's
calling this bugger. Shift-F12 and enter 0042564C.

We land in the code below
* Possible StringData Ref from Data Obj ->"User"
                                  |
:00425632 BE88A94700              mov esi, 0047A988
:00425637 0F8406010000            je 00425743
:0042563D FFB7D5000000            push dword ptr [edi+000000D5]
:00425643 E890090000              call 00425FD8
:00425648 3945E8                  cmp dword ptr [ebp-18], eax
:0042564B 59                      pop ecx
:0042564C 753A                    jne 00425688            ** Jump to error messages
:0042564E A174B34700              mov eax, dword ptr [0047B374]
:00425653 8945F0                  mov dword ptr [ebp-10], eax

* Possible Reference to String Resource ID=07152: "Thank you!  Your copy of Teleport
  Pro is now registered.  Al"


hmm...cool....this looks like the place where we also go if our code was right.
Let's take a closer look.
:00425643 E890090000              call 00425FD8
:00425648 3945E8                  cmp dword ptr [ebp-18], eax
:0042564B 59                      pop ecx
:0042564C 753A                    jne 00425688            ** Jump to error messages

We have a call...a compare and then jump is not the same. Are you thinking what I'm
thinking!

Alrighty then...lets write down the address of the cmp statement (425648).
Minimize W32dasm and startup pro.exe again.
Go back to the Registration screen and enter your details again.
But before you push OK, press Ctrl-D to fireup softice.
Set a breakpoint on getwindowtexta so that we can get softice to break when the
reg details are being read.
type "bpx getwindowtexta" for those of you who dont know what I am talking about
*grin*.
Ok....press F5 to return to the Registration Screen and hit OK.
bOOM....softice pops up again. Hit F11 and clear the breakpoint set.
"bc *"
Now set the address we wrote down earlier as your new breakpoint.
"bpx 425648"

Press F5 again and we land at the compare statement!
xxxx:00425648  CMP   [EBP-18],EAX

now type "? eax"
I get "0819199119"

Cool...a number which looks like a reg code.
Write it down, clear all breakpoints (bc *) and go back to pro.exe.
You should be at the error message saying that your reg code was wrong.
Click OK and enter the new code.

Name: JayT99
Company: [CrackZA]
Reg Code: 819199119

COOL! Registered
"Thank you! Your copy of Teleport Pro is now registered. All limits have been removed"


Yet again...another easy serial code found and conquered

* Dizzy...this one's for you bud!

 Greets to: siward, Zombie, GI-Joe, members of CrackZA and all IRC dudes
 Special Greets to tKC for his totally cool tuts! Thanks man

         Cracking Tutorial Written by JayT
         Email: CZ-JayT@iname.com
         irc: efnet  Channel: #CrackZA

// Tutorial for Sunkist Competition DK
// Type: Highscore decrypting / encrypting
// By: BuLLeT
// Date: 10/09/1999
// URL: www.sunkist.dk (or the disk from the sunkist bottle)
// Needed: HIEW

Greetings and salutations! I know i haven't written anything in a while but i
hope you didn't forget me :P This tutorial is not a common protection,
nevertheless it's usefull when getting on top of the highscore list :)
So Sunkist (you know..the drink) made a competition. The goal is to finish the
puzzle as fast as possible and print out the highscore etc. But..what if you
can't finish it fast enough? Don't worry. I'll show you how to get on top of
the list without even finishing the game.

(NOTE: The competition expires on September 26th, but give it a try anyway!)

So..you install the game and see that the highscore is set to:

Name:     Time:
SUNKIST   10:00
----- | | ----- * 10

But you want your own name on top of that list so you can win a computer don't
ya? Sure you do. So you quit the game and see that there is a HighScore.hs in
the "\Save" dir. Hmm..just like the old fazion games from the old days :)
So we'd better open that file and look around a bit. But it looks like crap -
at least for now :) You should see something similar (taken from EDIT)

->->->-> HIGHSCORE.HS - Start of file!

       ¦  ó  ?  ?  '  ÿ  ,  ,  4  .  ·       
       «  ó  ç  -    «  ÿ  ,  >  >
       «  ó  ç  -    «  ÿ  ,  >  >    D
       «  ó  ç  -    «  ÿ  ,  >  >    êæ
       «  ó  ç  -    «  ÿ  ,  >  >  -r
       «  ó  ç  -    «  ÿ  ,  >  >   pT
       «  ó  ç  -    «  ÿ  ,  >  >  ™
       «  ó  ç  -    «  ÿ  ,  >  >  x B
       «  ó  ç  -    «  ÿ  ,  >  >  ªR
       «  ó  ç  -    «  ÿ  ,  >  >  i

->->->-> HIGHSCORE.HS - End of file!

Crap, crap and more crap. Sux. Let's do something about that. And here's the
point where i have to disappoint you. You HAVE to finish the game ONCE! This
is due to the fact that we can't just attack the file without comparing it to
another one. (understand??). In other words; if you finish and type your own
name it will write to the file and we can compare them and look at the changes!
So copy HIGHSCORE.HS -> HIGH.HS and run the game. Finish it (the time doesn't
matter, although you MUST note it for later use). Ok..quit the game after
finishing it and go to DOS, where you should type: FC HIGHSCORE.HS HIGH.HS
Now you'll see the bytes where the program has changed the file. I don't recall
the offsets but it's not THAT important :) HIEW the file again and look..hmm
it changed some bytes. In my case Name: BuLLeT / Time: 01:27 (Yeah! I actually
finished the game in 01:27 minutes WITHOUT CHEATING! Maybe i have a chance
to win without cheating at all :D - but maybe YOU don't! :) ) Ok..in my case
it changed 8 bytes (at least 8 bytes are the only important). So what did it
change? Well..this is the place where i'd like to be able to take a screen-
shot of HIEW and show you the HEX..but i can't. So you'll have to try to
understand what i say without any gfx ;( But i'll make it a bit easier.
In HIEW you see (in HEX mode): (I know it's not 100% correct)

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...............
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...............
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...............
..........and so on.

Of course you don't see all 00's but you get the point. So you compare the
original highscore.hs (high.hs) and the new (highscore.hs). In my case i see:

8E A1 98 98 91 A0 2C 2C...and some more unimportant bytes.
And a bit below i see: 1B (coincidental? I think NOT!)

Ok. look at the first line. Hmm..funny, could it be that it encrypts my name?
Let's do a small compare:

                   B  u  L  L  e  T  ~  ~
BuLLeT~~  would be 00 00 00 00 00 00 00 00  number of bytes.
          we see:  8E A1 98 98 91 A0 2C 2C  (2C = space)

See the 98 * 2 ? What's the chance that two bytes are the same at the EXACT
same place as the L's in BuLLeT ? I think we got something here! Now you are
able to change the other names/places to your own name too..right? If not,
ymaybe you should look at the original file again and note the offsets where
SUNKIST and your own name is placed. You'll get it :)

So what did i mean about the 1B ? Well as i told you i finished the game in
1 minutes and 27 seconds. So? 1B equals 27 in HEX. Coincident? Could be..but
let's try anyway. Change 1B to 0B. Now run the game again and watch the time:
does it say XX:11? It should :) So now you just need to find the minutes..but
i'll help ya here. The first "minute" is at offset 2C. So if you change the
byte at offset 2C to 00 you'll have 00:11 in the time field for the first name
in the list.

So..thisshould be just about it. I haven't written an encryption routing,
since i think you can figure it yourself. Just compare and learn :)
Now change all the bytes to your name and a time of your choice and print it.
You should, however, note that you must be carefull with the time. The judges
will know that if the time is below 1 minute you have cheated. So pick a time
carefully.

If any of this does not make any sence or if you have a question feel free to
contact me. IRC #C.i.A (EFNet)

I hope you enjoyed this tutorial and that you will read my future tutorials.

Signed
BuLLeT

// Tutorial for LockDown 2000 v4.0
// Type: "Keygen"
// By: BuLLeT
// Date: 22/09/1999
// URL: www.lockdown.com
// Needed: (W32Dasm), SoftICE, a ProcessPatcher

So..i'm back. Well kinda, but i felt like writing and it resulted in this lil'
tutorial. This time i'm gonna show you how to crack LockDown 2000 v4.0 which
is a nice app - i haven't used it, but people say it's kewl :)

What are we waiting for? Let's GO!

When starting the program you see a UNREGISTERED (image-kinda-like) and you
see an UNLOCK option in the menu. Go there and see. ARG! A unique ID number
on each PC. Sucks. But let's give it a try anyway. Enter your name and a
random serial. (Name: BuLLeT / Serial: 22446688)
"Incorrect/invalid.." <-- Something like that right in your face. But still
everything seems nice. Launch W32Dasm and disassemble the file. What's this?
You can't disassemble the file can ya? (At least i couldn't) It has some kinda
anti-cracking stuff. So..as the programmers say: "If a program has anti-cracking
code it CAN NOT be cracked!" So let's just give up. I failed - couldn't crack
it. And if we believe the programmer NO ONE can. Or can they? I say:
FU(K the lame programmers and let's modify their silly "protection".

GO to the registration menu and again you enter a name and serial. CTRL+D to
SoftIce and set a breakpoint on HMEMCPY (BPX HMEMCPY). F5. Click the OK button
and you're back in SoftIce. Now back to the caller - press F12 a few times.
(if i recall correctly it's 7 times F12). Then F10 a few times...some more..
nah..still not there..a bit further..and STOP! We're there. You see what i
see?
                 8==============D   (___________*____________)

You see it too ? :) The code i mean. What did you think i was thinking of????
Ok..you should see something similar to this:

        POP EAX
        CALL XXXXXXXX
        JE XXXXXXXX
        ...
        JMP XXXXXXXX

If you see this you're at the right place. The CALL moves stuff around and
puts the serials in their places. The JE will take you to the GOOD place and
register the program. The JMP will take you to the BAD place! But what's this?
When tracing over "POP EAX" you see EAX changing. Let's check it out. "d eax"
and watch the data window. Nice :) A serial right where we want it. You could
note the serial, clear breakpoints and register the program for good - OR you
can keep reading and learn how to make the program it's own keygenerator! It's
up to you........but if you wanted to learn it all i suggest you stay!

So..how do we do that. A keygenerator..hmm..i bet it involves some cracking :)
And you're right - it DOES! But how? Well you noted the VALUE in EAX when
tracing over the "POP EAX" line didn't ya? Cause you need that now...so if you
forgot noting it you should go back and do it before continuing. I'll be
waiting for you when you get back :)

Back? No? Then i'll just keep waiting.

Back? Sure? Ok let's go on.

Having in mind that we can't patch the program in the "normal" way, due to
compression or whatever it might be, we will have to do it in memory. Now to
the patching part. If we're gonna patch it in memory we must know where the
correct serial is stored. Do we know that? YEAH! Cause you noted the VALUE in
EAX didn't ya? So we know where it is..but where should we put it? There's
always ONE place i HATE in a program - the "Sorry..incorrect..invalid" box, so
why not use that and make the program SHUT UP!

Next we need to find where the "Incorrect/invalid..." text is stored. And to
do that we have to trace the BAD jump. Ya i know you hate it but you HAVE to
do it - sorry! Trace the JMP XXXXXXXX right after the JE line and BEWARE!
Soon you'll see this line:

        ...
        MOV EAX, 004B9D18
        ...

(I think that's how it's written...At least it's VERY similar! Now after
tracing this line you should do a "d eax" again and watch the data window. You
see the message? Ya! So now we just have to change a few bytes don't we? We
only have to change the code like this:

        ...
        MOV EAX, 004B9D18
        ...
         ----> TO <----
        ...
        MOV EAX, 01326764 (the value from EAX)
        ...

This sounds pretty easy doesn't it? Depending on if you're a newbie or a
cracker you'll answer YES or NO. If you know how - go do it. If you don't -
keep reading!

You know that we can't patch the file...so we need to write a memorypatch.
To do that we need information. We need to know WHERE the code is and WHAT to
change it to. We do this by doing a "D" on the lines we need and note the
offset. We need to do this on the VALUE in "POP EAX", cause we need to know
the offset of the REAL serial. So back to the POP line and do it. Note it..
i think it's: "017F:004B9BAA" but i am NOT SURE! Go check for yourself plz.
Now you should note the first 5 bytes. (B8 18 9D 4B 00) (in the DATA/HEX)
The other information we need is the offset of the messagebox (the MOV EAX..-
line) So again you do "D" on the line. I'm sorry but i didn't note the offset,
but i'm sure you'll get it yourself. When you're at the MOV EAX, 004B9D18 line
you simply type: "D" and the offset that is in front of that line.
Now you should note the first 5 bytes. (B8 64 67 32 01) (in the DATA/HEX)

So you have two rows of bytes:

REAL SERIAL : B8 18 9D 4B 00
MESSAGEBOX  : B8 64 67 32 01

That should be all! Clear breakpoints and quit the program.

Now we need to make the memorypatch. There are many programs to do that but
which one you use is up to you. I guess this is about it. I don't think i can
teach you anymore. Get the memorypatcher and use the information mentioned
above.

Oh yeah..i was thinking of using ProcDump to dump the whole thing and patch
it from there. But that's no good. After dumping i had a 1.7MB file which
couldn't run and crashed the whole time. Since i wanted a keygen i didn't
wanna spend my time on fixing the header or any other part of the damaged EXE!

Therefore - We're done here. Get the patcher and you have a program that will
show you the REAL serial when entering a FALSE one. So you'll NEVER see the
nasty "Incorrect serial..." box again and i'm sure you like that :)

Greetings go to Disney for making my mousepad :)

Signed
BuLLeT

   We really hope you've enjoyed this tutorial too much as we did!
   Don't miss Tutor #47 soon! ;)

   And as I said last time: Without knowledge, there's no power! ;)

   Credits go to: 

   tBS for Splash Logo.
   Gizmo for providing a tut in this version.
   JayT for providing 2 tuts in this version.
   BuLLeT for providing 2 tuts in this version.
   tKC/CiA (hey it's me!) for coding this version :)


   All the crackers (non-members of CiA) are welcome to send tutors
   for the next tutorials .. see below for my email address!
   ***(don't send me tutors till I'm back online!)***

   And all the tutors can be found at www.msjessca.da.ru!

   Greetz goto all my friends!

   You can find me on IRC or email me at tkc@reaper.org

   Coded by The Keyboard Caper - tKC
   The Founder of PhRoZeN CReW/Crackers in Action '99

   Compiled on 7 October 1999

   Cracking Tutorial #46 is dedicated to Ms_Jessca...