How to crack JPEG Optimizer 3.01

Hallo my newbies friends, here I am with tut No 5, I think. We have an easy target, JPEG Optimizer which you can found at and is shareware.

Run the program, go to About->Register and enter a code more than 5 numbers, I put the old classic 123456, press Ctrl+D for SoftIce to pop up and set a bpx hmemcpy. Press Ctrl+D again to get out and press the OK button. SoftIce will pop up and you shall press F12 12 times till you reach the following code:

:00428BDD 66C746100800     mov [esi+10], 0008
:00428BE3 66C746102C00     mov [esi+10], 002C
:00428BE9 33C9                       xor ecx, ecx
:00428BEB 894DF4                  mov dword ptr [ebp-0C], ecx
:00428BEE 8D55F4                  lea edx, dword ptr [ebp-0C]
:00428BF1 FF461C                  inc [esi+1C]
:00428BF4 8B83C8010000     mov eax, dword ptr [ebx+000001C8]
:00428BFA E8D98A0100        call 004416D8
:00428BFF 8D45F4                  lea eax, dword ptr [ebp-0C]
:00428C02 E823FA0100         call 0044862A
:00428C07 83F806                   cmp eax, 00000006    <= Compares the length or our code with 6
:00428C0A 751B                       jne 00428C27              <= If not 6,then jump to bad code

:00428C0C 837DF800             cmp dword ptr [ebp-08], 00000000
:00428C10 7405                        je 00428C17
:00428C12 8B55F8                   mov edx, dword ptr [ebp-08]
:00428C15 EB05                       jmp 00428C1C
:00428C17 BAFFDF4700        mov edx, 0047DFFF
:00428C1C 52                            push edx
:00428C1D E8A60C0000        call 004298C8            <= The procedure which checks the validity of our serial. Stop here
:00428C22 59                            pop ecx
:00428C23 84C0                       test al, al                    
:00428C25 7504                        jne 00428C2B            <= If wrong code, then jump to bad code
:00428C27 33C0                       xor eax, eax
:00428C29 EB05                       jmp 00428C30


    So, you stopped at 00428C1D. Press F8 to step into and F10 till you see

:0042994E E84D1F0000       call 0042B8A0              <= Checks the validity of our code. Stop again here
:00429953 59                           pop ecx
:00429954 84C0                      test al, al
:00429956 7404                       je 0042995C                <= Jump if bad
:00429958 B001                      mov al, 01                     <= That's good!
:0042995A EB0C                    jmp 00429968


    Stopped again at 0042994E and trace into by F8 till you see

:0042B8CF 0FBE0B            movsx ecx, byte ptr [ebx]
:0042B8D2 83F93A             cmp ecx, 0000003A
:0042B8D5 7548                   jne 0042B91F                <= Offset 2AED5
:0042B8D7 0FBE4301        movsx eax, byte ptr [ebx+01]
:0042B8DB 83F83D            cmp eax, 0000003D
:0042B8DE 753F                  jne 0042B91F                <= Offset 2AEDE
:0042B8E0 0FBE5302        movsx edx, byte ptr [ebx+02]
:0042B8E4 83FA55             cmp edx, 00000055
:0042B8E7 7536                  jne 0042B91F                <= Offset 2AEE7
:0042B8E9 0FBE4B03       movsx ecx, byte ptr [ebx+03]
:0042B8ED 83F959            cmp ecx, 00000059
:0042B8F0 752D                  jne 0042B91F                <= Offset 2AEF0
:0042B8F2 0FBE4304        movsx eax, byte ptr [ebx+04]
:0042B8F6 83F859             cmp eax, 00000059
:0042B8F9 7524                  jne 0042B91F                <= Offset 2AEF9
:0042B8FB 0FBE5305        movsx edx, byte ptr [ebx+05]
:0042B8FF 83FA5F            cmp edx, 0000005F
:0042B902 751B                  jne 0042B91F                <= Offset 2AF02
:0042B904 C705584348001443FC69 mov dword ptr [00484358], 69FC4314
:0042B90E C605C442480001             mov byte ptr [004842C4], 01
:0042B915 E86688FDFF     call 00404180
:0042B91A B001                  mov al, 01                    <= We want the program to execute this line.
:0042B91C 5B                      pop ebx
:0042B91D 5D                      pop ebp
:0042B91E C3                      ret


        OK, now we are almost done. Open the jpegopt.exe file with HIEW and go in decode/asm mode. Press F5 and enter 2AED5. If the offsets are different in your computer, then disasm a copy of the exe file in W32Dasm and look for the same code and write down the first offset. When in Hiew, change the 75xx to 9090 for all the jne 0042B91F and press F9 for changes to be saved. Press <ESC> to exit, run the program and ...Registered.

Thanks for reading this tut.

For any questions you can reach me on EF-Net #cracking and #cracking4newbies, or on GR-NET in #cracking (that’s mine,hehe) with the nick iNFRA .

My e-mail is

Goodbye my friends.


                                                                                                                                                            Written by: Mitsaras Nuker®