搞了一個很傻冒的軟體~~大家看看有錯沒? (4千字)

看雪資料發表於2001-12-20

完美解除安裝軟體“完美”註冊!

[作 者]:LILITH[CNCG]
[時 間]:2001-12-20
[軟 件]:完美解除安裝軟體
[軟體簡介]:本軟體主要兩大功能,一是安裝/解除安裝軟體,可以做到軟體安裝解除安裝無垃圾;二是電腦垃圾清理,可以清理數十種垃圾保持系統清潔。本軟體包含三個執行檔案:SetupMonitor.exe 軟體安裝監視器;SoftUninstall.exe 軟體解除安裝工具;WjfClean.exe 垃圾清理工具。未註冊使用者將可以解除安裝60個軟體和100次垃圾清理。
[下 載]:http://download.21cn.com/file/utility/xiezai/Coolcln.zip
[保護方式]:註冊碼,未註冊使用者將可以解除安裝60個軟體和100次垃圾清理。
[破解工具]:trw2000

+++++++++++++++++++++++++++++++++++++++++++++++++

本來不想貼,但實在太有趣了,忍不住貼了出來~~另一種經典註冊碼驗證方式!GO!

這個軟體註冊碼採用了分節方式,共有五段註冊框,不管它,分別填"11111","1212","1313","1414","1515"
後下bpx hmemcpy,確定後下pmodule,F12兩下出錯,所以按一下便可,來到……

0177:00409482  LEA      EDI,[ESP+14]
0177:00409486  OR      ECX,BYTE -01
0177:00409489  XOR      EAX,EAX
0177:0040948B  REPNE SCASB
0177:0040948D  NOT      ECX
0177:0040948F  DEC      ECX
0177:00409490  JNZ      004094A3
0177:00409492  PUSH    BYTE +30
0177:00409494  PUSH    DWORD 00445740
0177:00409499  PUSH    DWORD 00445730
0177:0040949E  JMP      00409743
0177:004094A3  LEA      ECX,[ESP+A4]
0177:004094AA  PUSH    BYTE +1E
0177:004094AC  PUSH    ECX
0177:004094AD  PUSH    DWORD 03FD
0177:004094B2  MOV      ECX,EBP
0177:004094B4  CALL    0042D14C
0177:004094B9  LEA      EDX,[ESP+C4]
0177:004094C0  PUSH    BYTE +1E
0177:004094C2  PUSH    EDX
0177:004094C3  PUSH    DWORD 03FE
0177:004094C8  MOV      ECX,EBP
0177:004094CA  CALL    0042D14C
0177:004094CF  LEA      EAX,[ESP+64]
0177:004094D3  PUSH    BYTE +1E
0177:004094D5  PUSH    EAX
0177:004094D6  PUSH    DWORD 03FF
0177:004094DB  MOV      ECX,EBP
0177:004094DD  CALL    0042D14C
0177:004094E2  LEA      ECX,[ESP+E4]
0177:004094E9  PUSH    BYTE +1E
0177:004094EB  PUSH    ECX
0177:004094EC  PUSH    DWORD 0400
0177:004094F1  MOV      ECX,EBP
0177:004094F3  CALL    0042D14C
0177:004094F8  LEA      EDX,[ESP+84]
0177:004094FF  PUSH    BYTE +1E
0177:00409501  PUSH    EDX
0177:00409502  PUSH    DWORD 0401
0177:00409507  MOV      ECX,EBP
0177:00409509  CALL    0042D14C    //取註冊碼第一節,即"11111"
0177:0040950E  LEA      EAX,[ESP+A4]
0177:00409515  PUSH    EAX
0177:00409516  CALL    0041ACA3
0177:0040951B  LEA      ECX,[ESP+C8]
0177:00409522  MOV      ESI,EAX      //將11111的十六進位制值傳到esi
0177:00409524  PUSH    ECX          //ecx入棧存放第二節"1212"
0177:00409525  CALL    0041ACA3
0177:0040952A  LEA      EDX,[ESP+6C]
0177:0040952E  MOV      EDI,EAX      //"1212"存到edi
0177:00409530  PUSH    EDX
0177:00409531  CALL    0041ACA3    //取註冊碼第三節"1313"並存到eax
0177:00409536  MOV      EBX,EAX      //"1313"十六進位制值傳到ebx
0177:00409538  LEA      EAX,[ESP+F0]
0177:0040953F  PUSH    EAX          //註冊碼第四節"1414"字元入棧
0177:00409540  CALL    0041ACA3    //十六進位制值存到eax
0177:00409545  LEA      ECX,[ESP+94]
0177:0040954C  MOV      [ESP+20],EAX
0177:00409550  PUSH    ECX          //註冊碼第五節"1515"字元入棧
0177:00409551  CALL    0041ACA3
0177:00409556  ADD      ESP,BYTE +14
0177:00409559  CMP      EAX,BYTE +64 //比較第五節是否為64,轉為十進位制則是"100"
0177:0040955C  JG      NEAR 0040973A//不是則跳,出錯
0177:00409562  TEST    EAX,EAX
0177:00409564  JNG      NEAR 0040973A
0177:0040956A  CMP      ESI,[EAX*4+0044920C] //比較第一節的值是否為"6346"
0177:00409571  JNZ      NEAR 00409731
0177:00409577  CMP      EDI,[EAX*4+00448FB4] //比較第一節的值是否為"29004"
0177:0040957E  JNZ      NEAR 00409731
0177:00409584  CMP      EBX,[EAX*4+00448D5C] //比較第一節的值是否為"15010"
0177:0040958B  JNZ      NEAR 00409731
0177:00409591  MOV      EDX,[ESP+10]
0177:00409595  MOV      ECX,[EAX*4+00448B04] //比較第一節的值是否為"17985"
0177:0040959C  CMP      EDX,ECX
0177:0040959E  JNZ      NEAR 00409731

總結:這個程式的註冊驗證比較有趣,首先分別輸入五節註冊碼,依次取它的值後,首先驗證第五位是否為"100",如不是則直接跳過下面驗證出現註冊失敗。然後依次驗證各位註冊碼的值,用?命令即可看到,如我看到的則是:6346 29004 15010 17985 100 ,將它們串成一串就是註冊碼了!和使用者名稱好像無關。
呵不知這個是不是通用註冊碼,各路高人幫忙看看,小弟感激不盡,呵呵……

相關文章