菜鳥破解錄 JPEG Optimizer3.15 (6千字)

看雪資料發表於2000-08-14

菜鳥破解錄 JPEG Optimizer3.15

軟體名稱:  JPEG Optimizer
軟體版本:  3.15 
軟體大小:  1408KB 
軟體授權:  共享軟體 
使用平臺:  Win95/98/NT 
釋出公司:  http://www.xat.com
軟體簡介:  該軟體能對JPG圖形檔案壓縮50%而不損失畫質,自定壓縮比,能即時顯現壓縮後的圖片,讓你比較差異,效果相當不錯。



作    者:xiA Qin
級    別:很菜....很菜.....
解密日前:2000年8月11日
解密工具:Trw2000 1.22
破解目的:學習註冊碼的破解。


說    明:
        本文是在我的軟體破解記錄上整理出來的。如若有紕漏,請各位大俠多指教!


首先執行JPEG Optimizer
輸入註冊資訊
Registration code:  12345678    &只能輸入8個字元(程式會檢查註冊碼的位數)

下指令bpx hmemcpy    //下中斷點 

按F5回到程式,按確定,這時會被Trw2000攔截到。

下指令bd *            //屏障中斷點

下指令pmodule        //直接跳到程式的領空


按F10來到下面指令
.................

015F:0042947E  LEA      EAX,[EBP-0C]
015F:00429481  XOR      EDX,EDX
015F:00429483  MOV      [EBP-10],EDX
015F:00429486  LEA      EDX,[EBP-10]
015F:00429489  INC      DWORD [ESI+1C]
015F:0042948C  CALL    0044CE07
015F:00429491  LEA      EDX,[EBP-10]
015F:00429494  MOV      EAX,EDI
015F:00429496  MOV      EDX,[EDX]
015F:00429498  CALL    0044585C
015F:0042949D  DEC      DWORD [ESI+1C]
015F:004294A0  LEA      EAX,[EBP-10]
015F:004294A3  MOV      EDX,02
015F:004294A8  CALL    0044C524
015F:004294AD  DEC      DWORD [ESI+1C]
015F:004294B0  LEA      EAX,[EBP-0C]
015F:004294B3  MOV      EDX,02
015F:004294B8  CALL    0044C524
015F:004294BD  MOV      WORD [ESI+10],2C
015F:004294C3  XOR      ECX,ECX
015F:004294C5  MOV      [EBP-08],ECX
015F:004294C8  LEA      EDX,[EBP-08]
015F:004294CB  INC      DWORD [ESI+1C]
015F:004294CE  MOV      EAX,[EBX+01C8]
015F:004294D4  CALL    0044582C
015F:004294D9  MOV      WORD [ESI+10],08
015F:004294DF  MOV      WORD [ESI+10],38
015F:004294E5  XOR      ECX,ECX
015F:004294E7  MOV      [EBP-14],ECX
015F:004294EA  LEA      EDX,[EBP-14]
015F:004294ED  INC      DWORD [ESI+1C]
015F:004294F0  MOV      EAX,[EBX+01C8]
015F:004294F6  CALL    0044582C
015F:004294FB  LEA      EAX,[EBP-14]
015F:004294FE  CALL    0044C77E
015F:00429503  CMP      EAX,BYTE +08    //第一個攔路虎,檢查註冊碼的位數,8位
015F:00429506  JNZ      00429523        //註冊碼位數不等於8,就跳。
015F:00429508  CMP      DWORD [EBP-08],BYTE +00
015F:0042950C  JZ      00429513
015F:0042950E  MOV      EDX,[EBP-08]
015F:00429511  JMP      SHORT 00429518
015F:00429513  MOV      EDX,004825B3
015F:00429518  PUSH    EDX
015F:00429519  CALL    0042A0C4        //透過下面的分析,可以肯定此CAll有問題。按F8進入。
015F:0042951E  POP      ECX
015F:0042951F  TEST    AL,AL          //以al=1作為註冊標誌
015F:00429521  JNZ      00429527        //不跳則失敗。
015F:00429523  XOR      EAX,EAX
015F:00429525  JMP      SHORT 0042952C
015F:00429527  MOV      EAX,01
015F:0042952C  PUSH    EAX
015F:0042952D  DEC      DWORD [ESI+1C]
015F:00429530  LEA      EAX,[EBP-14]
015F:00429533  MOV      EDX,02
015F:00429538  CALL    0044C524
015F:0042953D  POP      ECX
015F:0042953E  TEST    CL,CL
015F:00429540  JZ      NEAR 0042969E
.......................

按F8進入00429519  CALL    0042A0C4

015F:0042A0C4  PUSH    EBP
015F:0042A0C5  MOV      EBP,ESP
015F:0042A0C7  ADD      ESP,BYTE -0C
015F:0042A0CA  PUSH    EBX
015F:0042A0CB  MOV      EAX,[EBP+08]
015F:0042A0CE  LEA      EBX,[EBP-0C]
015F:0042A0D1  MOV      DL,[EAX]
015F:0042A0D3  MOV      [EBX],DL
015F:0042A0D5  MOV      CL,[EAX+01] <-|
015F:0042A0D8  MOV      [EBX+01],CL  |
015F:0042A0DB  MOV      DL,[EAX+02]  |載入
015F:0042A0DE  MOV      [EBX+02],DL  |假的註冊碼
015F:0042A0E1  MOV      CL,[EAX+03]  |
015F:0042A0E4  MOV      [EBX+03],CL  |
015F:0042A0E7  MOV      DL,[EAX+04]  |
015F:0042A0EA  MOV      [EBX+04],DL  |
015F:0042A0ED  MOV      CL,[EAX+05]  |
015F:0042A0F0  MOV      [EBX+05],CL  |
015F:0042A0F3  MOV      DL,[EAX+06]  |
015F:0042A0F6  MOV      [EBX+06],DL  |
015F:0042A0F9  MOV      CL,[EAX+07]  |
015F:0042A0FC  MOV      [EBX+07],CL  |
015F:0042A0FF  MOV      AL,[EAX+08] <-|
015F:0042A102  MOV      [EBX+08],AL
015F:0042A105  MOV      BYTE [EBX+09],00
015F:0042A109  MOVSX    EAX,BYTE [EBX]
015F:0042A10C  PUSH    EAX
015F:0042A10D  CALL    00472D34
015F:0042A112  POP      ECX
015F:0042A113  CMP      EAX,BYTE +4A      <--比較註冊碼第1位
015F:0042A116  JNZ      0042A171          <--不相等,就跳
015F:0042A118  MOVSX    EDX,BYTE [EBX+01]
015F:0042A11C  PUSH    EDX
015F:0042A11D  CALL    00472D34
015F:0042A122  POP      ECX
015F:0042A123  CMP      EAX,BYTE +53      <--比較註冊碼第2位
015F:0042A126  JNZ      0042A171          <--不相等,就跳
015F:0042A128  MOVSX    ECX,BYTE [EBX+02]
015F:0042A12C  CMP      ECX,BYTE +24      <--比較註冊碼第3位
015F:0042A12F  JNZ      0042A171          <--不相等,就跳
015F:0042A131  MOVSX    EAX,BYTE [EBX+03]
015F:0042A135  CMP      EAX,BYTE +32      <--比較註冊碼第4位
015F:0042A138  JNZ      0042A171          <--不相等,就跳
015F:0042A13A  MOVSX    EDX,BYTE [EBX+04]
015F:0042A13E  CMP      EDX,BYTE +38      <--比較註冊碼第5位
015F:0042A141  JNZ      0042A171            <--不相等,就跳
015F:0042A143  MOVSX    ECX,BYTE [EBX+05]
015F:0042A147  CMP      ECX,BYTE +39      <--比較註冊碼第6位
015F:0042A14A  JNZ      0042A171          <--不相等,就跳
015F:0042A14C  MOVSX    EAX,BYTE [EBX+06]
015F:0042A150  CMP      EAX,BYTE +32      <--比較註冊碼第7位
015F:0042A153  JNZ      0042A171          <--不相等,就跳
015F:0042A155  MOVSX    EDX,BYTE [EBX+07]
015F:0042A159  CMP      EDX,BYTE +31      <--比較註冊碼第8位
015F:0042A15C  JNZ      0042A171          <--不相等,就跳
015F:0042A15E  MOV      DWORD [0048A408],69FC4314
015F:0042A168  CALL    00404924
015F:0042A16D  MOV      AL,01
015F:0042A16F  JMP      SHORT 0042A18C
015F:0042A171  PUSH    EBX
015F:0042A172  CALL    0042CA48
015F:0042A177  POP      ECX
015F:0042A178  TEST    AL,AL
015F:0042A17A  JZ      0042A180
015F:0042A17C  MOV      AL,01
015F:0042A17E  JMP      SHORT 0042A18C
015F:0042A180  MOV      DWORD [0048A408],9603BCEB
015F:0042A18A  XOR      EAX,EAX
015F:0042A18C  POP      EBX
015F:0042A18D  MOV      ESP,EBP
015F:0042A18F  POP      EBP
015F:0042A190  RET   
.......................

我們把比較的數字抄下了分別是
1  2  3  4  5  6  7  8
4A 53 24 32 38 39 32 21

查ASCII字元表,十六進位制。

十六進位制: 4A 53 24 32 38 39 32 21
分別對應: J  S  $  2  8  9  2  1

整理一下,輸入註冊資訊

Registration code:JS$28921

成功了。

註冊資訊在登錄檔中的
[HKEY_CURRENT_USER\Software\XA Tech\JpegOpt]
"Code"="JS$28921"

相關文章