VGScene 4.05 破解过程

VGScene 4.05 破解过程

一、介绍

VGScene KSDEV 公司出品的Delphi 控件,是一款三维动画制作软件,为所有图形应用开发提供了:一个图形编辑器IDE,图形对象,简化动画,先进窗口和控制,最高性能,剥皮引擎,位图效果。 VGScene可作为开发工具,用于监控系统,地理信息系统,计算机辅助设计与信息应用。

同时该公司还提供了 DXScene Flash Engine 控件。

公司网址:http://www.ksdev.com

 

二、试用版说明

KSDEV公式网站上下载的 VGScene 4.05 试用版在安装控件以及使用该控件后编译的程序运行时都会提示一个试用版提示框,如下:

 

 

一般来讲,从公司网站上下载的试用版所包含的功能是与正式版一样的,只不过是通过某种手段限制某些功能不可使用,或出现试用版的提示等,并非不包含正式版的功能(后便将说明我的猜测),那么,从VGScene试用版的表现上看,只要将这个讨厌的提示框去掉,就不影响正常使用

 

三、分析

为了要去掉这个提示框,首先我们要找到这个提示框在哪里。查看控件的单元文件发现一个文件叫vg_version.dcu,感觉提示框应该与这个单元文件有关,使用DeDe对其进行DUMP ,结果发现该单元文件中包含两个过程:procedure ShowVersion;

procedure ShowVersion2; 两个过程中都定义了字符串常量,一眼就能看出,ShowVersion 显示的是正版信息,而ShowVersion2显示的是上图显示的试用版信息。

找到提示信息后,再查看该单元文件的其他函数,并没有发现调用ShowVersionShowVersion2的函数,说明试用版提示信息是在别的单元文件中调用的。看来还得继续寻找。

由于控件在安装,或编译后的EXE执行时都显示提示信息,那么说明控件中必有一个单元文件总是被引用。一般情况下,都是控件的主单元文件。再查看控件的文件,发现一个与控件同名的单元文件,vg_scene.dcu。这个单元文件的嫌疑最大,使用DeDe进行DUMP后,查找ShowVersion2,结果发现,ShowVersion2真的是在该单元文件中调用的,调用的前后代码如下:

    000000C6 : E8(00 00 00 00     CALL RegisterClasses{0xD8}

    000000CB : A1(00 00 00 00      MOV EAX,DWORD PTR [_DV_TvgBrushObject{0x5B3}]

    000000D0 : 89 45 B8           MOV DWORD PTR [EBP-72],EAX

    000000D3 : A1(00 00 00 00     MOV EAX,DWORD PTR [_DV_TvgPathObject{0x5B5}]

    000000D8 : 89 45 BC           MOV DWORD PTR [EBP-68],EAX

    000000DB : A1(00 00 00 00      MOV EAX,DWORD PTR [_DV_TvgBitmapObject{0x5B7}]

   000000E0 : 89 45 C0           MOV DWORD PTR [EBP-64],EAX

    000000E3 : 8D 55 B8           LEA EDX,DWORD PTR [EBP-72]

    000000E6 : B9 02 00 00 00     MOV ECX,$00000002

    000000EB : B8(C0 01 00 00     MOV EAX,vg_scene{0x1}+448

   000000F0 : E8(00 00 00 00     CALL RegisterVGObjects{0x63F}

    000000F5 : E8(00 00 00 00     CALL ShowVersion2{0x347}

    000000FA : 68(CC 01 00 00     PUSH vg_scene{0x1}+460

000000FF : E8(00 00 00 00     CALL LoadLibrary{0x299}

 

通过查看代码可以看出来,vg_scene.dcu 单元并没有进行判断,只是简单的调用ShowVersion2显示试用版信息。

通过以上分析,我们得出结论,破解VGScene控件,可以通过两个方法来实现:

1、  修改vg_scene.dcu 单元,使其不调用ShowVersion2方法即可。

2、  修改vg_version.dcu单元,将ShowVersion2方法直接返回即可。

 

方法2的好处显而易见,修改完的vg_version.dcu文件,如果KSDEV公司不修改注册方法的话,再有新版本直接使用vg_version.dcu文件覆盖原文件,再重新编译即可实现破解。

 

四、破解过程

1、  Delphi建立一个程序,在该程序的主单元文件中写一个空的过程ShowVersion,代码如下:

unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs;

 

type

  TForm1 = class(TForm)

  private

    { Private declarations }

  public

    { Public declarations }

 

  end;

 

var

  Form1: TForm1;

  procedure ShowVersion;

implementation

 

{$R *.dfm}

 

procedure ShowVersion;

begin

end;

end.

 

编译后,使用DeDeUnit1.dcu进行Dump,找到ShowVersion过程,代码如下:

procedure ShowVersion;

begin

 00000000 :                               // -- Line #27 --

   00000000 : C3                            RET NEAR

end;

获得RET NEAR 的汇编代码为 C3

 

2、  使用DeDe vg_version.dcu文件进行Dump,找到ShowVersion2过程,代码如下:

 

procedure ShowVersion2;

const

  AboutText =

    000:     P...This app|FF FF FF FF 50 01 00 00 54 68 69 73 20 61 70 70|

    010: lication uses a |6C 69 63 61 74 69 6F 6E 20 75 73 65 73 20 61 20|

    020: trial version of|74 72 69 61 6C 20 76 65 72 73 69 6F 6E 20 6F 66|

    030:  VGScene.....Ple|20 56 47 53 63 65 6E 65 2E 0D 0A 0D 0A 50 6C 65|

    040: ase contact the |61 73 65 20 63 6F 6E 74 61 63 74 20 74 68 65 20|

    050: provider of the |70 72 6F 76 69 64 65 72 20 6F 66 20 74 68 65 20|

    060: application for |61 70 70 6C 69 63 61 74 69 6F 6E 20 66 6F 72 20|

    070: a registered ver|61 20 72 65 67 69 73 74 65 72 65 64 20 76 65 72|

    080: sion.....%s..Cop|73 69 6F 6E 2E 0D 0A 0D 0A 25 73 0D 0A 43 6F 70|

    090: yright (C) 1998-|79 72 69 67 68 74 20 28 43 29 20 31 39 39 38 2D|

    0A0: 2009 by Eugene K|32 30 30 39 20 62 79 20 45 75 67 65 6E 65 20 4B|

    0B0: ryukov....For co|72 79 75 6B 6F 76 0D 0A 0D 0A 46 6F 72 20 63 6F|

    0C0: nditions of dist|6E 64 69 74 69 6F 6E 73 20 6F 66 20 64 69 73 74|

    0D0: ribution and use|72 69 62 75 74 69 6F 6E 20 61 6E 64 20 75 73 65|

    0E0: , see LICENSE.TX|2C 20 73 65 65 20 4C 49 43 45 4E 53 45 2E 54 58|

    0F0: T.....Visit our |54 2E 0D 0A 0D 0A 56 69 73 69 74 20 6F 75 72 20|

    100: web site for the|77 65 62 20 73 69 74 65 20 66 6F 72 20 74 68 65|

    110:  latest versions|20 6C 61 74 65 73 74 20 76 65 72 73 69 6F 6E 73|

    120:  of VGScene:....|20 6F 66 20 56 47 53 63 65 6E 65 3A 0D 0A 0D 0A|

    130: http://www.ksdev|68 74 74 70 3A 2F 2F 77 77 77 2E 6B 73 64 65 76|

    140: .com/..support@k|2E 63 6F 6D 2F 0D 0A 73 75 70 70 6F 72 74 40 6B|

    150: sdev.com.       |73 64 65 76 2E 63 6F 6D 00|;

var

  X: System.Integer;

  Y: System.Integer;

begin

   00000000 : 55                            PUSH EBP

   00000001 : 8B EC                         MOV EBP,ESP

   00000003 : 83 C4 F4                      ADD ESP,-12

   00000006 : 53                            PUSH EBX

   00000007 : 56                            PUSH ESI

   00000008 : 33 C0                           XOR EAX,EAX

 

 

3、  使用 UltraEdit 打开vg_version.dcu 文件,输入查找串55 8B EC 83 C4 F4 53 56 33 C0,找到位置后,修改55 C3 ,保存。

  

 

4、  重新对 VGScene 控件进行编译,提示框不见了,破解完成。

 

五、验证

从网上下载了 同是 KSDEV公司出品的 DXScene 源码版,打开dx_scene.pas 查看单元文件的初始化部分,代码如下:

initialization

  {$IFDEF WIN32}

  User32Lib := LoadLibrary(User32);

  if User32Lib <> 0 then

  begin

    @SetLayeredWindowAttributes := GetProcAddress(User32Lib, 'SetLayeredWindowAttributes');

    @UpdateLayeredWindow := GetProcAddress(User32Lib, 'UpdateLayeredWindow');

    @PrintWindow := GetProcAddress(User32Lib, 'PrintWindow');

  end;

  {$ENDIF}

  RegisterClasses([TdxBitmap, TdxPosition, TdxMeshData, TdxMaterial, TdxBitmapRect, TdxBounds]);

  RegisterClasses([TdxScene, TdxObject, TdxCustomLayer, TdxCustomBufferLayer]);

  RegisterClasses([TdxBitmapStream, TdxBitmapCollection, TdxBitmapList]);

  RegisterDXObjects('Scene', [TdxCamera, TdxLight, TdxDummy, TdxProxyObject]);

  RegisterDXObjects('Resources', [TdxBitmapObject]);

  RegisterDXObjects('Shapes', [TdxBufferLayer]);

  {$IFDEF DxSceneTrial}

  ShowVersion2;

  {$ENDIF}

  {$IFDEF WIN32}

  OleInitialize(nil);

  {$ENDIF}

 

果然发现,试用版只是在发布时,使用 DxSceneTrial 编译参数对控件进行重新编译的,功能上并没有删减,说明上述破解方法可行。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
此控件是做3D界面软件的最好选择。。。 DXScene is 3D hardware accelerated graphics library Delphi/C++ Builder/Lazarus. Hardware accelerated graphics on Windows, Mac OS X and Linux 3D and 2D graphical editor integrated in IDE Powerful 3D layer containing items such as Cube, Sphere, Cone, Plane, Mesh, free Camera and Lights Mesh object have WPF mesh data format, DXScene have advanced import tool which support - GLSM,WRL,TIN,STL,SMD,Q3BSP,BSP,PLY,OCT,OBJ,OBJF,NURBS,NMF,MS3D,MDC,MD2,LWO,GTS,GLM,GLX,GLA,B3D,MD5MESH,MD5ANIM,MD3,3DS,PRJ file formats Powerful 2D vector engine like Adobe Flash or Microsoft WPF includes high quality shapes and controls like window, label, button, checkbox, textbox and more Advanced GUI engine - window, button, textbox, numberbox, memo, anglebox, list box and much much more Advanced skinning engine based on vector graphics styles. Cool exists styles - Dark, Modern, Vista. DXScene can be used to create hardware accelerated 2D applications with cool animation like CoverFlow, layer and more Easy to use time-based animation and transition effects Layered windows, Jpeg, Png, Tiff and Gif format read/write support, fast thumbnail creation Realtime mode for games and realtime simulations DXScene can be used as development tools for SCADA, GIS, CAD and KIOSK applications DB-Aware controls - TvxDBNavigator, TvxDBLabel, TvxDBTextBox and more Multilanguage engine, editor and examples Physics simulation using Newton Game Dynamics Cross-platform solution available on Microsoft Windows, Apple Mac OS X and Linux
Hardware accelerated graphics on Windows, Mac OS X and Linux 3D and 2D graphical editor integrated in IDE Powerful 3D layer containing items such as Cube, Sphere, Cone, Plane, Mesh, free Camera and Lights Mesh object have WPF mesh data format, DXScene have advanced import tool which support - GLSM,WRL,TIN,STL,SMD,Q3BSP,BSP,PLY,OCT,OBJ,OBJF,NURBS,NMF,MS3D,MDC,MD2,LWO,GTS, GLM,GLX,GLA,B3D,MD5MESH,MD5ANIM,MD3,3DS,PRJ file formats Powerful 2D vector engine like Adobe Flash or Microsoft WPF includes high quality shapes and controls like window, label, button, checkbox, textbox and more Advanced GUI engine - window, button, textbox, numberbox, memo, anglebox, list box and much much more Advanced skinning engine based on vector graphics styles. Cool exists styles - Dark, Modern, Vista. DXScene can be used to create hardware accelerated 2D applications with cool animation like CoverFlow, layer and more Easy to use time-based animation and transition effects Layered windows, Jpeg, Png, Tiff and Gif format read/write support, fast thumbnail creation Realtime mode for games and realtime simulations DXScene can be used as development tools for SCADA, GIS, CAD and KIOSK applications DB-Aware controls - TvxDBNavigator, TvxDBLabel, TvxDBTextBox and more Multilanguage engine, editor and examples Physics simulation using Newton Game Dynamics Cross-platform solution available on Microsoft Windows, Apple Mac OS X and Linux DXScene Features: Skinning Engine DXScene have full skinning engine. Now you can apply styles to all controls very easy. DXScene have cool exists styles - Dark, Modern, Vista, AIR. Design-time inplace Editor WYSIWYG design-time 3D and 2D designer and property editors Power of 3D Powerful 3D layer containing items such as Cube, Sphere, Cone, Plane, Mesh, free Camera and Lights. Mesh object have WPF mesh data format and 3DS, MD3 file export tool. 2D in 3D Powerful 2D vector engine like Adobe Flash or Microsoft WPF includes high quality shapes and controls like window, label, button, checkbox, textbox and more. Advanced GUI engine - window, button, textbox, numberbox, memo, anglebox, list box and much much more. DXScene can be used to create hardware accelerated 2D applications with cool animation like CoverFlow, layer and more. Cool Particle Engine DXScene 3 have new cool particle engine with editor. Now you can add cool effects to your DXScene's applications. Cross-Platform Solution DXScene is a native object pascal components for Delphi/C++Builder and Lazarus. Available for Microsoft Windows, Apple Mac OS X and Linux. Applications: 3D Text A compact, flexible and affordable tool that will help you create custom 3D logos and headers in minutes. Fully configurable text parameters, any output resolution, lightning-fast rendering and instant preview of the changes made to the text model. 3D Image Commander 3D Image Commander a full-featured software that allows you to create advanced thumbnails with cool 3D styles and effects. Protect your copyrights with a copyright notice. Add text comments to any image. Create images with effects like 3D perspective, 3D curving, reflection, glow, shadow, corners and stroke. model2icon model2icon converts 3D models into Windows and Mac OS X icons. You can find many models on the Internet and convert them to icons for use on your desktop, in applications and much more. With model2icon you can convert 3D model to Windows and Mac OS X Icon with a single action. It supports Windows Vista 256x256 icons with alpha channel and new Leopard 256x256 Mac OS X icons. model2icon allow to customize 3D model before converting. Support 3DS, MD3 file format.
dxscene开发的。在网上似乎这个的资源也挺少的。这是第一次玩dxscenedxscene做出的效果是挺炫的。支持3d。程序里面用到的,翻转,半透明。有兴趣的朋友可以和我一起探讨,我的邮箱:ibleave60@sina.com uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, dx_scene, dx_vgcore, dx_vglayer, dx_ani, StdCtrls, IniFiles, StrUtils, mmSystem, superobject, ExtCtrls, Menus, uWarning; type TFrmMain = class(TForm) dxScene1: TdxScene; Root1: TdxVisualObject; WidgetLayout: TdxGUIObjectLayer; Root2: TvxLayout; Front: TvxRectangle; FloatAnimation: TdxFloatAnimation; Background1: TvxBackground; ToolBar1: TvxToolBar; tcList: TvxTabControl; cbAll: TvxCheckBox; btnEdit: TvxButton; lbContent: TvxLabel; VistaStyle: TvxResources; lyStole: TvxTabItem; Layout1: TvxLayout; lyDate: TvxTabItem; Layout2: TvxLayout; lyGood: TvxTabItem; Layout3: TvxLayout; CloseButton1: TvxCloseButton; Back: TvxRectangle; btnDel: TvxButton; tcSet: TvxTabControl; tiStole: TvxTabItem; Layout4: TvxLayout; tlDate: TvxTabItem; Layout5: TvxLayout; tiHealth: TvxTabItem; Layout6: TvxLayout; btnClose: TvxCloseButton; btnAdd: TvxButton; Label5: TvxLabel; tbHour: TvxTextBox; tbHour2: TvxTextBox; Label2: TvxLabel; Label6: TvxLabel; tbMin: TvxTextBox; tbMin2: TvxTextBox; Label3: TvxLabel; Label7: TvxLabel; Label4: TvxLabel; mmStole: TvxMemo; mmDaily: TvxMemo; Label8: TvxLabel; Label9: TvxLabel; cbDaily: TvxStringComboBox; Label10: TvxLabel; Label11: TvxLabel; Label12: TvxLabel; cbHealth: TvxStringComboBox; SpinBox: TvxSpinBox; Text1: TvxText; txtFlip: TvxText; txtMemo: TvxText; Label1: TvxLabel; Label13: TvxLabel; cbbFarm: TvxStringComboBox; tvHealth: TvxTreeView; tvFarm: TvxTreeView; TrayIcon: TTrayIcon; PopupMenu: TPopupMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; nClose: TMenuItem; Image1: TvxImage; tvDaily: TvxTreeView; txtNew: TvxText; txtPast: TvxText; procedure ToolBar1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); procedure btnEditClick(Sender: TObject); procedure btnDelClick(Sender: TObject); procedure txtFlipClick(Sender: TObject); //翻转特效 procedure btnAddClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure tbHourKeyDown(var Key: Word; var KeyChar: WideChar; Shift: TShiftState); procedure tbMinKeyDown(var Key: Word; var KeyChar: WideChar; Shift: TShiftState); procedure txtNewClick(Sender: TObject); procedure N1Click(Sender: TObject); procedure btnCloseClick(Sender: TObject); procedure N2Click(Sender: TObject); procedure nCloseClick(Sender: TObject); procedure txtPastClick(Sender: TObject); procedure cbAllClick(Sender: TObject); procedure tcListChange(Sender: TObject); procedure tvFarmChangeCheck(Sender: TObject); private FrmTime: TFrmWarning; FileName: string; lbTime, lbDaily, lbHealth: array of TvxLabel; jo: ISuperObject; //配置文件生成的json procedure PlayClockSound; procedure BackFlip; procedure QueryConfig(joNode: ISuperObject; Index: Integer; NodeType: Integer; IsDelete: Boolean = False); procedure ReadConfig; procedure WriteConfig; procedure OnTimerOneSecond(Sender: TObject); //3种类型提醒到时触发的事件 procedure OnDailyTimeOut(Sender: TObject); procedure OnHealthTimeOut(Sender: TObject); procedure CreateTreeNode; //根据JSON创建TreeNode procedure RefreshTreeNode; procedure RestoreWindow; public { Public declarations } end; var FrmMain: TFrmMain; const lsfw_lock = 1; lsfw_unlock = 2; function LockSetForegroundWindow(uLockCode: DWORD): BOOL; stdcall;external 'user32.dll';
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值