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.gif ContractedBlock.gif Interface uses interface
InBlock.gifuses
InBlock.gif Windows, Messages;
InBlock.gif
InBlock.gifconst
InBlock.gif AppBuilder = 'TAppBuilder';
InBlock.gif
EditWindow = 'TEditWindow';
InBlock.gif
PropertyInspector = 'TPropertyInspector';
InBlock.gif
ObjectTreeView = 'TObjectTreeView';
InBlock.gif

InBlock.gifimplementation
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gifFunction WindowProc()function WindowProc(Window: Integer; AMessage, wParam, lParam: Integer):
InBlock.gifInteger;
InBlock.gif stdcall; export;
InBlock.gifbegin
InBlock.gif WindowProc := 0;
InBlock.gifcase AMessage of
InBlock.gif WM_DESTROY, WM_QUIT, WM_QUERYENDSESSION, WM_CLOSE:
InBlock.gif begin
InBlock.gif PostQuitMessage(0);
InBlock.gifExit;
InBlock.gifend;
InBlock.gifend;
InBlock.gif WindowProc := DefWindowProc(Window, AMessage, wParam, lParam);
InBlock.gifend;
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gifFunction 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.gifend;
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gifFunction 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.gifif hWindow <> 0 then
InBlock.gif begin
InBlock.gif // ShowWindow(hWindow, cmdShow);
InBlock.gif // UpdateWindow(hWindow);
InBlock.gifend;
InBlock.gif
InBlock.gif Result := hWindow;
InBlock.gifend;
InBlock.gif
InBlock.gifvar
InBlock.gif AMessage : TMsg;
InBlock.gif hWindow : HWnd;
InBlock.gif
InBlock.gifbegin
InBlock.gif//HWND handle = GetSafeHwnd();
InBlock.gif
InBlock.gifif GlobalFindAtom('@TaskAgent')=0 then
InBlock.gif
begin
InBlock.gif GlobalAddAtom('@TaskAgent');
InBlock.gif
end;
InBlock.gif
InBlock.gifif not WinRegister(AppBuilder) then
InBlock.gif begin
InBlock.gif MessageBox(0, '注册失败!', nil, mb_Ok);
InBlock.gif
Exit;
InBlock.gifend;
InBlock.gifif not WinRegister(EditWindow) then
InBlock.gif begin
InBlock.gif MessageBox(0, '注册失败!', nil, mb_Ok);
InBlock.gif
Exit;
InBlock.gifend;
InBlock.gifif not WinRegister(PropertyInspector) then
InBlock.gif begin
InBlock.gif MessageBox(0, '注册失败!', nil, mb_Ok);
InBlock.gif
Exit;
InBlock.gifend;
InBlock.gifif not WinRegister(ObjectTreeView) then
InBlock.gif begin
InBlock.gif MessageBox(0, '注册失败!', nil, mb_Ok);
InBlock.gif
Exit;
InBlock.gifend;
InBlock.gif
InBlock.gif hWindow := WinCreate(AppBuilder);
InBlock.gifif hWindow = 0 then
InBlock.gif begin
InBlock.gif MessageBox(0, '创建失败', nil, mb_Ok);
InBlock.gif
Exit;
InBlock.gifend;
InBlock.gif
InBlock.gif hWindow := WinCreate(EditWindow);
InBlock.gifif hWindow = 0 then
InBlock.gif begin
InBlock.gif MessageBox(0, '创建失败', nil, mb_Ok);
InBlock.gif
Exit;
InBlock.gifend;
InBlock.gif hWindow := WinCreate(PropertyInspector);
InBlock.gifif hWindow = 0 then
InBlock.gif begin
InBlock.gif MessageBox(0, '创建失败', nil, mb_Ok);
InBlock.gif
Exit;
InBlock.gifend;
InBlock.gif
InBlock.gif hWindow := WinCreate(ObjectTreeView);
InBlock.gifif hWindow = 0 then
InBlock.gif begin
InBlock.gif MessageBox(0, '创建失败', nil, mb_Ok);
InBlock.gif
Exit;
InBlock.gifend;
InBlock.gif
InBlock.gifend.
InBlock.gif



本文转自suifei博客园博客,原文链接:http://www.cnblogs.com/Chinasf/archive/2005/10/24/260518.html,如需转载请自行联系原作者
相关文章
|
1月前
|
IDE 编译器 开发工具
C/C++ IDE环境 (Qt Creator visual studio等) Cmake工程不显示头文件的解决方案
C/C++ IDE环境 (Qt Creator visual studio等) Cmake工程不显示头文件的解决方案
28 0
|
2月前
|
移动开发 小程序 IDE
【社区每周】小程序搜索直达能力全面开放;IDE3.0稳定版正式发布(2022年6月第二期)
【社区每周】小程序搜索直达能力全面开放;IDE3.0稳定版正式发布(2022年6月第二期)
22 0
|
3月前
|
JSON 小程序 JavaScript
微信小程序之项目基本结构、页面的基础及宿主环境
微信小程序之项目基本结构、页面的基础及宿主环境
|
3月前
|
Web App开发 小程序 Android开发
Appium微信小程序自动化环境准备
Appium微信小程序自动化环境准备
86 1
|
1月前
|
JSON 小程序 JavaScript
【微信小程序】-- 宿主环境 & 通信模型 & 运行机制介绍(五)
【微信小程序】-- 宿主环境 & 通信模型 & 运行机制介绍(五)
|
2月前
|
IDE Cloud Native 开发工具
云原生之在Docker环境下部署Atheos云IDE平台
【2月更文挑战第3天】云原生之在Docker环境下部署Atheos云IDE平台
365 2
|
2月前
|
小程序 IDE Go
社区每周丨小程序企业经营类目升级及IDE新版本上线(4月第1周)
社区每周丨小程序企业经营类目升级及IDE新版本上线(4月第1周)
25 0
|
3月前
|
JSON 小程序 JavaScript
【微信小程序开发】环境介绍和基本使用
【微信小程序开发】环境介绍和基本使用
|
3月前
|
IDE 开发工具 Windows
DevEco Studio IDE 创建项目时候配置环境
DevEco Studio IDE 创建项目时候配置环境
26 0
|
6月前
|
JSON 小程序 JavaScript
微信小程序学习第一周的第一篇博客(知识点:了解什么是小程序、各文件的作用和小程序的宿主环境)
微信小程序学习第一周的第一篇博客(知识点:了解什么是小程序、各文件的作用和小程序的宿主环境)