.    .              
                      :    .                                  
           :     :   /|    :           
      ____      |\  / |__  /\___  ___ __        
   . /    \  ___| \/     \/     \/   V  \         
   :/     _\/   |  \    _/   O   \       \           
   /      \/\   :  /_    ) ____   \       \ 
../          \  .    \   \/    \   \\_/|   \  
   \           \       \        /    \  |    \.... . .    
    \________  /_|_____/___/\  /__|  / /     /       
             |/    C.r.E.a.M |/   |_/  \____/   
             :               :    :    
             .         .     .    .      
               .   . .   .    .
                 .        . .   . 
                              .
\-------------------------------\
 \ How to crack Opera 4.0 Beta 4 \
  \-------------------------------\

00/05/24

 /-------------------------------------\
| Tutorial made By: -=Metal=-           |
 \-------------------------------------/
  
 /-------------------------------------\
| Program Name: Opera 4.0 Beta 4      2 |
 \-------------------------------------/

 /-------------------------------------\
| Level: Medium (for newbies)           |
 \-------------------------------------/

 /-------------------------------------\
| Protection: Serial/Expire             |
 \-------------------------------------/

 /-------------------------------------\
| Tools: W32Dasm, HView 6.16            |
 \-------------------------------------/

 /-------------------------------------\
| Where: http://www.opera.com           |
 \-------------------------------------/


Hello all out there!!

In this tutorial we shall try to crack Opera 4.0 Beta 4.

=====================================
- The Protection -         
=====================================

The protection Opera use is just a normal serialnumber,
it also expires after 30-days.

The way we shall crack it in is to fool the program so
it think it is registered.

So...The program will not be licensed to you.
But it will be registered.
And that´s what we shall do!! 


=====================================
- Cracking The Program -         
=====================================

Ok...Let´s begin!!

Fire up Opera, The first thing you see is a nag that want´s you to
register Opera, you have 3 choices:

1. Evaluate
2. Purchase
3. Register <---- The one we shall look at.

Ok....click Register then type in some fake info
and press OK.

Hmm....it must be some bug in this program?
I can´t register you think..:-)

well....memorize the error message and then leave Opera

(The registration information you have entered is invalid)


Start W32dasm and disassemble opera.exe
This may take some while..


Ok...are you finished?
Good!..

Now we shall find the error message so we click on
Search/Find
Then enter: "The Registration"


I didn´t find the string...did you find it?

if you did something must be damn wrong!!

Ok..what shall we do now then...?

AHH....we can look in the STRN REF's and see ig we find something
there!
Do you see the words "Uregistered version" ??

great...doubleclick on that string!

You will land here!


============================BEGIN CODE=======================================
:0041FA3F 50                      push eax
:0041FA40 68262B0000              push 00002B26
:0041FA45 FF7508                  push [ebp+08]
:0041FA48 FFD6                    call esi
:0041FA4A 391D788C5500            cmp dword ptr [00558C78], ebx    <--Checks if the value in "dword ptr [00559C78] is the same as ebx.
:0041FA50 7550                    jne 0041FAA2
:0041FA52 8D85C4FEFFFF            lea eax, dword ptr [ebp+FFFFFEC4]
:0041FA58 68FF000000              push 000000FF
:0041FA5D 50                      push eax

* Possible Reference to String Resource ID=21428: "Unregistered version"
                                  |
:0041FA5E 68B4530000              push 000053B4
:0041FA63 FF3530955500            push dword ptr [00559530]

* Reference To: USER32.LoadStringA, Ord:01ABh
                                  |
:0041FA69 FF1550D65200            Call dword ptr [0052D650]
:0041FA6F 8D85C4FEFFFF            lea eax, dword ptr [ebp+FFFFFEC4]
:0041FA75 50                      push eax
============================END CODE=======================================

Ok...what do we see here.
If the value isn´t the same it jumps from Unregistered.

So....lets serach for "dword ptr [00530064]"

You shall see this now:

============================BEGIN CODE======================================
:0041F8D0 E8FC5FFFFF              call 004158D1
:0041F8D5 8D8DE8F2FFFF            lea ecx, dword ptr [ebp+FFFFF2E8]
:0041F8DB E8625EFFFF              call 00415742
:0041F8E0 3BC3                    cmp eax, ebx
:0041F8E2 A3788C5500              mov dword ptr [00558C78], eax  <----Put in a value in mov dword ptr [00558C78]
:0041F8E7 68BC040000              push 000004BC
============================END CODE========================================

But hey...look at the call 2 steps before "mov dword ptr [00558C78], eax"

doubleclick it and press CALL in the menu!

We land here:

============================BEGIN CODE======================================
:00415742 8D8138010000            lea eax, dword ptr [ecx+00000138]
:00415748 85C0                    test eax, eax
:0041574A 741A                    je 00415766
:0041574C 803800                  cmp byte ptr [eax], 00
:0041574F 7415                    je 00415766
:00415751 81C190030000            add ecx, 00000390
:00415757 51                      push ecx
:00415758 E83EA00200              call 0043F79B
:0041575D 85C0                    test eax, eax
:0041575F 59                      pop ecx
:00415760 7404                    je 00415766
:00415762 6A01                    push 00000001
:00415764 58                      pop eax
:00415765 C3                      ret
============================END CODE=========================================

There are 3 Condicional Jumps here, And if anyof those jumps executes
the program will be Unregistered. So what shall we do??


The only thing we have to do is to change so it jumps from:
============================BEGIN CODE======================================
:0041574A 741A                    je 00415766
:0041574C 803800                  cmp byte ptr [eax], 00
:0041574F 7415                    je 00415766     <--------| from 
:00415751 81C190030000            add ecx, 00000390        |  
:00415757 51                      push ecx                 | 
:00415758 E83EA00200              call 0043F79B            |
:0041575D 85C0                    test eax, eax            |
:0041575F 59                      pop ecx                  |
:00415760 7404                    je 00415766              |
:00415762 6A01                    push 00000001   <--------| to
============================END CODE=========================================

Ok highlight the "je 00415766" and write down the offset "0001574A".
Also highlight the push at :00415762  push 00000001 and write down the offset.
Close W32Dasm and open HView!

Browse to your opera.exe and press ENTER
then F4 / Decode / F5, type the offset of the je 00415766.
Then Press enter.

You shall see this:

741A  JE  000415766

Now..press F3 / TAB or F2
Delete everything in the window that was poping up!

Now type the offset of the push in the window instead:

JMP 00015762

then ESC / F9 / F10

Run the program and it´s registered!....JIPPEE!!!!!

Have fun!!

////////////////////////////////
See ya!!

-=Metal=-


-------------------------------------
Contact Me: metal_cracker@hotmail.com
-------------------------------------

-------------------------------------
Greetings goes to:
-------------------------------------

     - The CrEaM Crew -
       
    [http://cream2k.org]

         - Mantana -

         - Stimpy -
        
        - MagicMike - (for all help)
  
  - And the rest I forgot -