3年前的小程序:破解需要delphi IDE 环境的vcl 控件

基本原理:有些vcl组件未注册的话,会显示没有注册的信息,但在设计期间不显示这些信息,表示该组件会检查delphi的ide 环境,解决办法就是让自己的exe带上ide的信息;

组件检查ide的办法无非就是使用api查找特定的delphi窗体类名称,如下是代码,建立几个看不见的窗体,名称和delphi ide的主要窗口一样;当然,这样做不见得100%破解检查ide环境的组件,有些组件可以遍历窗体的子件类,总之方法很多,要更好的办法,简单;用dede反编译delphi的主程序,把dfm资源搞出来,到自己工程里加入就行了。

以下是代码,见笑;
None.gif{********************* 破解需要delphi IDE 的vcl 控件*****
None.gif
//请直接将该单元加入到工程中,并放到最初启动位置,无需调
None.gif
//用方法,自动完成解密过程
None.gif
//版权所有:随飞
None.gif//该版为 Pascal 代码版本
None.gif
********************************************************}
None.gifunit vclAntIde;
ExpandedBlockStart.gifContractedBlock.gif
Interface usesinterface
InBlock.gifuses
InBlock.gif  Windows, Messages;
InBlock.gif
InBlock.gif
const
InBlock.gif  AppBuilder        
= 'TAppBuilder';
InBlock.gif
  EditWindow        = 'TEditWindow';
InBlock.gif
  PropertyInspector = 'TPropertyInspector';
InBlock.gif
  ObjectTreeView    = 'TObjectTreeView';
InBlock.gif

InBlock.gifimplementation
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
Function WindowProc()function WindowProc(Window: Integer; AMessage, wParam, lParam: Integer):
InBlock.gif  
Integer;
InBlock.gif  stdcall; export;
InBlock.gifbegin
InBlock.gif  WindowProc :
= 0;
InBlock.gif  
case AMessage of
InBlock.gif    WM_DESTROY, WM_QUIT, WM_QUERYENDSESSION, WM_CLOSE:
InBlock.gif      begin
InBlock.gif        PostQuitMessage(
0);
InBlock.gif        
Exit;
InBlock.gif      
end;
InBlock.gif  
end;
InBlock.gif  WindowProc :
= DefWindowProc(Window, AMessage, wParam, lParam);
InBlock.gif
end;
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
Function WinRegister()function WinRegister(AppName: PAnsiChar): boolean;
InBlock.gifvar
InBlock.gif  WindowClass       : TWndClass;
InBlock.gifbegin
InBlock.gif  WindowClass.Style :
= 2 or 1;
InBlock.gif  WindowClass.lpfnWndProc :
= @WindowProc;
InBlock.gif  WindowClass.cbClsExtra :
= 0;
InBlock.gif  WindowClass.cbWndExtra :
= 0;
InBlock.gif  WindowClass.hInstance :
= HInstance;
InBlock.gif  WindowClass.hIcon :
= LoadIcon(0, idi_Application);
InBlock.gif  WindowClass.hCursor :
= LoadCursor(0, idc_Arrow);
InBlock.gif  WindowClass.hbrBackground :
= HBrush(Color_Window);
InBlock.gif  WindowClass.lpszMenuName :
= nil;
InBlock.gif  WindowClass.lpszClassName :
= AppName;
InBlock.gif
InBlock.gif  Result :
= RegisterClass(WindowClass) <> 0;
InBlock.gif
end;
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
Function WinCreate()function WinCreate(AppName: PAnsiChar): HWnd;
InBlock.gifvar
InBlock.gif  hWindow           : HWnd;
InBlock.gifbegin
InBlock.gif  hWindow :
= CreateWindow(AppName,
InBlock.gif    AppName,
InBlock.gif    WS_OVERLAPPEDWINDOW,
InBlock.gif    
0,
InBlock.gif    
0,
InBlock.gif    
1,
InBlock.gif    
1,
InBlock.gif    
0,
InBlock.gif    
0,
InBlock.gif    HInstance,
InBlock.gif    nil);
InBlock.gif  
if hWindow <> 0 then
InBlock.gif  begin
InBlock.gif    
//      ShowWindow(hWindow, cmdShow);
InBlock.gif    
//      UpdateWindow(hWindow);
InBlock.gif  
end;
InBlock.gif
InBlock.gif  Result :
= hWindow;
InBlock.gif
end;
InBlock.gif
InBlock.gifvar
InBlock.gif  AMessage          : TMsg;
InBlock.gif  hWindow           : HWnd;
InBlock.gif  
InBlock.gifbegin
InBlock.gif
//HWND handle = GetSafeHwnd();
InBlock.gif
InBlock.gif  
if GlobalFindAtom('@TaskAgent')=0 then
InBlock.gif
  begin
InBlock.gif    GlobalAddAtom(
'@TaskAgent');
InBlock.gif
  end;
InBlock.gif
InBlock.gif  
if not WinRegister(AppBuilder) then
InBlock.gif  begin
InBlock.gif    MessageBox(
0'注册失败!', nil, mb_Ok);
InBlock.gif
    Exit;
InBlock.gif  
end;
InBlock.gif  
if not WinRegister(EditWindow) then
InBlock.gif  begin
InBlock.gif    MessageBox(
0'注册失败!', nil, mb_Ok);
InBlock.gif
    Exit;
InBlock.gif  
end;
InBlock.gif  
if not WinRegister(PropertyInspector) then
InBlock.gif  begin
InBlock.gif    MessageBox(
0'注册失败!', nil, mb_Ok);
InBlock.gif
    Exit;
InBlock.gif  
end;
InBlock.gif  
if not WinRegister(ObjectTreeView) then
InBlock.gif  begin
InBlock.gif    MessageBox(
0'注册失败!', nil, mb_Ok);
InBlock.gif
    Exit;
InBlock.gif  
end;
InBlock.gif
InBlock.gif  hWindow :
= WinCreate(AppBuilder);
InBlock.gif  
if hWindow = 0 then
InBlock.gif  begin
InBlock.gif    MessageBox(
0'创建失败', nil, mb_Ok);
InBlock.gif
    Exit;
InBlock.gif  
end;
InBlock.gif
InBlock.gif  hWindow :
= WinCreate(EditWindow);
InBlock.gif  
if hWindow = 0 then
InBlock.gif  begin
InBlock.gif    MessageBox(
0'创建失败', nil, mb_Ok);
InBlock.gif
    Exit;
InBlock.gif  
end;
InBlock.gif  hWindow :
= WinCreate(PropertyInspector);
InBlock.gif  
if hWindow = 0 then
InBlock.gif  begin
InBlock.gif    MessageBox(
0'创建失败', nil, mb_Ok);
InBlock.gif
    Exit;
InBlock.gif  
end;
InBlock.gif
InBlock.gif  hWindow :
= WinCreate(ObjectTreeView);
InBlock.gif  
if hWindow = 0 then
InBlock.gif  begin
InBlock.gif    MessageBox(
0'创建失败', nil, mb_Ok);
InBlock.gif
    Exit;
InBlock.gif  
end;
InBlock.gif
InBlock.gif
end.
InBlock.gif
InBlock.gif

转载于:https://www.cnblogs.com/Chinasf/archive/2005/10/24/260518.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

执行POP和PUSH指令后,SS和SP的变化

我们知道push指令是将数据送入栈中&#xff0c;pop指令是将数据从栈顶取出来&#xff0c;8086CPU的入栈和出栈操作都是以字为单位的 比如说将10000H-1000FH这段内存当做栈使用 CPU是通过CS、IP中存放的段地址和偏移地址来知道当前要执行的指令&#xff0c;通过DS和[address]来…

python 文件遍历

1. import os,sys r raw_input(“type a directory name”) for root, dirs, files in os.walk(r): for f in files: print root, os.sep, f;2. import os,sys def walkdir(dirname): try: ls os.listdir(dirname) except: print ‘access deny’ else: for l in ls: temp o…

win7 php 上传文件,在LNMP原来的基础上,win7环境下如何上传PHP文件到Linux环境下...

首先&#xff0c;下载一个WINSCP客户端连接主机后&#xff0c;上传文件到自己的保存目录接着进入数据库添加我们的数据库mysql -uroot -p //这个是进入mysql的命令&#xff0c;但是要是你没有加 ln -s /usr/local/mysql/bin/mysql /usr/bin 的话就要输入下面那一行/usr/loc…

HDFC的完整形式是什么?

HDFC&#xff1a;住房发展金融公司 (HDFC: Housing Development Finance Corporation) HDFC is an abbreviation of Housing Development Finance Corporation. It is a well-known housing expansion finance corporation of India which largely makes available housing loa…

将10000H-1000FH这段空间当做栈,初始状态栈是空的,设置AX=001AH,BX=001BH,利用栈,交换AX和BX的数据

程序&#xff1a; mov ax,1000H mov ss,ax mov sp,0010H;设置AX和BX的值 mov ax,001AH mov bx,001BH;压栈 push ax push bx;出栈 pop ax pop bx解释&#xff1a; 在8086中&#xff0c;段寄存器不能直接传值&#xff0c;要通过一般寄存器&#xff0c;所以先将值传到ax中&#x…

利用WM_CTLCOLOR消息实现编辑控制(Edit Control)的文本与背景色的改变

(Abbey发表于2004-2-1 1:48:45)首先要明白&#xff1a;WM_CTLCOLOR是一个由控制(Control)发送给它父窗口的通知消息(Notification message)。实现步骤&#xff1a;生成一个标准的单文档应用程序框架&#xff0c;假设应用程序的名称为Color。我将利用它的About对话框做示范。在A…

fckeditor文件管理器添加查看、修改、删除文件功能[php]修正下载地址

2009年8月25日 由于PHP存在中文目录读取问题&#xff0c;将延期发布。2009年9月3日 正式发布&#xff1a;查看、修改、删除文件功能的fckeditor 2.6.4.1相关图片请查看&#xff1a;http://home.blueidea.com/attachment/200909/1/336696_1251813604S01b.gif相关其它&#xff1a…

php having,having方法

having方法1、对分组统计的结果&#xff0c;进行筛选如果将分分组查询的结果看成一张表的话&#xff0c;having方法类似where语句的功能2、源码&#xff1a;/thinkphp/library/think/db/Query.php/*** 指定having查询* access public* param string $having having* return $th…

合并排序算法排序过程_合并排序| 用于大型输入的最佳排序算法之一

合并排序算法排序过程What is sorting? 什么是分类&#xff1f; Sorting allows us to process our data in a more organized and efficient way. It makes searching easy as it will now take less time to search for a specific value in a given sorted sequence with …

Linux:jumpserver介绍(1)

官方网站 JumpServer - 开源堡垒机 - 官网https://www.jumpserver.org/ JumpServer 是广受欢迎的开源堡垒机&#xff0c;是符合 4A 规范的专业运维安全审计系统。JumpServer 帮助企业以更安全的方式管控和登录所有类型的资产&#xff0c;实现事前授权、事中监察、事后审计&…

对一个简单汇编程序分析

程序&#xff1a; assume cs:codesgcodesg segmentmov ax,0123Hmov bx,0456Hadd ax,bxadd ax,axmov ax,4c00Hint 21Hcodesg endsend伪指令&#xff1a; 伪指令是写给编译器看的&#xff0c;CPU不会执行&#xff0c;在源程序中&#xff0c;包括两种指令&#xff0c;一个是…

datagrid 页眉合并

http://www.codeproject.com/aspnet/MergeDatagridHeader.asp private void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e){//产生序号&#xff0c;合并单元格if(e.Item.ItemIndex!-1){e.Item.Cells[1].TextConvert.ToString(e.Item.ItemIndex1);//}else{e…

劈尖等厚干涉条纹matlab,劈尖等厚干涉实验中,k=0级的干涉条纹是条纹,与k级暗条纹对应的空气薄膜的厚度为...

劈尖等厚干涉实验中&#xff0c;k0级的干涉条纹是条纹&#xff0c;与k级暗条纹对应的空气薄膜的厚度为答&#xff1a;暗&#xff0c;kλ/2spampython 编程\nprint(spam[-6:-4])是否报错&#xff1f;(是&#xff1a;则填写报错原因&#xff0c;否&#xff1a;则填写输出结果)答&…

使用OpenCV python模块读取图像并将其另存为灰度系统

In Python, we can use an OpenCV library named cv2. Python does not come with cv2, so we need to install it separately. 在Python中&#xff0c;我们可以使用名为cv2的OpenCV库 。 Python没有随附cv2 &#xff0c;因此我们需要单独安装它。 For Windows: 对于Windows&a…

loop指令

功能&#xff1a;循环 格式&#xff1a;loop 标号 执行过程&#xff1a; cxcx-1判断cx的值&#xff0c;不为0则转至标号处执行程序&#xff0c;如果为0则向下执行 从上面的执行过程可以看出&#xff0c;cx存放的是循环次数 举个例子&#xff1a;实现2的12次方 assume cs:co…

不知不觉中学会做一个有主见的人

今天还是经历了不少事情&#xff0c;首先中午定好了聚会吃饭的地方&#xff0c;通知了以前班里的同学。事情解决了觉得心里很开心。中午不睡觉去人文馆准备听微软的宣讲会。等到三点多稀稀疏疏的几个人在那里&#xff0c;一个保安跑进来说取消了。埃&#xff0c;居然不通知。虽…

C# datetime 操作

C# datetime 操作 //C#里内置的DateTime基本上都可以实现这些功能&#xff0c;巧用DateTime会使你处理这些事来变轻松多了 //今天 DateTime.Now.Date.ToShortDateString(); //昨天&#xff0c;就是今天的日期减一…

php 子网掩码正则,验证子网掩码正则表达式代码范例

验证子网掩码正则表达式代码实例:在实际应用中可能验证子网掩码合法性的需求并不多&#xff0c;但并不能够保证绝对没有&#xff0c;下面就分享一段能够实现此功能的代码实例&#xff0c;希望能够给需要的朋友带来一定的帮助&#xff0c;代码如下:function checkMask(mask){var…

c# 可变二维数组_C#| 具有固定行大小和可变列大小的二维数组

c# 可变二维数组Here, the task is to declare a two dimensional array – where number rows are given and columns are variable length: 在这里&#xff0c;任务是声明一个二维数组-其中给出了行数&#xff0c;列数是可变长度 &#xff1a; To declare such array, we us…

loop和[bx]的联合应用

计算ffff:0-ffff:b单元中的数据的和&#xff0c;结果存储在dx中&#xff08;8086&#xff09; assume cs:codecode segmentmov ax,0ffffhmov ds,axmov bx,0mov dx,0mov cx,12s: mov al,[bx]mov ah,0add dx,axinc bxloop smov ax,4c00hint 21hcode ends endloop相当于for循环&a…