by CoDe BreAkeR
This tutorial teaches how to to reverse/crack the card games "MSHearts" and " FreeCell". This is a very easy tutorial but still should be a good practice .I choose this game because it is easily available with windows OS. Although this is written for beginners who have little knowledge of cracking, does not demand any knowledge of assembly, most of the things are easy to understand for any one who hasn’t even heard words like ASM or HEXEDITOR.
It is believed,
  although not proven, that every game can be won. May be you can prove this.
Tools Needed :
W32DASM
HEXWorkshop
 
You can search for the tools on filesearching
 
 
  Part 1:  MSHearts
 
1)  make
  backup of mshearts.exe on your desktop. (its in the windows folder)
 
2) Open the backed up file in w32dasm.
 
3) Now open mshearts.exe (one in your windows folder). (Try to) play it. You will notice that if other people have
 played
   club 
  and also if you have any club then you cannot play a spade or any other card .It
  shows the message -
 "You must follow suit. Play a
  club"  at the bottom of the window.
 
4) So lets crack it...In w32dasm click on the second
  last button of "String Data References "
  Locate the
  string "You must follow suit. Play a %s" and double click it. You
  should land here...
 
---------------------
* Referenced by a (U)nconditional or (C)onditional Jump
  at Address:
|:0001.4FE9(C)
|
:0001.5098 8D46F0                  
  lea ax, [bp-10]
:0001.509B 50                         
  push ax
:0001.509C 9AF895A850           call
  0001.95F8
:0001.50A1 8D46EA                 
  lea ax, [bp-16]
:0001.50A4 50                         
  push ax
:0001.50A5 9AF895B450           call
  0001.95F8
 
* Possible Reference to String Resource ID=00312:
  "You must follow suit.  Play
  a %s."
                       
            |
:0001.50AA 683801              
    push 0138    ; <=== you landed here
:0001.50AD 8D46F0               
  lea ax, [bp-10]
:0001.50B0 50                        push ax
:0001.50B1 9AAEBECD50      call 0001.BEAE
 
----------------------
Note : Your address might be different. My version of the file is 4.90.0.3000
5)Now scroll up a little. As you see the part of the
  code you have reached is 
  Referenced by a (U)nconditional or (C)onditional Jump at Address:
  |:0001.4FE9(C) " So lets go to the address where the jump is. (a jump is
  a way of branching in assembly language just like if else statements in C).
  Click on  Goto>Goto code location and type the address as follows and click
  ok.
 
Code seg    (Decimal)    0001
Code Offset (hex)          4fe9
 
You should land here:
 
----------------------
 
0001.4FE4 99                       
  cwd
:0001.4FE5 F7F9                  
  idiv cx
:0001.4FE7 3BD3                  
  cmp dx, bx
:0001.4FE9 0F84AB00           
  je 5098   ; <==You
  reached here. je = jump if equal.
 
* Referenced by a (U)nconditional or (C)onditional Jump
  at Address:
|:0001.4FD3(C)
|
:0001.4FED 83C608                
  add si, 0008
:0001.4FF0 47                         
  inc di
 
----------------------
 
7) Make sure the green strip is on the je 5098 and note
  the offset number at the 
 bottom of
  W32dasm just above the Taskbar.
 It is    @Offset 00005609h
 
6) Lets nop this jump.( nop means no operation or do
  nothing)
 Open the
  MSHeart.exe  in Hexworkshop.( not the one opened in W32DASM coz you
  cannot save changes made to the file)
 click  Edit>goto..
 Choose HEX
  and write  5609
 
 7) Now you are at the offset where the jump is. We want
  to replace the jump with nop (90) so change the following bytes...
 
   
  
  0F 84AB 00  to
   90 9090 90
Now save your file and play the game ...great ! you can play
  any card now.
 
 
Part 2 
  :  FreeCell
 
This is same as cracking MShearts. Moves to a column must be made in order of highest to lowest, alternating suit colors. If you don't it shows the message " This move is not allowed ". So remember this message and follow the same steps as above. Try it yourselves. Crack it so that you can move any card anywhere.
  Click on  Goto>Goto code location and type the address as follows and click
  ok.
 
Code seg    (Decimal)    0001
Code Offset (hex) 173B
You should reach here :
-----------------------------------
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
  |:0001.16F2(C)
  |
  :0001.1738  E9B200  jmp 17ED 
-----------------------------------
nothing here, this is a jmp (i.e. jump always) no condition here so we need to go to :0001.16F2
Go there as done above and nop that jump.
This is fun :-).
Note : Your address might be different. My version of file is 4.90.0.3000.(Windoze ME)
 
This file was downloaded from http://IndianCrackersOnline.cjb.net
If you find any mistakes or don't understand anything
  mail me codebreaker2k2@yahoo.com
 
Happy Cracking !
This Site is owned by ICO copyright 2000-02©. Read the Disclaimer
 
Properties>