• 标 题:搞了一个很傻冒的软件~~大家看看有错没? (4千字)
  • 作 者:LILITH[CNCG]
  • 时 间:2001-12-20 21:47:08
  • 链 接:http://bbs.pediy.com

完美卸载软件“完美”注册!

[作 者]: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 ,将它们串成一串就是注册码了!和用户名好像无关。
呵不知这个是不是通用注册码,各路高人帮忙看看,小弟感激不尽,呵呵……