中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 看雪学院专区 > 解释语言 > VB程序
VB3.0的程序破解
作者:郭大志 时间:2005-09-11 21:57 出处:www.pediy.com 责编:bighearted
              摘要:VB3.0的程序破解
用bpx hmemcpy设断点,然后再用BPR断点监视你输入的注册码,它将你输入的注册码字符串转换成整数之后,
就到了如下的地方,要装到浮点寄存器中去了(又是浮点数!):

5187:9067  53                  PUSH      BX
5187:9068  90                  NOP
5187:9069  DD06C00D      FLD      REAL8 PTR [0DC0]    //装入到浮点寄存器中去
5187:906D  E86807          CALL      97D8
5187:9070  5B                  POP      BX
5187:9071  58                  POP      AX
5187:9072  803ED00D1A  CMP      BYTE PTR [0DD0],1A
5187:9077  7504                JNZ      907D
5187:9079  883ED00D        MOV      [0DD0],BH
5187:907D  E8A4F0          CALL      8124
5187:9080  CD3D              INT      3D
5187:9082  5F                    POP      DI
5187:9083  C3                    RET
5187:9084  55                    PUSH      BP
5187:9085  8BEC                MOV      BP,SP
5187:9087  56                    PUSH      SI
5187:9088  B42C                MOV      AH,2C
5187:908A  9AD9884701      CALL      KERNEL!DOS3CALL

单步跟踪,发现最终在如下FCOMPP的地方进行注册码的比较。此时ST1寄存器中放的是你输入的假注册码,
ST0中存放的是另外一个数。它会把你的假注册码和好几个数相比,这些数中有一个是真正的注册码,
其它的数不能用,否则启动的时候它会说你的文件被破坏了 :-)
只需要在如下的FCOMPP处插入INT 3指令即可,这里应为VB3比较两个数的地方。

4B57:3C00  FFE0                JMP      AX
4B57:3C02  90                    NOP
4B57:3C03  D9C9                FXCH      ST(1)
4B57:3C05  90                    NOP
4B57:3C06  DED9                FCOMPP          //比较注册码
4B57:3C08  90                    NOP
4B57:3C09  DFE0                FSTSW  AX
4B57:3C0B  CD3D                INT      3D
4B57:3C0D  9E                    SAHF
4B57:3C0E  C3                    RET
4B57:3C0F  2800                SUB      [BX+SI],AL
4B57:3C11  B82600              MOV      AX,0026
4B57:3C14  B8A600              MOV      AX,00A6
4B57:3C17  E8E8FF              CALL      3C02
4B57:3C1A  B80000              MOV      AX,0000
4B57:3C1D  7501                  JNZ      3C20
4B57:3C1F  48                    DEC      AX
4B57:3C20  50                    PUSH      AX
4B57:3C21  26AD                LODSW    ES:
4B57:3C23  FFE0                JMP      AX

一个可用的cowsense.INI文件:

[Registration]
SerialNumber=W401-9900558
UserName=zhuxiaohua
UserCompany=zhuchen
Key=80467949
OptionKey=850780
DataEntryMode=False
Chronid=313500
Version=

[File Parameters]
DataPath=
DataFileName=

[Settings]
TabStyle=Mac
ReportTitle=Cow Sense Sample Herd
ReportingYear=2000

[Options]
SystemDB=C:\temp\vb3\SYSTEM.MDA

标 题:VB3程序破解再总结 (1千字)
发信人:小牧童
时 间:2000-6-14 22:31:22
详细信息:

VB3程序破解再总结
1、    用字符比较
-  开始运行VB3程序,输入假的序列号:
-  切换到softice下,bpx hmemcpy 设断点
-  按F5键返回应用程序,按注册确定键,将被softice中断
-  S 0030:0 L FFFFFFFF  8B,CA,F3,A6,74,01,9F92,8D,5E,08,E8,06
-  在返回地址设断如:  bpx  0030:807019ef  do “d si
-  按F5将落在比较代码处
  : 8BCA        mov cx, dx
  : F3A6        repz cmpsb  ;<-  这里字符串被比较 
  : 7401        je 8CB6    ; 
  : 9F          lahf
  : 92          xchg ax,dx
  : 8D5E08      lea bx, [bp+08]
  -  如发现输入的假序列号则下d  es:di查看序列号
-  没有发现继续按F5
2、    用数值比较
-  开始运行VB3程序,输入假的序列号:
-  切换到softice下,bpx hmemcpy 设断点
-  下WF开浮点监视窗
-  按F5键返回应用程序,按注册确定键,将被softice中断
-  S 0030:0 L FFFFFFFF  90,DE,D9,90DF,E0,CD,3D,9E,C3
-  在返回地址设断如:  bpx  0030:805B5CA5
-  按F5将至此
4B57:3C05  90                    NOP
4B57:3C06  DED9                FCOMPP          //比较注册码
4B57:3C08  90                    NOP
4B57:3C09  DFE0                FSTSW  AX
4B57:3C0B  CD3D                INT      3D
4B57:3C0D  9E                    SAHF
4B57:3C0E  C3                    RET
在浮点监视窗中将会出现注册码
-  如没有继续按F5

感谢郭大侠及看雪版主的帮助!
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有