发信人: Tao_Chen@bbs.ustc.edu.cn (绝地战警), 信区: cnhacker
标  题: 解密 教程 3 转载
发信站: 中国科大BBS站 (Mon Feb 23 20:17:35 1998)
转信站: Lilac!ustcnews!ustcbbs

发信人: gongjc (老公), 信区: crack
标  题: cracking vox phone tutorial
发信站: BBS 曙光站 (Sat Nov 29 20:17:02 1997)

                                _CbD_ Tutorial #6
                                Modifying dll's to 
                                give real reg codes
                                Target:VoxPhone 


Pre Crack notes:

        Ok how many of you have wanted to crack a program and
        have it give you the real registration code instead of
        the Sorry you entered a invalid Code message? Hmm
        thought so everyone. ok well that is what this tut is
        all about. This will show you one of many ways to do this
        the program we will be werking with uses a dll to check
        our reg number so this will also give you a little info
        on cracking dll's.


About the Tut.

Target: Vox Phone
where to get it: www.voxware.com
protection type: user ID number / key number
tools needed: Softice, W32dasm, Heiw (Hexeditor)
Tut requested by: JosephCo & nIabI
Crack requested by: DarkNight


        Well if you have ever read any of my tut's then you are 
        aware of my style of cracking, Step by Step is the
        best way for newbies to follow IMHO so that is how this
        tute will flow. 

Pre Crack notes
        You will need to run the program while you are on the net
        then disconect so you can use the BreakPoint we will need
        if you try to do this online you will break every time 
        your system gets info from your ISP but the program will 
        not start if you are not online so make sure your online
        when you start then log off. Also you will have to click
        on [help] register  then fill out the form and tell them 
        you are going to send your registration in by mail
        then you will be able to enter a registration number 
        after that.

Step 1:

        ok lets start by setting the Break Points we will need in Softice
        the one we will use first is GETDLGITEMTEXTA so set that in si
        (BPX GETDLGITEMTEXTA)then press ctrl-d to return to our
        program. Now lets go back to [help] and register and you 
        will see the box asking for a regcode. enter anything you want
        as long as it fills the box or is atleast 10 digits long
        and then press unlock.

Step 2: 
        you should be in Softice now at the point that our program 
        called the getdlgitemtexta function. press F11 to get back to 
        the code that called this. you should see something like the 
        code below

  0137:00691ESC  CALL     [USER32!GetDlgItemTextA]  <-- Call to get 
  0137:00691B92  MOV      ECX,PFFFFFFF                  our unlock code 
  0137:00691E97  SUB      EAX,EAX                          
  0137:00691E99  REPNZ  SCASB                              
  0137:00691E9B  NOT      ECX                              
  0137:00691E9D  DEC      ECX                              
  0137:00691E9E  CMP      ECX,OA    <-- Check to see if code is 10 digits
  0137:00691EA1  JZ       00691EE3        <-- Jump if is               
  0137:00691EA3  LEA      EAX,[ESP+74]    <-- set msg for invalid code                 
  0137:00691EA7  PUSH     006AC444                         
  0137:00691EAC  PUSH     EAX            <-- save msg                  
  0137:00691BAD  CALL     006A0370                         
  0137:00691EB2  LEA      EAX,[ESP+7C]                     
  0137:00691EB6  ADD      ESP,OS                           
  0137:00691EB9  PUSH     30                              

        ok as you can see here the program checks to see if we entered
        a code that is 10 digits long and if we did then it will jump
        to the code below if not then it displays a invalid code msg

  0137;00691EE2  RET                            
  0137:00691EE3  MOV      EDI  ,006B3ADO <-- we land here if code is 10   
  0137:00691EB8  MOV      ECX  ,FPFFFFFF        
  0137:00691EED  SUB      EAX  ,SAX             
  
        ok now you will have to press F10 to single step though the code
        till you come to the code below.

 
  0137  :00691F1E   CALL  006936EO   <-- Generate real code here
  0137  :00691F23   LEA  ECX,ESP+4C) <-- if we do a ED ESP+4c here we get
  0137  :00691F27   ADD  ESP,OC            the real code                
  0137  :00691F2A   PUSH  006B84BO     
  0137  :00691F2P   PUSH  ECX         <-- Save real code 
  0137  :00691230   CALL  006AA980    <-- call to compare our code with 
  0137  :00691F35   ADD  ESP,OB          real code.

                I have skiped some code here just scroll down and
                you will see this.

  0137:00691F3A  MOV    EAX,[006B78B4]        
  0137:00691F3F  JNZ    00691F53       <-- jump if code is invalid          
  0137:00691F41  MOV    WORD PTR [EAX+04],0001
  0137:00691F47  XOR    EAX,EAX               
  0137:00691F49  POP    EDI                   
  0137;00691F4A  POP    ESI                   
  0137:00691F4B  POP    EBX                   
  0137:00691F4C  ADD    ESP,00000130          
  0137:00691F52  RET                          
  0137:00691F53  LEA    ECX,[ESP+74]   <-- set up for invalid code msg       
  0137:00691F57  PUSH   006AC444              
  0137:00691F5C  MOV    WORD PTR [EAX+04,0000
  0137:00691F62  PUSH   ECX                   
  0137:00691P63  CALL   006A0370              
  0137:00691F68  LEA    ECX,[ESP+7C] (this may not be 7C as i cant remeber         
                                        i had changed it before i wrote         
                                        down the code) This is where we
                                        will make our change inorder to
                                        get our real number.


        Ok damn that is a lot of code. well what is happening here is
        our program (the Rsagnt32.dll is getting ready to give us
        that damn " Sorry you fucked up message" the program
        copies the strings we will see in the messagebox right here
        to ECX then will push ECX in a few lines down but we dont want
        it to push the message we want it to push our real code, dont
        we. So we will need to make a few changes here. rememeber where i
        siad our real code was?

:00691F23   LEA  ECX,ESP+4C) <-- if we do a ED ESP+4c here we get
:00691F27   ADD  ESP,OC            the real code                
        
        well do you think you see what needs to be done?
        yeah change the esp+7c to esp+4c right?  Nope that want work.
        If you do that you will only get the last 5 letters of the code
        because the code starts before 4c do we need to do a ED esp+4c
        and see what we get.  hmm well what we want to see is our code
        start on the first line of the data window like below

:009BEBD4 49505848  544E4A54  00005443  00000004  HXPITJNTCT.. .     
:009BEEE4 00000000  00000000  02EF005C  02EF0004                  
:009BEEF4 034P3AAO  02EF7E3B  7P1R0500  18078394  0.> .....0....  
:009BEF04 00004389  00000000  382780D4  40000000  C........'8...0     

        now to do this we will have to play with ESP so to save you time
        i have found that ESP+48 will do the trick.
        so what we will need to do is change LEA ECX,[ESP+7C] to
        LEA ECX,[ESP+48]  this will yield us a real code every time
        in the place of that damn "Sorry you Fucked up message"
        so now you can do one of 2 things (1) restart the registraion 
        process and when you get to the line with LEA ECX,[ESP+7C] on it
        do a ED xxxx:00691F68 then write down what you see in the data 
        window so you can change it or i will give you the info
        you willl need when you run your hexeditor

        you will need    8D4C247C83C408    do a search for that in your
        hexeditor (use Hiew it is the best) and replace the 7C with 48
        and then save your file (make a back up before you do this though)
        now when you run the program you will get a message that tell you       
        that a dll is corupted go on to the next step to fix that

step 3:
        in the Main program file tx32.exe do the following:
        ok in hiew search for 85C0752C50  then edit it in code mode
        and change the jnz to jz or visa versa then there is one more
        search for 85C0752E33FF  and change its jnz to jz or visa versa
        i cant remember if they are jnz or jz  but what ever it is change
        to the opisite. or you can do a BPX MESSAGEBOXA and find the 
        jumps on your own. (Hint addresses are :0041CD27 & :0041D267)
        well that is about it after you make the changes you can run the 
        program and get your real number from it  then register it.
        Sorry if this is not as clear as most of my tutes but i only wrote 
        down the code that i needed while i was cracking and make notes
        about the rest so if you have any trouble just find me on EFNET
        in #cracking4newbies and i will be glad to explain.

        Hope this Helps you to better understand Dll cracking and
        makeing a msg box show you the real reg codes for your
        program. _CbD_

        Greetz to :
        josephCo, nIabI, Mornings, ^pain^, drlan, mp, razzi and 
        all the rest of #Cracking4newbies 


--
  /^\     /^\    我是快乐的希思猫 ! 
 ( b (^a^) d )   
  \ " *B* " /    makeiTRUNning (tm)
  ( 'O'"'O' )    WWW: 202.38.73.141/Persons/TaoChen
   #==-W-==#     EM : bADbOY97@usa.net
     ( y )       

※ 来源: 中国科大BBS站 [bbs.ustc.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:206.604毫秒