Add 10.3.2 v26.0.34749.6593 Activator
This commit is contained in:
parent
7f7ffd7bc2
commit
cbf91045d1
183
10.3.2/Activator/Activator.bdsproj
Normal file
183
10.3.2/Activator/Activator.bdsproj
Normal file
@ -0,0 +1,183 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<BorlandProject>
|
||||
<PersonalityInfo>
|
||||
<Option>
|
||||
<Option Name="Personality">Delphi.Personality</Option>
|
||||
<Option Name="ProjectType">VCLApplication</Option>
|
||||
<Option Name="Version">1.0</Option>
|
||||
<Option Name="GUID">{5CDEFC4B-53B9-445E-9A4F-AE44E310FA07}</Option>
|
||||
</Option>
|
||||
</PersonalityInfo>
|
||||
<Delphi.Personality>
|
||||
<Source>
|
||||
<Source Name="MainSource">Activator.dpr</Source>
|
||||
</Source>
|
||||
<FileVersion>
|
||||
<FileVersion Name="Version">7.0</FileVersion>
|
||||
</FileVersion>
|
||||
<Compiler>
|
||||
<Compiler Name="A">8</Compiler>
|
||||
<Compiler Name="B">0</Compiler>
|
||||
<Compiler Name="C">0</Compiler>
|
||||
<Compiler Name="D">0</Compiler>
|
||||
<Compiler Name="E">0</Compiler>
|
||||
<Compiler Name="F">0</Compiler>
|
||||
<Compiler Name="G">1</Compiler>
|
||||
<Compiler Name="H">1</Compiler>
|
||||
<Compiler Name="I">1</Compiler>
|
||||
<Compiler Name="J">1</Compiler>
|
||||
<Compiler Name="K">0</Compiler>
|
||||
<Compiler Name="L">0</Compiler>
|
||||
<Compiler Name="M">0</Compiler>
|
||||
<Compiler Name="N">1</Compiler>
|
||||
<Compiler Name="O">1</Compiler>
|
||||
<Compiler Name="P">1</Compiler>
|
||||
<Compiler Name="Q">0</Compiler>
|
||||
<Compiler Name="R">0</Compiler>
|
||||
<Compiler Name="S">0</Compiler>
|
||||
<Compiler Name="T">0</Compiler>
|
||||
<Compiler Name="U">0</Compiler>
|
||||
<Compiler Name="V">1</Compiler>
|
||||
<Compiler Name="W">0</Compiler>
|
||||
<Compiler Name="X">1</Compiler>
|
||||
<Compiler Name="Y">0</Compiler>
|
||||
<Compiler Name="Z">1</Compiler>
|
||||
<Compiler Name="ShowHints">True</Compiler>
|
||||
<Compiler Name="ShowWarnings">True</Compiler>
|
||||
<Compiler Name="UnitAliases">Classes=;mirror=</Compiler>
|
||||
<Compiler Name="NamespacePrefix"></Compiler>
|
||||
<Compiler Name="GenerateDocumentation">False</Compiler>
|
||||
<Compiler Name="DefaultNamespace"></Compiler>
|
||||
<Compiler Name="SymbolDeprecated">False</Compiler>
|
||||
<Compiler Name="SymbolLibrary">True</Compiler>
|
||||
<Compiler Name="SymbolPlatform">False</Compiler>
|
||||
<Compiler Name="SymbolExperimental">True</Compiler>
|
||||
<Compiler Name="UnitLibrary">True</Compiler>
|
||||
<Compiler Name="UnitPlatform">False</Compiler>
|
||||
<Compiler Name="UnitDeprecated">True</Compiler>
|
||||
<Compiler Name="UnitExperimental">True</Compiler>
|
||||
<Compiler Name="HResultCompat">True</Compiler>
|
||||
<Compiler Name="HidingMember">True</Compiler>
|
||||
<Compiler Name="HiddenVirtual">True</Compiler>
|
||||
<Compiler Name="Garbage">True</Compiler>
|
||||
<Compiler Name="BoundsError">True</Compiler>
|
||||
<Compiler Name="ZeroNilCompat">True</Compiler>
|
||||
<Compiler Name="StringConstTruncated">True</Compiler>
|
||||
<Compiler Name="ForLoopVarVarPar">True</Compiler>
|
||||
<Compiler Name="TypedConstVarPar">True</Compiler>
|
||||
<Compiler Name="AsgToTypedConst">True</Compiler>
|
||||
<Compiler Name="CaseLabelRange">True</Compiler>
|
||||
<Compiler Name="ForVariable">True</Compiler>
|
||||
<Compiler Name="ConstructingAbstract">True</Compiler>
|
||||
<Compiler Name="ComparisonFalse">True</Compiler>
|
||||
<Compiler Name="ComparisonTrue">True</Compiler>
|
||||
<Compiler Name="ComparingSignedUnsigned">True</Compiler>
|
||||
<Compiler Name="CombiningSignedUnsigned">True</Compiler>
|
||||
<Compiler Name="UnsupportedConstruct">True</Compiler>
|
||||
<Compiler Name="FileOpen">True</Compiler>
|
||||
<Compiler Name="FileOpenUnitSrc">True</Compiler>
|
||||
<Compiler Name="BadGlobalSymbol">True</Compiler>
|
||||
<Compiler Name="DuplicateConstructorDestructor">True</Compiler>
|
||||
<Compiler Name="InvalidDirective">True</Compiler>
|
||||
<Compiler Name="PackageNoLink">True</Compiler>
|
||||
<Compiler Name="PackageThreadVar">True</Compiler>
|
||||
<Compiler Name="ImplicitImport">True</Compiler>
|
||||
<Compiler Name="HPPEMITIgnored">True</Compiler>
|
||||
<Compiler Name="NoRetVal">True</Compiler>
|
||||
<Compiler Name="UseBeforeDef">True</Compiler>
|
||||
<Compiler Name="ForLoopVarUndef">True</Compiler>
|
||||
<Compiler Name="UnitNameMismatch">True</Compiler>
|
||||
<Compiler Name="NoCFGFileFound">True</Compiler>
|
||||
<Compiler Name="ImplicitVariants">True</Compiler>
|
||||
<Compiler Name="UnicodeToLocale">True</Compiler>
|
||||
<Compiler Name="LocaleToUnicode">True</Compiler>
|
||||
<Compiler Name="ImagebaseMultiple">True</Compiler>
|
||||
<Compiler Name="SuspiciousTypecast">True</Compiler>
|
||||
<Compiler Name="PrivatePropAccessor">True</Compiler>
|
||||
<Compiler Name="UnsafeType">False</Compiler>
|
||||
<Compiler Name="UnsafeCode">False</Compiler>
|
||||
<Compiler Name="UnsafeCast">False</Compiler>
|
||||
<Compiler Name="OptionTruncated">True</Compiler>
|
||||
<Compiler Name="WideCharReduced">True</Compiler>
|
||||
<Compiler Name="DuplicatesIgnored">True</Compiler>
|
||||
<Compiler Name="UnitInitSeq">True</Compiler>
|
||||
<Compiler Name="LocalPInvoke">True</Compiler>
|
||||
<Compiler Name="MessageDirective">True</Compiler>
|
||||
<Compiler Name="TypeInfoImplicitlyAdded">True</Compiler>
|
||||
<Compiler Name="XMLWhitespaceNotAllowed">True</Compiler>
|
||||
<Compiler Name="XMLUnknownEntity">True</Compiler>
|
||||
<Compiler Name="XMLInvalidNameStart">True</Compiler>
|
||||
<Compiler Name="XMLInvalidName">True</Compiler>
|
||||
<Compiler Name="XMLExpectedCharacter">True</Compiler>
|
||||
<Compiler Name="XMLCRefNoResolve">True</Compiler>
|
||||
<Compiler Name="XMLNoParm">True</Compiler>
|
||||
<Compiler Name="XMLNoMatchingParm">True</Compiler>
|
||||
<Compiler Name="CodePage"></Compiler>
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Linker Name="MapFile">0</Linker>
|
||||
<Linker Name="OutputObjs">0</Linker>
|
||||
<Linker Name="GenerateHpps">False</Linker>
|
||||
<Linker Name="ConsoleApp">1</Linker>
|
||||
<Linker Name="DebugInfo">False</Linker>
|
||||
<Linker Name="RemoteSymbols">False</Linker>
|
||||
<Linker Name="GenerateDRC">False</Linker>
|
||||
<Linker Name="MinStackSize">16384</Linker>
|
||||
<Linker Name="MaxStackSize">1048576</Linker>
|
||||
<Linker Name="ImageBase">4194304</Linker>
|
||||
<Linker Name="ExeDescription"></Linker>
|
||||
</Linker>
|
||||
<Directories>
|
||||
<Directories Name="OutputDir">..\Release</Directories>
|
||||
<Directories Name="UnitOutputDir">..\Dcu</Directories>
|
||||
<Directories Name="PackageDLLOutputDir"></Directories>
|
||||
<Directories Name="PackageDCPOutputDir"></Directories>
|
||||
<Directories Name="SearchPath">..\KOL</Directories>
|
||||
<Directories Name="Packages">vcl;rtl</Directories>
|
||||
<Directories Name="Conditionals">KOL_MCK;NOT_USE_RICHEDIT;USE_MHTOOLTIP;xDEBUGMODE</Directories>
|
||||
<Directories Name="DebugSourceDirs"></Directories>
|
||||
<Directories Name="UsePackages">False</Directories>
|
||||
</Directories>
|
||||
<Parameters>
|
||||
<Parameters Name="RunParams"></Parameters>
|
||||
<Parameters Name="HostApplication"></Parameters>
|
||||
<Parameters Name="Launcher"></Parameters>
|
||||
<Parameters Name="UseLauncher">False</Parameters>
|
||||
<Parameters Name="DebugCWD"></Parameters>
|
||||
<Parameters Name="Debug Symbols Search Path"></Parameters>
|
||||
<Parameters Name="LoadAllSymbols">True</Parameters>
|
||||
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
|
||||
</Parameters>
|
||||
<Signing>
|
||||
<Signing Name="SignAssembly">False</Signing>
|
||||
</Signing>
|
||||
<VersionInfo>
|
||||
<VersionInfo Name="IncludeVerInfo">True</VersionInfo>
|
||||
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
|
||||
<VersionInfo Name="MajorVer">26</VersionInfo>
|
||||
<VersionInfo Name="MinorVer">0</VersionInfo>
|
||||
<VersionInfo Name="Release">32767</VersionInfo>
|
||||
<VersionInfo Name="Build">6593</VersionInfo>
|
||||
<VersionInfo Name="Debug">False</VersionInfo>
|
||||
<VersionInfo Name="PreRelease">False</VersionInfo>
|
||||
<VersionInfo Name="Special">False</VersionInfo>
|
||||
<VersionInfo Name="Private">False</VersionInfo>
|
||||
<VersionInfo Name="DLL">False</VersionInfo>
|
||||
<VersionInfo Name="Locale">1033</VersionInfo>
|
||||
<VersionInfo Name="CodePage">1252</VersionInfo>
|
||||
</VersionInfo>
|
||||
<VersionInfoKeys>
|
||||
<VersionInfoKeys Name="CompanyName">Lsuper</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="FileVersion">26.0.32767.6593</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="InternalName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="OriginalFilename">Activator.exe</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="ProductName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="ProductVersion">26.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="Comments"></VersionInfoKeys>
|
||||
</VersionInfoKeys>
|
||||
<buildevents/>
|
||||
</Delphi.Personality>
|
||||
</BorlandProject>
|
32
10.3.2/Activator/Activator.dpr
Normal file
32
10.3.2/Activator/Activator.dpr
Normal file
@ -0,0 +1,32 @@
|
||||
{ KOL MCK } // Do not remove this line!
|
||||
program Activator;
|
||||
|
||||
uses
|
||||
KOL,
|
||||
FileUtils in 'FileUtils.pas',
|
||||
PatchData in 'PatchData.pas',
|
||||
WinUtils in 'WinUtils.pas',
|
||||
|
||||
AnsiStrings in '..\Keygen\AnsiStrings.pas',
|
||||
FGInt in '..\Keygen\FGInt.pas',
|
||||
RadKeygen in '..\Keygen\RadKeygen.pas',
|
||||
RadLicense in '..\Keygen\RadLicense.pas',
|
||||
RadVersion in '..\Keygen\RadVersion.pas',
|
||||
Sha1 in '..\Keygen\Sha1.pas',
|
||||
|
||||
MainFrm in 'MainFrm.pas' {MainForm};
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin // PROGRAM START HERE -- Please do not remove this comment
|
||||
|
||||
{$IF Defined(KOL_MCK)} {$I Activator_0.inc} {$ELSE}
|
||||
|
||||
Application.Initialize;
|
||||
Application.MainFormOnTaskbar := True;
|
||||
Application.CreateForm(TMainForm, MainForm);
|
||||
Application.Run;
|
||||
|
||||
{$IFEND}
|
||||
|
||||
end.
|
BIN
10.3.2/Activator/Activator.res
Normal file
BIN
10.3.2/Activator/Activator.res
Normal file
Binary file not shown.
20
10.3.2/Activator/Activator_0.inc
Normal file
20
10.3.2/Activator/Activator_0.inc
Normal file
@ -0,0 +1,20 @@
|
||||
{ KOL MCK } // Do not remove this line!
|
||||
{ Activator_0.inc
|
||||
Do not edit this file manually - it is generated automatically.
|
||||
You can only modify Activator_1.inc and Activator_3.inc
|
||||
files. }
|
||||
|
||||
{$IFDEF Pcode}
|
||||
InstallCollapse;
|
||||
{$ENDIF Pcode}
|
||||
NewMainForm( MainForm, nil );
|
||||
{$I Activator_1.inc}
|
||||
|
||||
{$I Activator_2.inc}
|
||||
|
||||
{$I Activator_3.inc}
|
||||
|
||||
Run( MainForm.Form );
|
||||
|
||||
{$I Activator_4.inc}
|
||||
|
9
10.3.2/Activator/Activator_1.inc
Normal file
9
10.3.2/Activator/Activator_1.inc
Normal file
@ -0,0 +1,9 @@
|
||||
{ Activator_1.inc
|
||||
This file is for you. Place here any code to run it
|
||||
just following Applet creation (if it present) but
|
||||
before creating other forms. E.g., You can place here
|
||||
<IF> statement, which prevents running of application
|
||||
in some cases. TIP: always use Applet for such checks
|
||||
and make it invisible until final decision if to run
|
||||
application or not. }
|
||||
|
4
10.3.2/Activator/Activator_2.inc
Normal file
4
10.3.2/Activator/Activator_2.inc
Normal file
@ -0,0 +1,4 @@
|
||||
{ KOL MCK } // Do not remove this line!
|
||||
{ Activator_2.inc
|
||||
Do not modify this file manually - it is generated automatically. }
|
||||
|
4
10.3.2/Activator/Activator_3.inc
Normal file
4
10.3.2/Activator/Activator_3.inc
Normal file
@ -0,0 +1,4 @@
|
||||
{ Activator_3.inc
|
||||
This file is for you. Place here any code to run it
|
||||
after forms creating, but before Run call, if necessary. }
|
||||
|
4
10.3.2/Activator/Activator_4.inc
Normal file
4
10.3.2/Activator/Activator_4.inc
Normal file
@ -0,0 +1,4 @@
|
||||
{ Activator_4.inc
|
||||
This file is for you. Place here any code to be inserted
|
||||
after Run call, if necessary. }
|
||||
|
BIN
10.3.2/Activator/Admin.res
Normal file
BIN
10.3.2/Activator/Admin.res
Normal file
Binary file not shown.
65
10.3.2/Activator/FileUtils.pas
Normal file
65
10.3.2/Activator/FileUtils.pas
Normal file
@ -0,0 +1,65 @@
|
||||
{ *********************************************************************** }
|
||||
{ }
|
||||
{ 工具单元 }
|
||||
{ }
|
||||
{ 设计:Lsuper 2013.02.16 }
|
||||
{ 备注: }
|
||||
{ 审核: }
|
||||
{ }
|
||||
{ Copyright (c) 1998-2014 Super Studio }
|
||||
{ }
|
||||
{ *********************************************************************** }
|
||||
|
||||
unit FileUtils;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
SysUtils, Classes;
|
||||
|
||||
function LoadDataFromFile(const AFile: string): AnsiString;
|
||||
procedure SaveDataToFile(const AFile: string; const ABuffer; ASize: Integer);
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
Windows;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//设计:Lsuper 2010.01.19
|
||||
//功能:加载文件内容
|
||||
//参数:
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
function LoadDataFromFile(const AFile: string): AnsiString;
|
||||
begin
|
||||
with TFileStream.Create(AFile, fmOpenRead or fmShareDenyWrite) do
|
||||
try
|
||||
SetLength(Result, Size);
|
||||
ReadBuffer(PAnsiChar(Result)^, Size);
|
||||
finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//设计:Lsuper 2010.01.19
|
||||
//功能:保存文件内容
|
||||
//参数:
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
procedure SaveDataToFile(const AFile: string; const ABuffer;
|
||||
ASize: Integer);
|
||||
var
|
||||
F: string;
|
||||
begin
|
||||
F := ExtractFileDir(AFile);
|
||||
ForceDirectories(F);
|
||||
with TFileStream.Create(AFile, fmCreate or fmShareDenyWrite) do
|
||||
try
|
||||
Position := 0;
|
||||
WriteBuffer(ABuffer, ASize);
|
||||
finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
425
10.3.2/Activator/MainFrm.dfm
Normal file
425
10.3.2/Activator/MainFrm.dfm
Normal file
@ -0,0 +1,425 @@
|
||||
object MainForm: TMainForm
|
||||
Left = 0
|
||||
Top = 0
|
||||
HorzScrollBar.Visible = False
|
||||
VertScrollBar.Visible = False
|
||||
Caption = 'Delphi 10.3.2 Activator'
|
||||
ClientHeight = 122
|
||||
ClientWidth = 534
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
OldCreateOrder = True
|
||||
Scaled = False
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
object btnExit: TKOLButton
|
||||
Tag = 0
|
||||
Left = 428
|
||||
Top = 16
|
||||
Width = 90
|
||||
Height = 90
|
||||
Hint = 'Exit'
|
||||
HelpType = htKeyword
|
||||
HelpContext = 0
|
||||
IgnoreDefault = True
|
||||
AnchorLeft = False
|
||||
AnchorTop = False
|
||||
AnchorRight = False
|
||||
AnchorBottom = False
|
||||
AcceptChildren = False
|
||||
MouseTransparent = False
|
||||
TabOrder = 2
|
||||
MinWidth = 0
|
||||
MinHeight = 0
|
||||
MaxWidth = 0
|
||||
MaxHeight = 0
|
||||
PlaceDown = False
|
||||
PlaceRight = False
|
||||
PlaceUnder = False
|
||||
Visible = True
|
||||
Enabled = True
|
||||
DoubleBuffered = False
|
||||
Align = caNone
|
||||
CenterOnParent = False
|
||||
Caption = '&Exit'
|
||||
Ctl3D = True
|
||||
Color = clBtnFace
|
||||
parentColor = False
|
||||
Font.Color = clWindowText
|
||||
Font.FontStyle = []
|
||||
Font.FontHeight = 0
|
||||
Font.FontWidth = 0
|
||||
Font.FontWeight = 0
|
||||
Font.FontName = 'System'
|
||||
Font.FontOrientation = 0
|
||||
Font.FontCharset = 1
|
||||
Font.FontPitch = fpDefault
|
||||
Font.FontQuality = fqDefault
|
||||
parentFont = True
|
||||
OnClick = btnExitClick
|
||||
EraseBackground = False
|
||||
Localizy = loForm
|
||||
Border = 2
|
||||
TextAlign = taCenter
|
||||
VerticalAlign = vaCenter
|
||||
TabStop = True
|
||||
autoSize = False
|
||||
DefaultBtn = False
|
||||
CancelBtn = False
|
||||
windowed = True
|
||||
Flat = False
|
||||
WordWrap = False
|
||||
LikeSpeedButton = False
|
||||
end
|
||||
object btnAbout: TKOLButton
|
||||
Tag = 0
|
||||
Left = 325
|
||||
Top = 16
|
||||
Width = 90
|
||||
Height = 90
|
||||
Hint = 'About'
|
||||
HelpType = htKeyword
|
||||
HelpContext = 0
|
||||
IgnoreDefault = True
|
||||
AnchorLeft = False
|
||||
AnchorTop = False
|
||||
AnchorRight = False
|
||||
AnchorBottom = False
|
||||
AcceptChildren = False
|
||||
MouseTransparent = False
|
||||
TabOrder = 0
|
||||
MinWidth = 0
|
||||
MinHeight = 0
|
||||
MaxWidth = 0
|
||||
MaxHeight = 0
|
||||
PlaceDown = False
|
||||
PlaceRight = False
|
||||
PlaceUnder = False
|
||||
Visible = True
|
||||
Enabled = True
|
||||
DoubleBuffered = False
|
||||
Align = caNone
|
||||
CenterOnParent = False
|
||||
Caption = '&About'
|
||||
Ctl3D = True
|
||||
Color = clBtnFace
|
||||
parentColor = False
|
||||
Font.Color = clWindowText
|
||||
Font.FontStyle = []
|
||||
Font.FontHeight = 0
|
||||
Font.FontWidth = 0
|
||||
Font.FontWeight = 0
|
||||
Font.FontName = 'System'
|
||||
Font.FontOrientation = 0
|
||||
Font.FontCharset = 1
|
||||
Font.FontPitch = fpDefault
|
||||
Font.FontQuality = fqDefault
|
||||
parentFont = True
|
||||
OnClick = btnAboutClick
|
||||
EraseBackground = False
|
||||
Localizy = loForm
|
||||
Border = 2
|
||||
TextAlign = taCenter
|
||||
VerticalAlign = vaCenter
|
||||
TabStop = True
|
||||
autoSize = False
|
||||
DefaultBtn = False
|
||||
CancelBtn = False
|
||||
windowed = True
|
||||
Flat = False
|
||||
WordWrap = False
|
||||
LikeSpeedButton = False
|
||||
end
|
||||
object btnReset: TKOLButton
|
||||
Tag = 0
|
||||
Left = 222
|
||||
Top = 16
|
||||
Width = 90
|
||||
Height = 90
|
||||
Hint = 'Reset Delphi 10.3.2'
|
||||
HelpType = htKeyword
|
||||
HelpContext = 0
|
||||
IgnoreDefault = True
|
||||
AnchorLeft = False
|
||||
AnchorTop = False
|
||||
AnchorRight = False
|
||||
AnchorBottom = False
|
||||
AcceptChildren = False
|
||||
MouseTransparent = False
|
||||
TabOrder = 1
|
||||
MinWidth = 0
|
||||
MinHeight = 0
|
||||
MaxWidth = 0
|
||||
MaxHeight = 0
|
||||
PlaceDown = False
|
||||
PlaceRight = False
|
||||
PlaceUnder = False
|
||||
Visible = True
|
||||
Enabled = True
|
||||
DoubleBuffered = False
|
||||
Align = caNone
|
||||
CenterOnParent = False
|
||||
Caption = 'Re&set'
|
||||
Ctl3D = True
|
||||
Color = clBtnFace
|
||||
parentColor = False
|
||||
Font.Color = clWindowText
|
||||
Font.FontStyle = []
|
||||
Font.FontHeight = 0
|
||||
Font.FontWidth = 0
|
||||
Font.FontWeight = 0
|
||||
Font.FontName = 'System'
|
||||
Font.FontOrientation = 0
|
||||
Font.FontCharset = 1
|
||||
Font.FontPitch = fpDefault
|
||||
Font.FontQuality = fqDefault
|
||||
parentFont = True
|
||||
OnClick = btnResetClick
|
||||
EraseBackground = False
|
||||
Localizy = loForm
|
||||
Border = 2
|
||||
TextAlign = taCenter
|
||||
VerticalAlign = vaCenter
|
||||
TabStop = True
|
||||
autoSize = False
|
||||
DefaultBtn = False
|
||||
CancelBtn = False
|
||||
windowed = True
|
||||
Flat = False
|
||||
WordWrap = False
|
||||
LikeSpeedButton = False
|
||||
end
|
||||
object btnRunBds: TKOLButton
|
||||
Tag = 0
|
||||
Left = 119
|
||||
Top = 16
|
||||
Width = 90
|
||||
Height = 90
|
||||
Hint = 'Run Delphi 10.3.2'
|
||||
HelpType = htKeyword
|
||||
HelpContext = 0
|
||||
IgnoreDefault = True
|
||||
AnchorLeft = False
|
||||
AnchorTop = False
|
||||
AnchorRight = False
|
||||
AnchorBottom = False
|
||||
AcceptChildren = False
|
||||
MouseTransparent = False
|
||||
TabOrder = 3
|
||||
MinWidth = 0
|
||||
MinHeight = 0
|
||||
MaxWidth = 0
|
||||
MaxHeight = 0
|
||||
PlaceDown = False
|
||||
PlaceRight = False
|
||||
PlaceUnder = False
|
||||
Visible = True
|
||||
Enabled = True
|
||||
DoubleBuffered = False
|
||||
Align = caNone
|
||||
CenterOnParent = False
|
||||
Caption = '&Run'
|
||||
Ctl3D = True
|
||||
Color = clBtnFace
|
||||
parentColor = False
|
||||
Font.Color = clWindowText
|
||||
Font.FontStyle = []
|
||||
Font.FontHeight = 0
|
||||
Font.FontWidth = 0
|
||||
Font.FontWeight = 0
|
||||
Font.FontName = 'System'
|
||||
Font.FontOrientation = 0
|
||||
Font.FontCharset = 1
|
||||
Font.FontPitch = fpDefault
|
||||
Font.FontQuality = fqDefault
|
||||
parentFont = True
|
||||
OnClick = btnRunBdsClick
|
||||
EraseBackground = False
|
||||
Localizy = loForm
|
||||
Border = 2
|
||||
TextAlign = taCenter
|
||||
VerticalAlign = vaCenter
|
||||
TabStop = True
|
||||
autoSize = False
|
||||
DefaultBtn = False
|
||||
CancelBtn = False
|
||||
windowed = True
|
||||
Flat = False
|
||||
WordWrap = False
|
||||
LikeSpeedButton = False
|
||||
end
|
||||
object btnActive: TKOLButton
|
||||
Tag = 0
|
||||
Left = 16
|
||||
Top = 16
|
||||
Width = 90
|
||||
Height = 90
|
||||
Hint = 'Active Delphi 10.3.2'
|
||||
HelpType = htKeyword
|
||||
HelpContext = 0
|
||||
IgnoreDefault = True
|
||||
AnchorLeft = False
|
||||
AnchorTop = False
|
||||
AnchorRight = False
|
||||
AnchorBottom = False
|
||||
AcceptChildren = False
|
||||
MouseTransparent = False
|
||||
TabOrder = 4
|
||||
MinWidth = 0
|
||||
MinHeight = 0
|
||||
MaxWidth = 0
|
||||
MaxHeight = 0
|
||||
PlaceDown = False
|
||||
PlaceRight = False
|
||||
PlaceUnder = False
|
||||
Visible = True
|
||||
Enabled = True
|
||||
DoubleBuffered = False
|
||||
Align = caNone
|
||||
CenterOnParent = False
|
||||
Caption = '&Active'
|
||||
Ctl3D = True
|
||||
Color = clBtnFace
|
||||
parentColor = False
|
||||
Font.Color = clWindowText
|
||||
Font.FontStyle = []
|
||||
Font.FontHeight = 0
|
||||
Font.FontWidth = 0
|
||||
Font.FontWeight = 0
|
||||
Font.FontName = 'System'
|
||||
Font.FontOrientation = 0
|
||||
Font.FontCharset = 1
|
||||
Font.FontPitch = fpDefault
|
||||
Font.FontQuality = fqDefault
|
||||
parentFont = True
|
||||
OnClick = btnActiveClick
|
||||
EraseBackground = False
|
||||
Localizy = loForm
|
||||
Border = 2
|
||||
TextAlign = taCenter
|
||||
VerticalAlign = vaCenter
|
||||
TabStop = True
|
||||
autoSize = False
|
||||
DefaultBtn = False
|
||||
CancelBtn = False
|
||||
windowed = True
|
||||
Flat = False
|
||||
WordWrap = False
|
||||
LikeSpeedButton = False
|
||||
end
|
||||
object kolActivator: TKOLProject
|
||||
Locked = False
|
||||
Localizy = False
|
||||
projectName = 'Activator'
|
||||
projectDest = 'Activator'
|
||||
sourcePath = 'F:\LITE\D10.3\15.2\Crack\Activator\'
|
||||
outdcuPath = '0"..\Dcu\'
|
||||
dprResource = True
|
||||
protectFiles = True
|
||||
showReport = False
|
||||
isKOLProject = True
|
||||
autoBuild = True
|
||||
autoBuildDelay = 500
|
||||
BUILD = False
|
||||
consoleOut = False
|
||||
SupportAnsiMnemonics = 0
|
||||
PaintType = ptWYSIWIG
|
||||
ShowHint = True
|
||||
ReportDetailed = False
|
||||
GeneratePCode = False
|
||||
NewIF = True
|
||||
DefaultFont.Color = clWindowText
|
||||
DefaultFont.FontStyle = []
|
||||
DefaultFont.FontHeight = 0
|
||||
DefaultFont.FontWidth = 0
|
||||
DefaultFont.FontWeight = 0
|
||||
DefaultFont.FontName = 'System'
|
||||
DefaultFont.FontOrientation = 0
|
||||
DefaultFont.FontCharset = 1
|
||||
DefaultFont.FontPitch = fpDefault
|
||||
DefaultFont.FontQuality = fqDefault
|
||||
FormCompactDisabled = False
|
||||
Left = 32
|
||||
Top = 8
|
||||
end
|
||||
object kolMainForm: TKOLForm
|
||||
Tag = 0
|
||||
ForceIcon16x16 = False
|
||||
Caption = 'Delphi 10.3.2 Activator'
|
||||
Visible = True
|
||||
OnMessage = kolMainFormMessage
|
||||
OnDestroy = kolMainFormDestroy
|
||||
AllBtnReturnClick = False
|
||||
Tabulate = False
|
||||
TabulateEx = False
|
||||
UnitSourcePath = 'F:\LITE\D10.3\15.2\Crack\Activator\'
|
||||
Locked = False
|
||||
formUnit = 'MainFrm'
|
||||
formMain = True
|
||||
Enabled = True
|
||||
defaultSize = False
|
||||
defaultPosition = False
|
||||
MinWidth = 0
|
||||
MinHeight = 0
|
||||
MaxWidth = 0
|
||||
MaxHeight = 0
|
||||
HasBorder = True
|
||||
HasCaption = True
|
||||
StayOnTop = False
|
||||
CanResize = False
|
||||
CenterOnScreen = True
|
||||
Ctl3D = True
|
||||
WindowState = wsNormal
|
||||
minimizeIcon = False
|
||||
maximizeIcon = False
|
||||
closeIcon = True
|
||||
helpContextIcon = False
|
||||
borderStyle = fbsSingle
|
||||
HelpContext = 0
|
||||
Color = clBtnFace
|
||||
Font.Color = clWindowText
|
||||
Font.FontStyle = []
|
||||
Font.FontHeight = 0
|
||||
Font.FontWidth = 0
|
||||
Font.FontWeight = 0
|
||||
Font.FontName = 'System'
|
||||
Font.FontOrientation = 0
|
||||
Font.FontCharset = 1
|
||||
Font.FontPitch = fpDefault
|
||||
Font.FontQuality = fqDefault
|
||||
FontDefault = True
|
||||
Brush.Color = clBtnFace
|
||||
Brush.BrushStyle = bsSolid
|
||||
DoubleBuffered = False
|
||||
PreventResizeFlicks = False
|
||||
Transparent = False
|
||||
AlphaBlend = 255
|
||||
Border = 2
|
||||
MarginLeft = 0
|
||||
MarginRight = 0
|
||||
MarginTop = 0
|
||||
MarginBottom = 0
|
||||
MinimizeNormalAnimated = False
|
||||
RestoreNormalMaximized = False
|
||||
zOrderChildren = False
|
||||
statusSizeGrip = True
|
||||
Localizy = False
|
||||
ShowHint = True
|
||||
KeyPreview = False
|
||||
OnShow = kolMainFormShow
|
||||
OnFormCreate = kolMainFormFormCreate
|
||||
EraseBackground = False
|
||||
supportMnemonics = False
|
||||
FormCompact = False
|
||||
GenerateCtlNames = False
|
||||
Unicode = False
|
||||
OverrideScrollbars = False
|
||||
AssignTabOrders = False
|
||||
Left = 64
|
||||
Top = 8
|
||||
end
|
||||
end
|
736
10.3.2/Activator/MainFrm.pas
Normal file
736
10.3.2/Activator/MainFrm.pas
Normal file
@ -0,0 +1,736 @@
|
||||
{ KOL MCK } // Do not remove this line!
|
||||
{$DEFINE KOL_MCK}
|
||||
unit MainFrm;
|
||||
|
||||
interface
|
||||
|
||||
{$IFDEF KOL_MCK}
|
||||
uses Windows, Messages, KOL {$IF Defined(KOL_MCK)}{$ELSE}, mirror, Classes, Controls, mckCtrls, mckObjs, Graphics {$IFEND (place your units here->)};
|
||||
{$ELSE}
|
||||
{$I uses.inc}
|
||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, mirror;
|
||||
{$ENDIF}
|
||||
|
||||
type
|
||||
{$IF Defined(KOL_MCK)}
|
||||
{$I MCKfakeClasses.inc}
|
||||
{$IFDEF KOLCLASSES} {$I TMainFormclass.inc} {$ELSE OBJECTS} PMainForm = ^TMainForm; {$ENDIF CLASSES/OBJECTS}
|
||||
{$IFDEF KOLCLASSES}{$I TMainForm.inc}{$ELSE} TMainForm = object(TObj) {$ENDIF}
|
||||
Form: PControl;
|
||||
{$ELSE not_KOL_MCK}
|
||||
TMainForm = class(TForm)
|
||||
{$IFEND KOL_MCK}
|
||||
btnAbout: TKOLButton;
|
||||
btnActive: TKOLButton;
|
||||
btnExit: TKOLButton;
|
||||
btnReset: TKOLButton;
|
||||
btnRunBds: TKOLButton;
|
||||
kolActivator: TKOLProject;
|
||||
kolMainForm: TKOLForm;
|
||||
procedure btnAboutClick(Sender: PObj);
|
||||
procedure btnActiveClick(Sender: PObj);
|
||||
procedure btnExitClick(Sender: PObj);
|
||||
procedure btnResetClick(Sender: PObj);
|
||||
procedure btnRunBdsClick(Sender: PObj);
|
||||
procedure kolMainFormDestroy(Sender: PObj);
|
||||
procedure kolMainFormFormCreate(Sender: PObj);
|
||||
function kolMainFormMessage(var Msg: TMsg; var Rslt: Integer): Boolean;
|
||||
procedure kolMainFormShow(Sender: PObj);
|
||||
private
|
||||
FAppPath,
|
||||
FBdsPath: string;
|
||||
FCurFileBuild: Integer;
|
||||
FSerialNumber,
|
||||
FRegCode,
|
||||
FInformation: string;
|
||||
private
|
||||
function FindBdsPath: Boolean;
|
||||
|
||||
function GetSystemHostsFile: string;
|
||||
|
||||
procedure BeginCursor;
|
||||
procedure EndCursor;
|
||||
|
||||
procedure CopyFile(const ASrcFile, ADestFile: string);
|
||||
|
||||
procedure DeleteFile(const AFile: string);
|
||||
procedure DeleteFiles(const AFileMask: string);
|
||||
private
|
||||
procedure BuildNormalCglmFile;
|
||||
procedure BuildNormalSlipFile;
|
||||
|
||||
procedure GenerateRegistrationCode;
|
||||
procedure GenerateKeyGenLicense;
|
||||
|
||||
procedure PatchLicenseHostsFile;
|
||||
procedure RestoreLicenseHostsFile;
|
||||
|
||||
procedure PatchBdsFile;
|
||||
procedure RestoreBdsFile;
|
||||
|
||||
procedure DeleteTrialFiles;
|
||||
procedure DeleteTrialRegKeys;
|
||||
private
|
||||
procedure DoActive;
|
||||
procedure DoReset;
|
||||
procedure DoRunBds;
|
||||
|
||||
procedure ShowAboutMessage;
|
||||
|
||||
procedure Execute;
|
||||
end;
|
||||
|
||||
var
|
||||
MainForm {$IFDEF KOL_MCK} : PMainForm {$ELSE} : TMainForm {$ENDIF} ;
|
||||
|
||||
{$IFDEF KOL_MCK}
|
||||
procedure NewMainForm( var Result: PMainForm; AParent: PControl );
|
||||
{$ENDIF}
|
||||
|
||||
implementation
|
||||
|
||||
{.$DEFINE DEBUGMODE}
|
||||
|
||||
uses
|
||||
SysUtils, ShellAPI, Registry, FileUtils, PatchData, WinUtils, RadKeygen, RadVersion;
|
||||
|
||||
{$IF Defined(KOL_MCK)}{$ELSE}{$R *.DFM}{$IFEND}
|
||||
|
||||
{$IFDEF KOL_MCK}
|
||||
{$I MainFrm_1.inc}
|
||||
{$ENDIF}
|
||||
|
||||
const
|
||||
CSIDL_APPDATA = $001A; // Application Data, new for NT4, <user name>\Application Data
|
||||
CSIDL_COMMON_APPDATA = $0023; // All Users\Application Data
|
||||
|
||||
UM_SHOWABOUT = 100;
|
||||
|
||||
const
|
||||
defAppMessage = 'Many thanks to elseif, tonzi, freecat, unis, x-force, cjack and others who worked for this keygen!';
|
||||
defAppVersion = '15.2';
|
||||
|
||||
defAppHelperFileName = 'SHFolder.dll';
|
||||
|
||||
defBdsVersion = '20.0';
|
||||
|
||||
defBdsLicenseFile = 'RADStudio10_2.slip';
|
||||
defBdsLicenseManager = '"%s" -reg -skey 8220_21 -loadKey 2026 -a';
|
||||
|
||||
defBdsPatchFileName = 'SHFolder.dll';
|
||||
|
||||
defLicenseHosts: array[0..17] of string = (
|
||||
'127.0.0.1 appanalytics.embarcadero.com',
|
||||
'127.0.0.1 comapi.embarcadero.com',
|
||||
'127.0.0.1 embt.usertility.com',
|
||||
'127.0.0.1 external.ws.sanctx.embarcadero.com',
|
||||
'127.0.0.1 getit.embarcadero.com',
|
||||
'127.0.0.1 installers.codegear.com',
|
||||
'127.0.0.1 installers.embarcadero.com',
|
||||
'127.0.0.1 license-stage.codegear.com',
|
||||
'127.0.0.1 license.codegear.com',
|
||||
'127.0.0.1 license.embarcadero.com',
|
||||
'127.0.0.1 object.ws.sanctx.embarcadero.com',
|
||||
'127.0.0.1 services.server.v8.srs.sanctuary.codegear.com',
|
||||
'127.0.0.1 themindelectric.com',
|
||||
'127.0.0.1 track.embarcadero.com',
|
||||
'127.0.0.1 www.themindelectric.com',
|
||||
|
||||
'127.0.0.1 LicenseRenewalServicesImpl.services.server.v8.srs.sanctuary.codegear.com',
|
||||
'127.0.0.1 LicenseUsageServicesImpl.services.server.v8.srs.sanctuary.codegear.com',
|
||||
'127.0.0.1 RegistrationServicesImpl.services.server.v8.srs.sanctuary.codegear.com'
|
||||
);
|
||||
|
||||
{ TMainForm }
|
||||
|
||||
procedure TMainForm.BeginCursor;
|
||||
begin
|
||||
SetCursor(LoadCursor(0, IDC_WAIT));
|
||||
end;
|
||||
|
||||
procedure TMainForm.btnAboutClick(Sender: PObj);
|
||||
begin
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('About');
|
||||
{$ENDIF}
|
||||
ShowAboutMessage;
|
||||
end;
|
||||
|
||||
procedure TMainForm.btnActiveClick(Sender: PObj);
|
||||
begin
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('Active');
|
||||
{$ENDIF}
|
||||
BeginCursor;
|
||||
try
|
||||
DoActive;
|
||||
finally
|
||||
EndCursor;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.btnExitClick(Sender: PObj);
|
||||
begin
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('Exit');
|
||||
{$ENDIF}
|
||||
Self.Form.Close;
|
||||
end;
|
||||
|
||||
procedure TMainForm.btnResetClick(Sender: PObj);
|
||||
begin
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('Reset');
|
||||
{$ENDIF}
|
||||
BeginCursor;
|
||||
try
|
||||
DoReset;
|
||||
finally
|
||||
EndCursor;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.btnRunBdsClick(Sender: PObj);
|
||||
begin
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('Run');
|
||||
{$ENDIF}
|
||||
BeginCursor;
|
||||
try
|
||||
DoRunBds;
|
||||
finally
|
||||
EndCursor;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.BuildNormalCglmFile;
|
||||
var
|
||||
S: string;
|
||||
begin
|
||||
S := FBdsPath + 'Bin\cglm.ini';
|
||||
SaveDataToFile(S, defCglmFileDatas, Length(defCglmFileDatas));
|
||||
S := GetShellFolderPath(CSIDL_COMMON_APPDATA) + 'Embarcadero\Studio\' + defBdsVersion + '\cglm.ini';
|
||||
SaveDataToFile(S, defCglmFileDatas, Length(defCglmFileDatas));
|
||||
end;
|
||||
|
||||
procedure TMainForm.BuildNormalSlipFile;
|
||||
var
|
||||
S: string;
|
||||
begin
|
||||
S := FBdsPath + 'License\*.slip';
|
||||
DeleteFiles(S);
|
||||
S := FBdsPath + 'License\' + defBdsLicenseFile;
|
||||
SaveDataToFile(S, defSlipFileDatas, Length(defSlipFileDatas));
|
||||
end;
|
||||
|
||||
procedure TMainForm.CopyFile(const ASrcFile, ADestFile: string);
|
||||
{$IFDEF DEBUGMODE}
|
||||
var
|
||||
bRet: Boolean;
|
||||
{$ENDIF}
|
||||
begin
|
||||
{$IFDEF DEBUGMODE}
|
||||
bRet := Windows.CopyFile(PChar(ASrcFile), PChar(ADestFile), False);
|
||||
if bRet then
|
||||
LogMessage('CopyFile.OK: ' + ADestFile)
|
||||
else LogMessage('CopyFile.Error: ' + ADestFile + ', ' + SysErrorMessage(GetLastError));
|
||||
{$ELSE}
|
||||
Windows.CopyFile(PChar(ASrcFile), PChar(ADestFile), False);
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TMainForm.DeleteFile(const AFile: string);
|
||||
{$IFDEF DEBUGMODE}
|
||||
var
|
||||
bRet: Boolean;
|
||||
{$ENDIF}
|
||||
begin
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('DeleteFile: ' + AFile + ' ...');
|
||||
bRet := Windows.DeleteFile(PChar(AFile));
|
||||
if bRet then
|
||||
LogMessage('DeleteFile.OK: ' + AFile)
|
||||
else LogMessage('DeleteFile.Error: ' + AFile + ', ' + SysErrorMessage(GetLastError));
|
||||
{$ELSE}
|
||||
Windows.DeleteFile(PChar(AFile));
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TMainForm.DeleteFiles(const AFileMask: string);
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//设计: Lsuper 2005.09.21
|
||||
//功能: 判断特殊文件
|
||||
//参数:
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
function IsDirNotation(const AName: string): Boolean;
|
||||
begin
|
||||
Result := (AName = '.') or (AName = '..');
|
||||
end;
|
||||
var
|
||||
cSearchRec: TSearchRec;
|
||||
strFilePath: string;
|
||||
begin
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('DeleteFiles: ' + AFileMask + ' ...');
|
||||
{$ENDIF}
|
||||
strFilePath := ExtractFilePath(AFileMask);
|
||||
if FindFirst(AFileMask, faAnyFile, cSearchRec) = 0 then
|
||||
repeat
|
||||
if (cSearchRec.Name <> '') and not IsDirNotation(cSearchRec.Name) then
|
||||
begin
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('DeleteFiles, File: ' + strFilePath + cSearchRec.Name);
|
||||
{$ENDIF}
|
||||
SysUtils.DeleteFile(strFilePath + cSearchRec.Name);
|
||||
end;
|
||||
until FindNext(cSearchRec) <> 0;
|
||||
SysUtils.FindClose(cSearchRec);
|
||||
end;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//设计:Lsuper 2011.01.05
|
||||
//功能:清理授权信息
|
||||
//参数:
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
procedure TMainForm.DeleteTrialFiles;
|
||||
var
|
||||
AllUsersPath, UserPath: string;
|
||||
begin
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('DeleteTrialFiles');
|
||||
{$ENDIF}
|
||||
AllUsersPath := GetShellFolderPath(CSIDL_COMMON_APPDATA) + 'Embarcadero\';
|
||||
UserPath := GetShellFolderPath(CSIDL_APPDATA) + 'Embarcadero\';
|
||||
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('DeleteTrialFiles.AllUsersPath: ' + AllUsersPath);
|
||||
LogMessage('DeleteTrialFiles.UserPath: ' + UserPath);
|
||||
{$ENDIF}
|
||||
|
||||
DeleteFile(UserPath + '.cgb_license');
|
||||
DeleteFile(AllUsersPath + '.cgb_license');
|
||||
|
||||
DeleteFile(UserPath + '.licenses\.cg_license');
|
||||
DeleteFile(AllUsersPath + '.licenses\.cg_license');
|
||||
|
||||
DeleteFile(AllUsersPath + 'RAD Studio Activation.slip');
|
||||
|
||||
DeleteFiles(AllUsersPath + '.82*.slip');
|
||||
end;
|
||||
|
||||
procedure TMainForm.DeleteTrialRegKeys;
|
||||
begin
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('DeleteTrialRegKeys');
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TMainForm.DoActive;
|
||||
var
|
||||
S: string;
|
||||
nBuild: Integer;
|
||||
begin
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('DoActive');
|
||||
{$ENDIF}
|
||||
if not FindBdsPath then
|
||||
begin
|
||||
ShowError('No BDS find!');
|
||||
Exit;
|
||||
end;
|
||||
S := FBdsPath + 'Bin\bds.exe';
|
||||
nBuild := GetFileBuildVersion(S);
|
||||
if nBuild <> FCurFileBuild then
|
||||
begin
|
||||
ShowError('BDS version not support!');
|
||||
Exit;
|
||||
end;
|
||||
BuildNormalCglmFile;
|
||||
BuildNormalSlipFile;
|
||||
RestoreBdsFile;
|
||||
|
||||
GenerateRegistrationCode;
|
||||
GenerateKeyGenLicense;
|
||||
PatchBdsFile;
|
||||
PatchLicenseHostsFile;
|
||||
{
|
||||
ShowMessage('Active', 'OK!');
|
||||
}
|
||||
ShowMessage('Active', 'OK! Code: ' + FRegCode + ', Serial: ' + FSerialNumber);
|
||||
end;
|
||||
|
||||
procedure TMainForm.DoReset;
|
||||
begin
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('DoReset');
|
||||
{$ENDIF}
|
||||
if not FindBdsPath then
|
||||
begin
|
||||
ShowError('No BDS find!');
|
||||
Exit;
|
||||
end;
|
||||
DeleteTrialFiles;
|
||||
DeleteTrialRegKeys;
|
||||
BuildNormalCglmFile;
|
||||
BuildNormalSlipFile;
|
||||
RestoreBdsFile;
|
||||
RestoreLicenseHostsFile;
|
||||
ShowMessage('Reset', 'OK!');
|
||||
end;
|
||||
|
||||
procedure TMainForm.DoRunBds;
|
||||
var
|
||||
BdsExe: string;
|
||||
begin
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('DoRunBds');
|
||||
{$ENDIF}
|
||||
if not FindBdsPath then
|
||||
begin
|
||||
ShowError('No BDS find!');
|
||||
Exit;
|
||||
end;
|
||||
FBdsPath := FBdsPath + 'Bin';
|
||||
BdsExe := FBdsPath + '\bds.exe';
|
||||
ShellExecute(0, 'open', PChar(BdsExe), '-pDelphi', PChar(FBdsPath), SW_NORMAL);
|
||||
Delay(20);
|
||||
end;
|
||||
|
||||
procedure TMainForm.EndCursor;
|
||||
begin
|
||||
SetCursor(LoadCursor(0, IDC_ARROW));
|
||||
end;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//设计:Lsuper 2011.09.20
|
||||
//功能:直接执行 Lite 的安装任务
|
||||
//参数:
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
procedure TMainForm.Execute;
|
||||
var
|
||||
S: string;
|
||||
nBuild: Integer;
|
||||
begin
|
||||
if not FindBdsPath then
|
||||
begin
|
||||
LogMessage('No BDS find!');
|
||||
Exit;
|
||||
end;
|
||||
S := FBdsPath + 'Bin\bds.exe';
|
||||
nBuild := GetFileBuildVersion(S);
|
||||
if nBuild <> FCurFileBuild then
|
||||
begin
|
||||
LogMessage('BDS version not support!');
|
||||
Exit;
|
||||
end;
|
||||
|
||||
GenerateRegistrationCode;
|
||||
GenerateKeyGenLicense;
|
||||
BuildNormalCglmFile;
|
||||
BuildNormalSlipFile;
|
||||
PatchBdsFile;
|
||||
PatchLicenseHostsFile;
|
||||
{
|
||||
LogMessage('Done.');
|
||||
}
|
||||
LogMessage('Done. Code: ' + FRegCode + ', Serial: ' + FSerialNumber);
|
||||
end;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//设计:Lsuper 2013.02.15
|
||||
//功能:查找 Delphi
|
||||
//参数:
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
function TMainForm.FindBdsPath: Boolean;
|
||||
begin
|
||||
Result := False;
|
||||
with TRegistry.Create do
|
||||
try
|
||||
Access := KEY_READ;
|
||||
RootKey := HKEY_LOCAL_MACHINE;
|
||||
if OpenKeyReadOnly('SOFTWARE\Embarcadero\BDS\' + defBdsVersion) then
|
||||
begin
|
||||
FBdsPath := ReadString('RootDir');
|
||||
CloseKey;
|
||||
end;
|
||||
finally
|
||||
Free;
|
||||
end;
|
||||
if FBdsPath <> '' then
|
||||
begin
|
||||
FBdsPath := IncludeTrailingPathDelimiter(FBdsPath);
|
||||
Result := FileExists(FBdsPath + 'Bin\bds.exe');
|
||||
end;
|
||||
end;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//设计:Lsuper 2013.05.01
|
||||
//功能:
|
||||
//参数:
|
||||
//注意:设置环境变量,用于 IPC 通知、通讯
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
procedure TMainForm.GenerateKeyGenLicense;
|
||||
|
||||
function CurrentRadStudioVersion: PRadStudioVersion; inline;
|
||||
begin
|
||||
Assert(RadStudioVersionList.Count > 0);
|
||||
Result := PRadStudioVersion(RadStudioVersionList.Objects[0]);
|
||||
end;
|
||||
begin
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('GenerateKeyGenLicense');
|
||||
{$ENDIF}
|
||||
FSerialNumber := RadKeygen.GenerateSerialNumber;
|
||||
FRegCode := RadKeygen.GetRegistrationCode;
|
||||
RadKeygen.GenerateLicenseFile(FSerialNumber, FRegCode, CurrentRadStudioVersion, FInformation);
|
||||
end;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//设计: Lsuper 2006.09.19
|
||||
//功能: 注入启动
|
||||
//参数:
|
||||
//注意:设置环境变量,用于 IPC 通知、通讯
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
procedure TMainForm.GenerateRegistrationCode;
|
||||
var
|
||||
si: TStartupInfo;
|
||||
pi: TProcessInformation;
|
||||
nExitCode: LongWord;
|
||||
strHelper, strCommandLine, strWorkDir: string;
|
||||
begin
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('GenerateRegistrationCode');
|
||||
{$ENDIF}
|
||||
strHelper := FAppPath + defAppHelperFileName;
|
||||
if not FileExists(strHelper) then
|
||||
SaveDataToFile(strHelper, defHelperDatas, Length(defHelperDatas));
|
||||
strWorkDir := FBdsPath + 'Bin';
|
||||
strCommandLine := Format('%s\LicenseManager.exe', [strWorkDir]);
|
||||
if not FileExists(strCommandLine) then
|
||||
raise Exception.CreateFmt('File %s not exists!', [strCommandLine]);
|
||||
strCommandLine := Format(defBdsLicenseManager, [strCommandLine]);
|
||||
FillChar(si, SizeOf(TStartupInfo), 0);
|
||||
with si do
|
||||
begin
|
||||
cb := SizeOf(TStartupInfo);
|
||||
dwFlags := STARTF_USESHOWWINDOW + STARTF_FORCEONFEEDBACK;
|
||||
wShowWindow := SW_HIDE;
|
||||
end;
|
||||
if CreateProcessEx(nil, PChar(strCommandLine), nil, nil, False, 0, nil, PChar(strWorkDir), si, pi, AnsiString(strHelper)) then
|
||||
try
|
||||
WaitForSingleObject(pi.hProcess, INFINITE);
|
||||
GetExitCodeProcess(pi.hProcess, nExitCode);
|
||||
if nExitCode <> 0 then
|
||||
raise Exception.Create('BdsReg error!');
|
||||
finally
|
||||
CloseHandle(pi.hThread);
|
||||
CloseHandle(pi.hProcess);
|
||||
end
|
||||
else RaiseLastOSError;
|
||||
end;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//设计:Lsuper 2009.01.30
|
||||
//功能:取Windows系统目录
|
||||
//参数:
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
function TMainForm.GetSystemHostsFile: string;
|
||||
const
|
||||
defHostsFilePath = 'drivers\etc\hosts';
|
||||
var
|
||||
nRet: LongWord;
|
||||
begin
|
||||
SetLength(Result, MAX_PATH);
|
||||
nRet := GetSystemDirectory(PChar(Result), MAX_PATH);
|
||||
if nRet = 0 then
|
||||
Result := ''
|
||||
else begin
|
||||
SetLength(Result, nRet);
|
||||
Result := IncludeTrailingPathDelimiter(Result) + defHostsFilePath;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.kolMainFormDestroy(Sender: PObj);
|
||||
begin
|
||||
LogMessage('Destroy');
|
||||
{$IFNDEF DEBUGMODE}
|
||||
DeleteFiles(FAppPath + '*.*');
|
||||
RemoveDirectory(PChar(FAppPath));
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TMainForm.kolMainFormFormCreate(Sender: PObj);
|
||||
var
|
||||
S: string;
|
||||
begin
|
||||
LogMessage('Create');
|
||||
|
||||
FAppPath := GetShellFolderPath(CSIDL_APPDATA);
|
||||
FAppPath := IncludeTrailingPathDelimiter(FAppPath) + 'Activator\' + defAppVersion + '\';
|
||||
ForceDirectories(FAppPath);
|
||||
S := GetModuleName(HInstance);
|
||||
FCurFileBuild := GetFileBuildVersion(S);
|
||||
|
||||
SetEnvironmentVariable('SESSIONNAME', 'Conso1e');
|
||||
|
||||
if ParamStr(1) = '-process' then
|
||||
begin
|
||||
Execute;
|
||||
Halt(1);
|
||||
end;
|
||||
end;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//设计:Lsuper 2003.09.21
|
||||
//功能:处理系统菜单
|
||||
//参数:
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
function TMainForm.kolMainFormMessage(var Msg: TMsg;
|
||||
var Rslt: Integer): Boolean;
|
||||
begin
|
||||
if (Msg.message = WM_SYSCOMMAND) and (Msg.WParam = UM_SHOWABOUT) then
|
||||
ShowAboutMessage;
|
||||
Result := False;
|
||||
end;
|
||||
|
||||
procedure TMainForm.kolMainFormShow(Sender: PObj);
|
||||
var
|
||||
hMain : HMENU;
|
||||
begin
|
||||
LogMessage('Show');
|
||||
|
||||
hMain := GetSystemMenu(Self.Form.Handle, False);
|
||||
AppendMenu(hMain, MF_SEPARATOR, 0, nil);
|
||||
AppendMenu(hMain, MF_STRING{ or MF_CHECKED}, UM_SHOWABOUT, 'About ...');
|
||||
SetMainFormHandle(Self.Form.Handle);
|
||||
end;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//设计:Lsuper 2011.09.21
|
||||
//功能:修改 BDS.exe 文件
|
||||
//参数:
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
procedure TMainForm.PatchBdsFile;
|
||||
var
|
||||
S: string;
|
||||
begin
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('PatchBdsFile');
|
||||
{$ENDIF}
|
||||
S := FBdsPath + 'Bin\' + defBdsPatchFileName;
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('Patch: ' + S);
|
||||
{$ENDIF}
|
||||
SaveDataToFile(S, defBdsPatchDllDatas, SizeOf(defBdsPatchDllDatas));
|
||||
end;
|
||||
|
||||
procedure TMainForm.PatchLicenseHostsFile;
|
||||
var
|
||||
F, S: string;
|
||||
nIndex, I: Integer;
|
||||
pList, pHosts: PStrListEx;
|
||||
begin
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('PatchLicenseHostsFile');
|
||||
{$ENDIF}
|
||||
F := GetSystemHostsFile;
|
||||
pHosts := NewStrListEx;
|
||||
with pHosts^ do
|
||||
try
|
||||
if FileExists(F) then
|
||||
LoadFromFile(F);
|
||||
pList := NewStrListEx;
|
||||
for S in defLicenseHosts do
|
||||
pList.Add(S);
|
||||
for I := 0 to Count - 1 do
|
||||
begin
|
||||
S := Trim(Items[I]);
|
||||
nIndex := pList.IndexOf(S);
|
||||
if nIndex >= 0 then
|
||||
pList.Delete(nIndex);
|
||||
end;
|
||||
if pList.Count > 0 then
|
||||
try
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('PatchLicenseHostsFile, SaveToFile: ' + F);
|
||||
{$ENDIF}
|
||||
AddStrings(pList);
|
||||
FileSetReadOnly(F, False);
|
||||
SaveToFile(F);
|
||||
except
|
||||
on E: Exception do
|
||||
LogMessage('Disable Hosts Error: ' + E.Message);
|
||||
end;
|
||||
pList.Free;
|
||||
finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.RestoreBdsFile;
|
||||
var
|
||||
S: string;
|
||||
begin
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('RestoreBdsFile');
|
||||
{$ENDIF}
|
||||
S := FBdsPath + 'Bin\' + defBdsPatchFileName;
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('Restore: ' + S);
|
||||
{$ENDIF}
|
||||
Self.DeleteFile(S);;
|
||||
end;
|
||||
|
||||
procedure TMainForm.RestoreLicenseHostsFile;
|
||||
var
|
||||
F, S: string;
|
||||
nIndex, nRet, I: Integer;
|
||||
pList, pHosts: PStrListEx;
|
||||
begin
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('RestoreLicenseHostsFile');
|
||||
{$ENDIF}
|
||||
F := GetSystemHostsFile;
|
||||
if not FileExists(F) then
|
||||
Exit;
|
||||
pHosts := NewStrListEx;
|
||||
with pHosts^ do
|
||||
try
|
||||
LoadFromFile(F);
|
||||
pList := NewStrListEx;
|
||||
for S in defLicenseHosts do
|
||||
pList.Add(S);
|
||||
nRet := 0;
|
||||
for I := Count - 1 downto 0 do
|
||||
begin
|
||||
S := Trim(Items[I]);
|
||||
nIndex := pList.IndexOf(S);
|
||||
if nIndex < 0 then
|
||||
Continue;
|
||||
pHosts.Delete(I);
|
||||
Inc(nRet);
|
||||
end;
|
||||
if nRet > 0 then
|
||||
try
|
||||
{$IFDEF DEBUGMODE}
|
||||
LogMessage('RestoreLicenseHostsFile, SaveToFile: ' + F);
|
||||
{$ENDIF}
|
||||
FileSetReadOnly(F, False);
|
||||
SaveToFile(F);
|
||||
except
|
||||
on E: Exception do
|
||||
LogMessage('Disable Hosts Error: ' + E.Message);
|
||||
end;
|
||||
pList.Free;
|
||||
finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.ShowAboutMessage;
|
||||
begin
|
||||
with Self.Form^ do
|
||||
ShellAbout(Handle, PChar(string(Caption) + ', Lsuper'), PAnsiChar(AnsiString(defAppMessage)), Icon);
|
||||
end;
|
||||
|
||||
end.
|
49
10.3.2/Activator/MainFrm_1.inc
Normal file
49
10.3.2/Activator/MainFrm_1.inc
Normal file
@ -0,0 +1,49 @@
|
||||
{ KOL MCK } // Do not remove this line!
|
||||
|
||||
procedure NewMainForm( var Result: PMainForm; AParent: PControl );
|
||||
begin
|
||||
|
||||
{$IFDEF KOLCLASSES}
|
||||
Result := PMainForm.Create;
|
||||
{$ELSE OBJECTS}
|
||||
New( Result, Create );
|
||||
{$ENDIF KOL CLASSES/OBJECTS}
|
||||
Result.Form := NewForm( AParent, 'Delphi 10.3.2 Activator' ).SetPosition( 8, 8 );
|
||||
Applet := Result.Form;
|
||||
Result.Form.Add2AutoFree( Result );
|
||||
Result.Form.Style := Result.Form.Style and not (WS_MINIMIZEBOX or WS_MAXIMIZEBOX);
|
||||
Result.Form.SetClientSize( 534, 122 );
|
||||
Result.Form.OnMessage := Result.kolMainFormMessage;
|
||||
Result.Form.OnShow := Result.kolMainFormShow;
|
||||
Result.Form.OnDestroy := Result.kolMainFormDestroy;
|
||||
Result.btnAbout := NewButton( Result.Form, '&About' ).SetPosition( 325, 16 ).SetSize( 90, 90 );
|
||||
{$IFDEF USE_MHTOOLTIP}
|
||||
Result.btnAbout.Hint.Text := 'About';
|
||||
{$ENDIF USE_MHTOOLTIP}
|
||||
Result.btnReset := NewButton( Result.Form, 'Re&set' ).SetPosition( 222, 16 ).SetSize( 90, 90 );
|
||||
{$IFDEF USE_MHTOOLTIP}
|
||||
Result.btnReset.Hint.Text := 'Reset Delphi 10.3.2';
|
||||
{$ENDIF USE_MHTOOLTIP}
|
||||
Result.btnExit := NewButton( Result.Form, '&Exit' ).SetPosition( 428, 16 ).SetSize( 90, 90 );
|
||||
{$IFDEF USE_MHTOOLTIP}
|
||||
Result.btnExit.Hint.Text := 'Exit';
|
||||
{$ENDIF USE_MHTOOLTIP}
|
||||
Result.btnRunBds := NewButton( Result.Form, '&Run' ).SetPosition( 119, 16 ).SetSize( 90, 90 );
|
||||
{$IFDEF USE_MHTOOLTIP}
|
||||
Result.btnRunBds.Hint.Text := 'Run Delphi 10.3.2';
|
||||
{$ENDIF USE_MHTOOLTIP}
|
||||
Result.btnActive := NewButton( Result.Form, '&Active' ).SetPosition( 16, 16 ).SetSize( 90, 90 );
|
||||
{$IFDEF USE_MHTOOLTIP}
|
||||
Result.btnActive.Hint.Text := 'Active Delphi 10.3.2';
|
||||
{$ENDIF USE_MHTOOLTIP}
|
||||
Result.btnAbout.OnClick := Result.btnAboutClick;
|
||||
Result.btnReset.OnClick := Result.btnResetClick;
|
||||
Result.btnExit.OnClick := Result.btnExitClick;
|
||||
Result.btnRunBds.OnClick := Result.btnRunBdsClick;
|
||||
Result.btnActive.OnClick := Result.btnActiveClick;
|
||||
Result.Form.CenterOnParent.CanResize := False;
|
||||
Result.Form.Perform( WM_INITMENU, 0, 0 );
|
||||
Result.kolMainFormFormCreate( Result );
|
||||
|
||||
end;
|
||||
|
3415
10.3.2/Activator/PatchData.inc
Normal file
3415
10.3.2/Activator/PatchData.inc
Normal file
File diff suppressed because it is too large
Load Diff
26
10.3.2/Activator/PatchData.pas
Normal file
26
10.3.2/Activator/PatchData.pas
Normal file
@ -0,0 +1,26 @@
|
||||
{ *********************************************************************** }
|
||||
{ }
|
||||
{ 工具单元 }
|
||||
{ }
|
||||
{ 设计:Lsuper 2013.02.16 }
|
||||
{ 备注: }
|
||||
{ 审核: }
|
||||
{ }
|
||||
{ Copyright (c) 1998-2014 Super Studio }
|
||||
{ }
|
||||
{ *********************************************************************** }
|
||||
|
||||
unit PatchData;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
SysUtils, Classes;
|
||||
|
||||
const
|
||||
|
||||
{$I PatchData.inc} { 文件补丁数据 }
|
||||
|
||||
implementation
|
||||
|
||||
end.
|
1
10.3.2/Activator/TMainForm.inc
Normal file
1
10.3.2/Activator/TMainForm.inc
Normal file
@ -0,0 +1 @@
|
||||
TMainForm = class(TObj)
|
1
10.3.2/Activator/TMainFormclass.inc
Normal file
1
10.3.2/Activator/TMainFormclass.inc
Normal file
@ -0,0 +1 @@
|
||||
TMainForm = class; PMainForm = TMainForm;
|
383
10.3.2/Activator/WinUtils.pas
Normal file
383
10.3.2/Activator/WinUtils.pas
Normal file
@ -0,0 +1,383 @@
|
||||
{ *********************************************************************** }
|
||||
{ }
|
||||
{ Win 辅助函数单元 }
|
||||
{ }
|
||||
{ 设计:Lsuper 2013.04.26 }
|
||||
{ 备注: }
|
||||
{ 审核: }
|
||||
{ }
|
||||
{ Copyright (c) 1998-2014 Super Studio }
|
||||
{ }
|
||||
{ *********************************************************************** }
|
||||
|
||||
unit WinUtils;
|
||||
|
||||
{$WARNINGS OFF}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
SysUtils, Windows;
|
||||
|
||||
function GetCommandLineOutput(const ACommandLine, AWorkDir: string;
|
||||
out ExitCode: LongWord): string;
|
||||
function GetFileBuildVersion(const AFile: string): Integer;
|
||||
function GetShellFolderPath(nFolder: Integer): string;
|
||||
function GetWindowsPath: string;
|
||||
|
||||
function TaskMessageBox(const AHandle: THandle; const AText, ACaption: string;
|
||||
const Icon, Buttons: Integer): Integer;
|
||||
function IsWindowsVista: Boolean;
|
||||
|
||||
procedure Delay(ASeconds: Double);
|
||||
|
||||
function CreateProcessEx(lpApplicationName: PChar; lpCommandLine: PChar;
|
||||
lpProcessAttributes, lpThreadAttributes: PSecurityAttributes;
|
||||
bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer;
|
||||
lpCurrentDirectory: PChar; const lpStartupInfo: TStartupInfo;
|
||||
var lpProcessInformation: TProcessInformation; const ALibraryName: AnsiString): Boolean;
|
||||
function InjectLibraryModule(AProcessID: LongWord; const ALibraryName: AnsiString): Boolean;
|
||||
|
||||
procedure LogMessage(const AMessage: string);
|
||||
|
||||
procedure ShowMessage(const ACaption, AMessage: string);
|
||||
procedure ShowError(const AMessage: string);
|
||||
|
||||
procedure SetMainFormHandle(const AHandle: HWND);
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
ShlObj;
|
||||
|
||||
const
|
||||
TD_BUTTON_OK = 01;
|
||||
TD_BUTTON_YES = 02;
|
||||
TD_BUTTON_NO = 04;
|
||||
TD_BUTTON_CANCEL = 08;
|
||||
TD_BUTTON_RETRY = 16;
|
||||
TD_BUTTON_CLOSE = 32;
|
||||
|
||||
TD_ICON_BLANK = 00;
|
||||
TD_ICON_WARNING = 84;
|
||||
TD_ICON_QUESTION = 99;
|
||||
TD_ICON_ERROR = 98;
|
||||
TD_ICON_INFORMATION = 81;
|
||||
|
||||
TD_ICON_SHIELD_QUESTION = 104;
|
||||
TD_ICON_SHIELD_ERROR = 105;
|
||||
TD_ICON_SHIELD_OK = 106;
|
||||
TD_ICON_SHIELD_WARNING = 107;
|
||||
|
||||
var
|
||||
MainFormHandle: HWND = 0;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 说明:用于延迟n秒
|
||||
// 参数:ASeconds -- 延迟秒数
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
procedure Delay(ASeconds: Double);
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//设计: Lsuper 2004.11.10
|
||||
//功能: 调用消息循环,防止僵死
|
||||
//参数:
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
procedure ProcessMessages;
|
||||
const
|
||||
WM_QUIT = $0012;
|
||||
var
|
||||
Msg: TMsg;
|
||||
begin
|
||||
while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do
|
||||
begin
|
||||
if Msg.Message = WM_QUIT then
|
||||
Halt(Msg.wParam);
|
||||
TranslateMessage(Msg);
|
||||
DispatchMessage(Msg);
|
||||
end;
|
||||
end;
|
||||
var
|
||||
nTimeOut: TDateTime;
|
||||
nHours, nMins, nSeconds, nMilliSecs: Integer;
|
||||
begin
|
||||
nSeconds := Trunc(ASeconds);
|
||||
nMilliSecs := Round(Frac(ASeconds) * 1000);
|
||||
nHours := nSeconds div 3600;
|
||||
nMins := (nSeconds mod 3600) div 60;
|
||||
nSeconds := nSeconds mod 60;
|
||||
nTimeOut := Now + EncodeTime(nHours, nMins, nSeconds, nMilliSecs);
|
||||
// wait until the TimeOut time
|
||||
while Now < nTimeOut do
|
||||
ProcessMessages;
|
||||
end;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//设计: Lsuper 2003.09.21
|
||||
//功能: 取得运行命令行的输出
|
||||
//参数:
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
function GetCommandLineOutput(const ACommandLine, AWorkDir: string;
|
||||
out ExitCode: LongWord): string;
|
||||
var
|
||||
strCommandLine,
|
||||
strWorkDir: string;
|
||||
strOutLine,
|
||||
strBuffer: AnsiString;
|
||||
bRunResult: Boolean;
|
||||
nBytesRead: Cardinal;
|
||||
nStdOutPipeRead,
|
||||
nStdOutPipeWrite: THandle;
|
||||
PI: TProcessInformation;
|
||||
SA: TSecurityAttributes;
|
||||
SI: TStartupInfo;
|
||||
begin
|
||||
with SA do
|
||||
begin
|
||||
nLength := SizeOf(SA);
|
||||
bInheritHandle := True;
|
||||
lpSecurityDescriptor := nil;
|
||||
end;
|
||||
if not CreatePipe(nStdOutPipeRead, nStdOutPipeWrite, @SA, 0) then
|
||||
RaiseLastOSError;
|
||||
try
|
||||
with SI do
|
||||
begin
|
||||
FillChar(SI, SizeOf(SI), 0);
|
||||
cb := SizeOf(SI);
|
||||
dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
|
||||
wShowWindow := SW_HIDE;
|
||||
hStdInput := GetStdHandle(STD_INPUT_HANDLE);
|
||||
hStdOutput := nStdOutPipeWrite;
|
||||
hStdError := nStdOutPipeWrite;
|
||||
end;
|
||||
if DirectoryExists(AWorkDir) then
|
||||
strWorkDir := AWorkDir
|
||||
else strWorkDir := GetCurrentDir;
|
||||
strCommandLine := ACommandLine;
|
||||
UniqueString(strCommandLine);
|
||||
bRunResult := CreateProcess(nil, PChar(strCommandLine), nil, nil, True, 0, nil,
|
||||
PChar(strWorkDir), SI, PI);
|
||||
CloseHandle(nStdOutPipeWrite);
|
||||
if bRunResult then
|
||||
try
|
||||
strOutLine := '';
|
||||
SetLength(strBuffer, MAXBYTE);
|
||||
repeat
|
||||
nBytesRead := 0;
|
||||
bRunResult := ReadFile(nStdOutPipeRead, PAnsiChar(strBuffer)^, Length(strBuffer), nBytesRead, nil);
|
||||
if nBytesRead > 0 then
|
||||
strOutLine := strOutLine + Copy(strBuffer, 1, nBytesRead);
|
||||
until not bRunResult or (nBytesRead = 0);
|
||||
WaitForSingleObject(PI.hProcess, INFINITE);
|
||||
GetExitCodeProcess(PI.hProcess, ExitCode);
|
||||
finally
|
||||
CloseHandle(PI.hThread);
|
||||
CloseHandle(PI.hProcess);
|
||||
end
|
||||
else RaiseLastOSError;
|
||||
finally
|
||||
CloseHandle(nStdOutPipeRead);
|
||||
Result := string(strOutLine);
|
||||
end;
|
||||
end;
|
||||
|
||||
function GetFileBuildVersion(const AFile: string): Integer;
|
||||
var
|
||||
nInfoSize, dwHandle: DWORD;
|
||||
cFileInfo: PVSFixedFileInfo;
|
||||
nVerSize: DWORD;
|
||||
strBuffer: AnsiString;
|
||||
begin
|
||||
Result := 0;
|
||||
nInfoSize := GetFileVersionInfoSize(PChar(AFile), dwHandle);
|
||||
if nInfoSize = 0 then
|
||||
Exit;
|
||||
SetLength(strBuffer, nInfoSize);
|
||||
if not GetFileVersionInfo(PChar(AFile), dwHandle, nInfoSize, Pointer(strBuffer)) then
|
||||
Exit;
|
||||
if VerQueryValue(Pointer(strBuffer), '\', Pointer(cFileInfo), nVerSize) then
|
||||
Result := LOWORD(cFileInfo.dwFileVersionLS);
|
||||
end;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//设计:Lsuper 2010.04.09
|
||||
//功能:获取 Shell 文件夹位置,如 GetSpecialFolderPath(CSIDL_COMMON_APPDATA) 等
|
||||
//参数:
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
function GetShellFolderPath(nFolder: Integer): string;
|
||||
begin
|
||||
SetLength(Result, MAX_PATH);
|
||||
SHGetSpecialFolderPath(0, PChar(Result), nFolder, False);
|
||||
SetLength(Result, StrLen(PChar(Result)));
|
||||
if (Result <> '') and (Result[Length(Result)] <> '\') then
|
||||
Result := Result + '\';
|
||||
end;
|
||||
|
||||
function GetWindowsPath: string;
|
||||
var
|
||||
nRet: LongWord;
|
||||
begin
|
||||
SetLength(Result, MAX_PATH);
|
||||
nRet := GetWindowsDirectory(PChar(Result), MAX_PATH);
|
||||
if nRet = 0 then
|
||||
Result := ''
|
||||
else begin
|
||||
SetLength(Result, nRet);
|
||||
if (Result <> '') and (Result[Length(Result)] <> '\') then
|
||||
Result := Result + '\';
|
||||
end;
|
||||
end;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//设计:Lsuper 2013.05.01
|
||||
//功能:创建注入进程
|
||||
//参数:
|
||||
//注意:加入 500ms 等待时间,确保 dll 加载成功后执行
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
function CreateProcessEx(lpApplicationName: PChar; lpCommandLine: PChar;
|
||||
lpProcessAttributes, lpThreadAttributes: PSecurityAttributes;
|
||||
bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer;
|
||||
lpCurrentDirectory: PChar; const lpStartupInfo: TStartupInfo;
|
||||
var lpProcessInformation: TProcessInformation; const ALibraryName: AnsiString): Boolean;
|
||||
begin
|
||||
Result := False;
|
||||
if not CreateProcess(lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags or CREATE_SUSPENDED, lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInformation) then
|
||||
Exit;
|
||||
Result := InjectLibraryModule(lpProcessInformation.hProcess, ALibraryName);
|
||||
{
|
||||
Result := uallHook.InjectLibrary(lpProcessInformation.dwProcessId, PChar(ALibraryName));
|
||||
}
|
||||
Sleep(500);
|
||||
ResumeThread(lpProcessInformation.hThread);
|
||||
end;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//设计:Lsuper 2013.05.01
|
||||
//功能:注入 DLL
|
||||
//参数:
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
function InjectLibraryModule(AProcessID: LongWord; const ALibraryName: AnsiString): Boolean;
|
||||
var
|
||||
dwProcessID2: DWord;
|
||||
dwMemSize: DWord;
|
||||
dwWritten: DWord;
|
||||
dwThreadID: DWord;
|
||||
pLLA: Pointer;
|
||||
pTargetMemory: Pointer;
|
||||
begin
|
||||
Assert(ALibraryName <> '');
|
||||
Result := False;
|
||||
dwProcessID2 := OpenProcess(PROCESS_ALL_ACCESS, False, AProcessID);
|
||||
if (dwProcessID2 <> 0) then
|
||||
AProcessID := dwProcessID2;
|
||||
dwMemSize := Length(ALibraryName) + 1;
|
||||
pTargetMemory := VirtualAllocEx(AProcessID, nil, dwMemSize, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE);
|
||||
pLLA := GetProcAddress(GetModuleHandleA('kernel32.dll'), 'LoadLibraryA');
|
||||
if (pLLA <> nil) and (pTargetMemory <> nil) then
|
||||
begin
|
||||
if WriteProcessMemory(AProcessID, pTargetMemory, PChar(ALibraryName), dwMemSize, dwWritten) and (dwWritten = dwMemSize) then
|
||||
Result := CreateRemoteThread(AProcessID, nil, 0, pLLA, pTargetMemory, 0, dwThreadID) <> 0;
|
||||
end;
|
||||
if (dwProcessID2 <> 0) then
|
||||
CloseHandle(dwProcessID2);
|
||||
end;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//设计:Lsuper 2009.10.25
|
||||
//功能:判断是否 Vista/7
|
||||
//参数:
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
function IsWindowsVista: Boolean;
|
||||
var
|
||||
hKernel32: HMODULE;
|
||||
begin
|
||||
hKernel32 := GetModuleHandle('kernel32');
|
||||
if hKernel32 > 0 then
|
||||
Result := GetProcAddress(hKernel32, 'GetLocaleInfoEx') <> nil
|
||||
else Result := false;
|
||||
end;
|
||||
|
||||
procedure LogMessage(const AMessage: string);
|
||||
begin
|
||||
OutputDebugString(PChar(AMessage));
|
||||
end;
|
||||
|
||||
procedure SetMainFormHandle(const AHandle: HWND);
|
||||
begin
|
||||
MainFormHandle := AHandle;
|
||||
end;
|
||||
|
||||
procedure ShowError(const AMessage: string);
|
||||
begin
|
||||
TaskMessageBox(MainFormHandle, AMessage, 'Error', TD_ICON_ERROR, TD_BUTTON_OK);
|
||||
end;
|
||||
|
||||
procedure ShowMessage(const ACaption, AMessage: string);
|
||||
begin
|
||||
TaskMessageBox(MainFormHandle, AMessage, ACaption, TD_ICON_INFORMATION, TD_BUTTON_OK);
|
||||
end;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//设计:Lsuper 2009.10.25
|
||||
//功能: 内部使用的用于显示对话框的函数,适应 Vista/7 系统风格
|
||||
//参数:
|
||||
//注意:参考 Application 的 MessageBox 和 Dialogs 的 代码,忽略多显示器判断代码
|
||||
// http://www.tmssoftware.com/site/atbdev5.asp
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
function TaskMessageBox(const AHandle: THandle; const AText, ACaption: string;
|
||||
const Icon, Buttons: Integer): Integer;
|
||||
const
|
||||
conTaskDialogProcName = 'TaskDialog';
|
||||
var
|
||||
DLLHandle: THandle;
|
||||
wTitle, wContent: array[0..1024] of widechar;
|
||||
TaskDialogProc: function(HWND: THandle; hInstance: THandle; cTitle,
|
||||
cDescription, cContent: PWideChar; Buttons: Integer; Icon: Integer;
|
||||
ResButton: PInteger): Integer; cdecl stdcall;
|
||||
Flags: Integer;
|
||||
begin
|
||||
Result := 0;
|
||||
if IsWindowsVista then
|
||||
begin
|
||||
DLLHandle := LoadLibrary(comctl32);
|
||||
@TaskDialogProc := GetProcAddress(DLLHandle, conTaskDialogProcName);
|
||||
end
|
||||
else TaskDialogProc := nil;
|
||||
if Assigned(TaskDialogProc) then
|
||||
begin
|
||||
StringToWideChar(ACaption, wTitle, SizeOf(wTitle));
|
||||
StringToWideChar(AText, wContent, SizeOf(wContent));
|
||||
TaskDialogProc(AHandle, 0, wTitle, nil, wContent, Buttons, Icon, @Result);
|
||||
end
|
||||
else begin
|
||||
Flags := 0;
|
||||
if Buttons = TD_BUTTON_OK then
|
||||
Flags := MB_OK;
|
||||
if Buttons = TD_BUTTON_OK or TD_BUTTON_CANCEL then
|
||||
Flags := MB_OKCANCEL;
|
||||
if Buttons = TD_BUTTON_CLOSE or TD_BUTTON_RETRY or TD_BUTTON_CANCEL then
|
||||
Flags := MB_ABORTRETRYIGNORE;
|
||||
if Buttons = TD_BUTTON_YES or TD_BUTTON_NO or TD_BUTTON_CANCEL then
|
||||
Flags := MB_YESNOCANCEL;
|
||||
if Buttons = TD_BUTTON_YES or TD_BUTTON_NO then
|
||||
Flags := MB_YESNO;
|
||||
if Buttons = TD_BUTTON_RETRY or TD_BUTTON_CANCEL then
|
||||
Flags := MB_RETRYCANCEL;
|
||||
case Icon of
|
||||
TD_ICON_BLANK:
|
||||
;
|
||||
TD_ICON_WARNING, TD_ICON_SHIELD_WARNING:
|
||||
Flags := Flags or MB_ICONWARNING;
|
||||
TD_ICON_QUESTION, TD_ICON_SHIELD_QUESTION:
|
||||
Flags := Flags or MB_ICONQUESTION;
|
||||
TD_ICON_ERROR, TD_ICON_SHIELD_ERROR:
|
||||
Flags := Flags or MB_ICONERROR;
|
||||
TD_ICON_INFORMATION, TD_ICON_SHIELD_OK:
|
||||
Flags := Flags or MB_ICONINFORMATION;
|
||||
end;
|
||||
Result := Windows.MessageBox(AHandle, PChar(AText), PChar(ACaption), Flags);
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
9
10.3.2/Activator/uses.inc
Normal file
9
10.3.2/Activator/uses.inc
Normal file
@ -0,0 +1,9 @@
|
||||
{ KOL MCK } // Do not remove this line!
|
||||
{ uses.inc
|
||||
This file is generated automatically - do not modify it manually.
|
||||
It is included to be recognized by compiler, but replacing word
|
||||
<uses> with compiler directive <$I uses.inc> fakes auto-completion
|
||||
preventing it from automatic references adding to VCL units into
|
||||
uses clause aimed for KOL environment only. }
|
||||
|
||||
uses
|
1
10.3.2/Dcu/dirinfo.txt
Normal file
1
10.3.2/Dcu/dirinfo.txt
Normal file
@ -0,0 +1 @@
|
||||
This directory is intended as a common place for sample application's EXE files
|
7
10.3.2/Keygen/AnsiStrings.pas
Normal file
7
10.3.2/Keygen/AnsiStrings.pas
Normal file
@ -0,0 +1,7 @@
|
||||
unit AnsiStrings;
|
||||
|
||||
interface
|
||||
|
||||
implementation
|
||||
|
||||
end.
|
2282
10.3.2/Keygen/FGInt.pas
Normal file
2282
10.3.2/Keygen/FGInt.pas
Normal file
File diff suppressed because it is too large
Load Diff
328
10.3.2/Keygen/RadKeygen.pas
Normal file
328
10.3.2/Keygen/RadKeygen.pas
Normal file
@ -0,0 +1,328 @@
|
||||
unit RadKeygen;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
SysUtils, Classes, Windows, Registry, SHFolder, Sha1, FGInt, RadVersion, RadLicense;
|
||||
|
||||
function GenerateSerialNumber():string;
|
||||
function GetRegistrationCode():string;
|
||||
function GenerateLicenseFile(SerialNumber,RegistrationCode:string;RadStudioVersion:PRadStudioVersion;var FileName:string):Boolean;
|
||||
|
||||
implementation
|
||||
|
||||
function GetAppDataPath():string;
|
||||
var
|
||||
Path:array [0..MAX_PATH-1] of Char;
|
||||
begin
|
||||
if Succeeded(SHGetFolderPath(0, CSIDL_COMMON_APPDATA, 0, 0, @Path[0])) then
|
||||
Result:=string(Path)
|
||||
else
|
||||
Result:='';
|
||||
end;
|
||||
|
||||
function GenerateSerialNumber():string;
|
||||
const
|
||||
StrMap:string='ABC2DE34FGHJKLM5NPQRST6U7VWX8YZ9';
|
||||
ByteMap:array[0..255] of Byte=($00, $07, $0E, $09, $1C, $1B, $12, $15, $38, $3F,
|
||||
$36, $31, $24, $23, $2A, $2D, $70, $77, $7E, $79,
|
||||
$6C, $6B, $62, $65, $48, $4F, $46, $41, $54, $53,
|
||||
$5A, $5D, $E0, $E7, $EE, $E9, $FC, $FB, $F2, $F5,
|
||||
$D8, $DF, $D6, $D1, $C4, $C3, $CA, $CD, $90, $97,
|
||||
$9E, $99, $8C, $8B, $82, $85, $A8, $AF, $A6, $A1,
|
||||
$B4, $B3, $BA, $BD, $C7, $C0, $C9, $CE, $DB, $DC,
|
||||
$D5, $D2, $FF, $F8, $F1, $F6, $E3, $E4, $ED, $EA,
|
||||
$B7, $B0, $B9, $BE, $AB, $AC, $A5, $A2, $8F, $88,
|
||||
$81, $86, $93, $94, $9D, $9A, $27, $20, $29, $2E,
|
||||
$3B, $3C, $35, $32, $1F, $18, $11, $16, $03, $04,
|
||||
$0D, $0A, $57, $50, $59, $5E, $4B, $4C, $45, $42,
|
||||
$6F, $68, $61, $66, $73, $74, $7D, $7A, $89, $8E,
|
||||
$87, $80, $95, $92, $9B, $9C, $B1, $B6, $BF, $B8,
|
||||
$AD, $AA, $A3, $A4, $F9, $FE, $F7, $F0, $E5, $E2,
|
||||
$EB, $EC, $C1, $C6, $CF, $C8, $DD, $DA, $D3, $D4,
|
||||
$69, $6E, $67, $60, $75, $72, $7B, $7C, $51, $56,
|
||||
$5F, $58, $4D, $4A, $43, $44, $19, $1E, $17, $10,
|
||||
$05, $02, $0B, $0C, $21, $26, $2F, $28, $3D, $3A,
|
||||
$33, $34, $4E, $49, $40, $47, $52, $55, $5C, $5B,
|
||||
$76, $71, $78, $7F, $6A, $6D, $64, $63, $3E, $39,
|
||||
$30, $37, $22, $25, $2C, $2B, $06, $01, $08, $0F,
|
||||
$1A, $1D, $14, $13, $AE, $A9, $A0, $A7, $B2, $B5,
|
||||
$BC, $BB, $96, $91, $98, $9F, $8A, $8D, $84, $83,
|
||||
$DE, $D9, $D0, $D7, $C2, $C5, $CC, $CB, $E6, $E1,
|
||||
$E8, $EF, $FA, $FD, $F4, $F3);
|
||||
var
|
||||
i,v1,v2,v3,v4,v5,v6,v7,v8,v9:Integer;
|
||||
SumValue:string;
|
||||
ByteArray:array[0..19] of Byte;
|
||||
begin
|
||||
Randomize();
|
||||
v1:=0;
|
||||
v2:=0;
|
||||
v3:=0;
|
||||
v4:=0;
|
||||
v5:=1;
|
||||
v6:=8217;
|
||||
v7:=53;
|
||||
v8:= Random(32) shl 8;
|
||||
v8:=v8 xor Random(32);
|
||||
v8:= v8 mod $10000;
|
||||
SumValue:=Format('%d',[v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8]);
|
||||
v9:=0;
|
||||
|
||||
for i := 0 to Length(SumValue)-1 do
|
||||
begin
|
||||
v9:=v9 xor ByteMap[Ord(SumValue[i+1])];
|
||||
end;
|
||||
ByteArray[0] := ((v8 shr 1) and 8) or ((v8 shr 5) and 4) or (2 * v5 and 2);
|
||||
ByteArray[1] := ((v7 shr 1) and 16) or ((v7 shr 4) and 8) or ((v6 shr 5) and 2) or ((v6 shr 8) and 1);
|
||||
ByteArray[2] := (2 * v7 and 16) or (8 * v8 and 8) or ((v5 shr 1) and 4) or ((v6 shr 4) and 2) or (v3 and 1);
|
||||
ByteArray[3] := (4 * v5 and 16);
|
||||
ByteArray[4] := (4 * v9 and 16) or ((v6 shr 4) and 8);
|
||||
ByteArray[5] := (8 * v4 and 8) or ((v8 shr 1) and 4) or ((v8 shr 12) and 2);
|
||||
ByteArray[6] := ((v9 shr 3) and 8) or ((v8 shr 4) and 4) or (2 * v1 and 2);
|
||||
ByteArray[7] := ((v8 shr 11) and 16) or ((v8 shr 7) and 8) or (4 * v6 and 4) or ((v5 shr 3) and 2);
|
||||
ByteArray[8] := ((v8 shr 7) and 16) or ((v6 shr 1) and 1);
|
||||
ByteArray[9] := (4 * v6 and 16) or (v9 and 8) or (v8 and 4);
|
||||
ByteArray[10] := ((v8 shr 9) and 8);
|
||||
ByteArray[11] := (4 * v9 and 8) or (4 * v9 and 4) or (v8 and 2) or ((v8 shr 5) and 1);
|
||||
ByteArray[12] := ((v8 shr 8) and 1);
|
||||
ByteArray[13] := ((v6 shr 7) and 16) or ((v9 shr 7) and 1);
|
||||
ByteArray[14] := (2 * v7 and 2) or ((v7 shr 1) and 1);
|
||||
ByteArray[15] := (v6 and 8) or ((v6 shr 2) and 4) or ((v8 shr 9) and 1);
|
||||
ByteArray[16] := (16 * v2 and 16) or (2 * v7 and 8) or ((v5 shr 1) and 1);
|
||||
ByteArray[17] := ((v9 shr 3) and 2);
|
||||
ByteArray[18] := (v7 and 16) or ((v6 shr 6) and 8) or ((v6 shr 8) and 4) or ((v8 shr 13) and 2) or ((v9 shr 5) and 1);
|
||||
ByteArray[19] := ((v6 shr 9) and 16) or ((v7 shr 3) and 8) or ((v6 shr 11) and 2);
|
||||
|
||||
Result:='';
|
||||
for i := 0 to Length(ByteArray)-1 do
|
||||
begin
|
||||
if (i=4) or (i=10) or (i=16) then Result:=Result+'-';
|
||||
Result:=Result+StrMap[ByteArray[i]+1];
|
||||
end;
|
||||
end;
|
||||
|
||||
function GetRegistrationCode():string;
|
||||
|
||||
function GetKey():DWORD;
|
||||
const
|
||||
KeyMap:string='ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890X';
|
||||
var
|
||||
ComputerName:array[0..MAX_PATH-1] of Char;
|
||||
Key:string;
|
||||
nSize:Cardinal;
|
||||
i,j:Integer;
|
||||
begin
|
||||
Result:=$ED864640;
|
||||
if (GetComputerName(@ComputerName[0],nSize)=False) then
|
||||
Key:='localhost'
|
||||
else
|
||||
Key:=string(ComputerName);
|
||||
|
||||
Key:=UpperCase(Key);
|
||||
for i := 0 to Length(Key)-1 do
|
||||
begin
|
||||
for j := 0 to Length(KeyMap)-1 do
|
||||
begin
|
||||
if (Key[i+1]=KeyMap[j+1]) then Break;
|
||||
end;
|
||||
if j>=Length(KeyMap) then
|
||||
Result:=Result+16*88
|
||||
else
|
||||
Result:=Result+16*Ord(KeyMap[36-j]);
|
||||
end;
|
||||
end;
|
||||
|
||||
var
|
||||
FileName:string;
|
||||
MemoryStream:TMemoryStream;
|
||||
dwVerify,dwSize:DWORD;
|
||||
pBuf,p:PByte;
|
||||
i,j,eax,ebx,esi:Cardinal;
|
||||
|
||||
begin
|
||||
Result:='';
|
||||
MemoryStream:=TMemoryStream.Create;
|
||||
try
|
||||
if GetAppDataPath<>'' then
|
||||
begin
|
||||
FileName:=GetAppDataPath+'\Embarcadero\.licenses\.cg_license';
|
||||
if FileExists(FileName) then
|
||||
begin
|
||||
MemoryStream.LoadFromFile(FileName);
|
||||
end
|
||||
else
|
||||
begin
|
||||
FileName:=GetAppDataPath+'\Embarcadero\.cg_license';
|
||||
if FileExists(FileName) then
|
||||
begin
|
||||
MemoryStream.LoadFromFile(FileName);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
if MemoryStream.Size>8 then
|
||||
begin
|
||||
MemoryStream.Position:=0;
|
||||
MemoryStream.Read(dwVerify,SizeOf(dwVerify));
|
||||
MemoryStream.Read(dwSize,SizeOf(dwSize));
|
||||
dwVerify:=(Swap(loWord(dwVerify)) shl 16) or Swap(HiWord(dwVerify));
|
||||
dwSize:=(Swap(loWord(dwSize)) shl 16) or Swap(HiWord(dwSize));
|
||||
pBuf:=AllocMem(dwSize);
|
||||
MemoryStream.Read(pBuf^,dwSize);
|
||||
p:=pBuf;
|
||||
eax:=GetKey();
|
||||
for i := 0 to dwSize-1 do
|
||||
begin
|
||||
esi:=p^;
|
||||
if (esi and $80)=$80 then esi:=esi or $ffffff00;
|
||||
ebx:=(eax shr 24) and $FF;
|
||||
p^:=p^ xor ebx;
|
||||
inc(p);
|
||||
eax:=eax xor esi;
|
||||
ebx:=eax shl 8;
|
||||
eax:=eax xor ebx;
|
||||
ebx:=eax shl 16;
|
||||
eax:= eax xor ebx;
|
||||
ebx:=eax shl 24;
|
||||
eax:=eax xor ebx;
|
||||
end;
|
||||
eax:=eax and $7FFFFFFF;
|
||||
if eax=dwVerify then
|
||||
begin
|
||||
for i := 0 to dwSize-1 do
|
||||
begin
|
||||
if PByte(Cardinal(pBuf)+i)^=36 then Break; //$
|
||||
end;
|
||||
Inc(i);
|
||||
j:=0;
|
||||
while (i<dwSize) and (PByte(Cardinal(pBuf)+i)^<>13) and (j<10) do
|
||||
begin
|
||||
Result:=Result+Chr(PByte(Cardinal(pBuf)+i)^);
|
||||
Inc(i);
|
||||
inc(j);
|
||||
end;
|
||||
end;
|
||||
FreeMem(pBuf,dwSize);
|
||||
end;
|
||||
finally
|
||||
MemoryStream.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
function GenerateLicenseFile(SerialNumber,RegistrationCode:string;RadStudioVersion:PRadStudioVersion;var FileName:string):Boolean;
|
||||
const
|
||||
ModStr:string='8EBD9E688D7106E57BCF63D41BADCE133FEB4CDB718F48F7BF39F6A26EB60BAE'+
|
||||
'0E930DC984FDED2537750C9DCFBB87D7AC7F3AA4D65D9E35C2D277BCB0ECDCA0'+
|
||||
'2D7DAE739AC8BCAE86914F6E77C17A82C77438421FC315DC38F09C7E840AF41E'+
|
||||
'663C5562222E661ED22578A234B58481F862CEABF477C89AE70F15134F83BC7E'+
|
||||
'C2EF57E7274EB74353DE22283113485D9803D4050EF46DB1467EE9D066B104EB'+
|
||||
'385D3C36BD29B58E237E22C0BE66D450BDFCED524481B6DCE3F83BBEC547F926'+
|
||||
'AD23057504DEDB9723EBFD26218167AAC79485FF608F8881D9A6AF5C57BE9A2F'+
|
||||
'B52047ABA92F806955580517F6D147BA1FD5DB3EEF1CEE4CA250D1C0FA824CD9';
|
||||
ExpStr:string='7E8325B1791B628766F2EB82057E4895DB234C1D7B4B09DB3B8BBE433D68F075'+
|
||||
'36C9B38096F51088D9DC4E7058BBD7AC9A60B1B383A3BA23E026F6A53112DE80'+
|
||||
'C191115BB9268DC509D424D8BE1FA7DBDDB7EE5CFD15C57C48A349B1008B4CCE'+
|
||||
'DCC240D31784945260E3814612FD871242FA203F5C1006A6F47FF3A807E3B4DE'+
|
||||
'39535FB5523ABED7B4337606E69245EC13BF9B553FD6F45B0FD290D7CBBEB8C8'+
|
||||
'DF2252DE7EB6A83A679873CC9842B52A093ED00742F11CD23CB5278873253E79'+
|
||||
'0E30B16AC72B7ACF9824B568ED971D768B95CA9D4C9A40C884542B8696AADF58'+
|
||||
'184CE6376E51451EF8D266ECA691ECAB25E15AA8E527312755A55C2B7D390AD9';
|
||||
var
|
||||
Slip,Tmp:AnsiString;
|
||||
Len,v2,v5:Cardinal;
|
||||
FGInt,exp,modb,res:TFGInt;
|
||||
i:Integer;
|
||||
Stream:TMemoryStream;
|
||||
SearchRec:TSearchRec;
|
||||
begin
|
||||
Result:=False;
|
||||
if (Trim(SerialNumber)='') or (Trim(RegistrationCode)='') or
|
||||
(TryStrToInt(Trim(RegistrationCode),i)=False) then Exit;
|
||||
|
||||
Slip:=AnsiString(CreateLicenseText(SerialNumber,RegistrationCode,RadStudioVersion));
|
||||
|
||||
Len:= Length(Slip);
|
||||
Len:=(Swap(loWord(Len)) shl 16) or Swap(HiWord(Len));
|
||||
Tmp:=PChar(@Len)^+(PChar(@Len)+1)^+(PChar(@Len)+2)^+(PChar(@Len)+3)^+Slip;
|
||||
Tmp:='01'+StringOfChar('F',66)+'00'+UpperCase(SHA1Print(SHA1String(Tmp)));
|
||||
|
||||
ConvertHexStringToBase256String(Tmp,Tmp);
|
||||
Base256StringToFGInt(Tmp,FGInt);
|
||||
|
||||
ConvertHexStringToBase256String(ExpStr,Tmp);
|
||||
Base256StringToFGInt(Tmp,exp);
|
||||
|
||||
ConvertHexStringToBase256String(ModStr,Tmp);
|
||||
Base256StringToFGInt(Tmp,modb);
|
||||
|
||||
FGIntModExp(FGInt,exp,modb,res);
|
||||
FGIntToBase256String(res,Tmp);
|
||||
PGPConvertBase256to64(Tmp,Tmp);
|
||||
|
||||
FGIntDestroy(FGInt);
|
||||
FGIntDestroy(exp);
|
||||
FGIntDestroy(modb);
|
||||
FGIntDestroy(res);
|
||||
|
||||
Slip:=StringReplace(Slip,'e.sign'#10'0'#10,'e.sign'#10'CgeEeu66fCgQJBaqKQwwyiqyHYb22nc2VZRmQVasSDnZAtB/QTLt0CYdgdN16XCz/Nt032fMwTsytchG0l2UeA=='#10,[rfReplaceAll]);
|
||||
Slip:=StringReplace(Slip,'e.sign2'#10'0'#10,'e.sign2'#10'JWKzOwTKBL+zOP5wrouG5ta/mH+Fvsgb7hb8oJTzu4r3gK/6sh95zKAWKiydqsgvV9pxPXTAlkxv9wAecqJKTQ=='#10,[rfReplaceAll]);
|
||||
Slip:=StringReplace(Slip,'e.sign3'#10'0'#10,'e.sign3'#10+Tmp+#10,[rfReplaceAll]);
|
||||
|
||||
v2:=$E7F931C2;
|
||||
for i := 0 to Length(Slip) - 1 do
|
||||
begin
|
||||
Slip[i+1]:= AnsiChar(Chr(Ord(Slip[i+1]) xor ((v2 shr 24) and $FF)));
|
||||
v5:=Ord(Slip[i+1]);
|
||||
if (v5 and $80)=$80 then v5:=v5 or $ffffff00;
|
||||
v5:= v5 xor v2;
|
||||
v5:=(v5 shl 8) xor v5;
|
||||
v5:=(v5 shl 16) xor v5;
|
||||
v5:=(v5 shl 24) xor v5;
|
||||
v2:=v5;
|
||||
end;
|
||||
|
||||
v2:=(Swap(loWord(v2)) shl 16) or Swap(HiWord(v2));
|
||||
Len:=Length(Slip);
|
||||
Len:=(Swap(loWord(Len)) shl 16) or Swap(HiWord(Len));
|
||||
|
||||
Stream:=TMemoryStream.Create;
|
||||
try
|
||||
Stream.Write(v2,4);
|
||||
Stream.Write(Len,4);
|
||||
Stream.Write(Slip[1],Length(Slip));
|
||||
if (FileName='') or (not DirectoryExists(ExtractFilePath(FileName))) then
|
||||
begin
|
||||
if DirectoryExists(GetAppDataPath+'\Embarcadero') then
|
||||
begin
|
||||
Tmp:=Format('%s\Embarcadero\.%d_%d.19*.slip',[GetAppDataPath,RadStudioVersion^.LicHostPID,RadStudioVersion^.LicHostSKU]);
|
||||
{
|
||||
if (FindFirst(Tmp,faAnyFile,SearchRec)=0) and
|
||||
(MessageBox(0,PAnsiChar(Format('Do you want to Delete the old slip file int %s folder',[GetAppDataPath])), 'Rad Studio Keygen',MB_YESNO + MB_ICONQUESTION) = IDYES) then
|
||||
}
|
||||
if (FindFirst(Tmp,faAnyFile,SearchRec)=0) then
|
||||
begin
|
||||
DeleteFile(PAnsiChar(Format('%s\Embarcadero\%s',[GetAppDataPath,SearchRec.Name])));
|
||||
while FindNext(SearchRec)=0 do
|
||||
begin
|
||||
DeleteFile(PAnsiChar(Format('%s\Embarcadero\%s',[GetAppDataPath,SearchRec.Name])));
|
||||
end;
|
||||
end;
|
||||
SysUtils.FindClose(SearchRec);
|
||||
FileName:=Format('%s\Embarcadero\.%d_%d.19%d%d%d%d%d%d%d%d%d%d%d.slip',[GetAppDataPath,RadStudioVersion^.LicHostPID,RadStudioVersion^.LicHostSKU,
|
||||
Random(10),Random(10),Random(10),Random(10),Random(10),
|
||||
Random(10),Random(10),Random(10),Random(10),Random(10),Random(10)]);
|
||||
end
|
||||
else
|
||||
FileName:=ExtractFileDir(ParamStr(0))+'\RAD Studio Activation.slip';
|
||||
end;
|
||||
Stream.SaveToFile(FileName);
|
||||
{
|
||||
PatchmOasisRuntime(RadStudioVersion);
|
||||
}
|
||||
Result:=True;
|
||||
finally
|
||||
Stream.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
248
10.3.2/Keygen/RadLicense.pas
Normal file
248
10.3.2/Keygen/RadLicense.pas
Normal file
@ -0,0 +1,248 @@
|
||||
unit RadLicense;
|
||||
|
||||
interface
|
||||
|
||||
uses RadVersion,SysUtils;
|
||||
|
||||
function CreateLicenseText(SerialNumber,ActiveCode:string;RadStudioVersion:PRadStudioVersion):string;
|
||||
|
||||
implementation
|
||||
|
||||
function CreateLicenseText(SerialNumber,ActiveCode:string;RadStudioVersion:PRadStudioVersion):string;
|
||||
var
|
||||
pid,skuid:string;
|
||||
begin
|
||||
pid:=IntToStr(RadStudioVersion^.LicHostPID);
|
||||
skuid:=IntToStr(RadStudioVersion^.LicHostSKU);
|
||||
|
||||
Result:='11'#10;
|
||||
Result:=Result+'e.pkg'#10'Embarcadero RAD Studio '+ RadStudioVersion^.LicVerStr +' Architect'#10;
|
||||
Result:=Result+'e.pt'#10'10'#10;
|
||||
Result:=Result+'e.sign'#10'0'#10;
|
||||
Result:=Result+'e.sign2'#10'0'#10;
|
||||
Result:=Result+'e.sign3'#10'0'#10;
|
||||
Result:=Result+'export.allowed'#10'0'#10;
|
||||
Result:=Result+'import.allowed'#10'1'#10;
|
||||
Result:=Result+'import.silent'#10'1'#10;
|
||||
Result:=Result+'licensed.serialno'#10+SerialNumber+#10;
|
||||
Result:=Result+'nodelock.node'#10'0'#10;
|
||||
Result:=Result+'nodelock.session'#10+ActiveCode+#10;
|
||||
|
||||
Result:=Result+'4'#10;
|
||||
|
||||
Result:=Result+'26'#10;
|
||||
Result:=Result+'active'#10'T'#10;
|
||||
Result:=Result+'beta'#10'0'#10;
|
||||
Result:=Result+'exportable'#10'0'#10;
|
||||
Result:=Result+'hostpid'#10+pid+#10;
|
||||
Result:=Result+'hostskuid'#10+skuid+#10;
|
||||
Result:=Result+'internaluse'#10'0'#10;
|
||||
Result:=Result+'naggy'#10'0'#10;
|
||||
Result:=Result+'noncommercial'#10'0'#10;
|
||||
Result:=Result+'noncommercial_label'#10'No'#10;
|
||||
Result:=Result+'platform'#10'1'#10;
|
||||
Result:=Result+'platform_label'#10'Windows'#10;
|
||||
Result:=Result+'product'#10'2000'#10;
|
||||
Result:=Result+'productid'#10+ RadStudioVersion^.LicDelphiPID +#10;
|
||||
Result:=Result+'productid_label'#10'Delphi '+ RadStudioVersion^.LicVerStr +#10;
|
||||
Result:=Result+'productsku'#10+skuid+#10;
|
||||
Result:=Result+'productsku_label'#10'Architect'#10;
|
||||
Result:=Result+'rndkey'#10'15687805'#10;
|
||||
Result:=Result+'serialno'#10+SerialNumber+#10;
|
||||
Result:=Result+'sku'#10+skuid+#10;
|
||||
Result:=Result+'templicense'#10'0'#10;
|
||||
Result:=Result+'termtype'#10'0'#10;
|
||||
Result:=Result+'termtype_label'#10'Unlimited'#10;
|
||||
Result:=Result+'title'#10'Delphi '+ RadStudioVersion^.LicVerStr +' Architect'#10;
|
||||
Result:=Result+'trial'#10'0'#10;
|
||||
Result:=Result+'upgrade'#10'0'#10;
|
||||
Result:=Result+'version'#10'26'#10;
|
||||
Result:=Result+'27'#10;
|
||||
Result:=Result+'Android'#10'T'#10;
|
||||
Result:=Result+'DESIGNDIAGRAMS'#10'TRUE'#10;
|
||||
Result:=Result+'DESIGNPROJECTS'#10'TRUE'#10;
|
||||
Result:=Result+'Desktop'#10'T'#10;
|
||||
Result:=Result+'FULLQA'#10'TRUE'#10;
|
||||
Result:=Result+'FulliOS'#10'T'#10;
|
||||
Result:=Result+'Linux64'#10'T'#10;
|
||||
Result:=Result+'MODELLING'#10'TRUE'#10;
|
||||
Result:=Result+'Mobile'#10'T'#10;
|
||||
Result:=Result+'OSX32'#10'T'#10;
|
||||
Result:=Result+'OSX64'#10'T'#10;
|
||||
Result:=Result+'Win32'#10'T'#10;
|
||||
Result:=Result+'Win64'#10'T'#10;
|
||||
Result:=Result+'a100'#10'MakeThingsHappen'#10;
|
||||
Result:=Result+'a1000'#10'PrintMoreMoney'#10;
|
||||
Result:=Result+'a101'#10'ImGivinItAllShesGot'#10;
|
||||
Result:=Result+'a200'#10'StampIt'#10;
|
||||
Result:=Result+'a250'#10'ItsToolTimeBaby'#10;
|
||||
Result:=Result+'a300'#10'TheMalteseFalcon'#10;
|
||||
Result:=Result+'a301'#10'GlueSolvent'#10;
|
||||
Result:=Result+'hostsuite'#10+pid+#10;
|
||||
Result:=Result+'iOSDevice'#10'T'#10;
|
||||
Result:=Result+'iOSDevice32'#10'T'#10;
|
||||
Result:=Result+'iOSDevice64'#10'T'#10;
|
||||
Result:=Result+'iOSSimulator'#10'T'#10;
|
||||
Result:=Result+'updatelevel'#10'0.0'#10;
|
||||
Result:=Result+'updates'#10'1'#10;
|
||||
|
||||
Result:=Result+'26'#10;
|
||||
Result:=Result+'active'#10'T'#10;
|
||||
Result:=Result+'beta'#10'0'#10;
|
||||
Result:=Result+'exportable'#10'0'#10;
|
||||
Result:=Result+'hostpid'#10+pid+#10;
|
||||
Result:=Result+'hostskuid'#10+skuid+#10;
|
||||
Result:=Result+'internaluse'#10'0'#10;
|
||||
Result:=Result+'naggy'#10'0'#10;
|
||||
Result:=Result+'noncommercial'#10'0'#10;
|
||||
Result:=Result+'noncommercial_label'#10'No'#10;
|
||||
Result:=Result+'platform'#10'1'#10;
|
||||
Result:=Result+'platform_label'#10'Windows'#10;
|
||||
Result:=Result+'product'#10'4000'#10;
|
||||
Result:=Result+'productid'#10+ RadStudioVersion^.LicCBuilderPID +#10;
|
||||
Result:=Result+'productid_label'#10'C++Builder '+ RadStudioVersion^.LicVerStr +#10;
|
||||
Result:=Result+'productsku'#10+skuid+#10;
|
||||
Result:=Result+'productsku_label'#10'Architect'#10; //Architect
|
||||
Result:=Result+'rndkey'#10'15687805'#10;
|
||||
Result:=Result+'serialno'#10+SerialNumber+#10;
|
||||
Result:=Result+'sku'#10+skuid+#10;
|
||||
Result:=Result+'templicense'#10'0'#10;
|
||||
Result:=Result+'termtype'#10'0'#10;
|
||||
Result:=Result+'termtype_label'#10'Unlimited'#10;
|
||||
Result:=Result+'title'#10'C++Builder '+ RadStudioVersion^.LicVerStr +' Architect'#10;
|
||||
Result:=Result+'trial'#10'0'#10;
|
||||
Result:=Result+'upgrade'#10'0'#10;
|
||||
Result:=Result+'version'#10'20'#10;
|
||||
Result:=Result+'26'#10;
|
||||
Result:=Result+'Android'#10'T'#10;
|
||||
Result:=Result+'DESIGNDIAGRAMS'#10'TRUE'#10;
|
||||
Result:=Result+'DESIGNPROJECTS'#10'TRUE'#10;
|
||||
Result:=Result+'Desktop'#10'T'#10;
|
||||
Result:=Result+'FULLQA'#10'TRUE'#10;
|
||||
Result:=Result+'FulliOS'#10'T'#10;
|
||||
Result:=Result+'MODELLING'#10'TRUE'#10;
|
||||
Result:=Result+'Mobile'#10'T'#10;
|
||||
Result:=Result+'OSX32'#10'T'#10;
|
||||
Result:=Result+'OSX64'#10'T'#10;
|
||||
Result:=Result+'Win32'#10'T'#10;
|
||||
Result:=Result+'Win64'#10'T'#10;
|
||||
Result:=Result+'a100'#10'MakeThingsHappen'#10;
|
||||
Result:=Result+'a1000'#10'PrintMoreMoney'#10;
|
||||
Result:=Result+'a101'#10'ImGivinItAllShesGot'#10;
|
||||
Result:=Result+'a200'#10'StampIt'#10;
|
||||
Result:=Result+'a250'#10'ItsToolTimeBaby'#10;
|
||||
Result:=Result+'a300'#10'TheMalteseFalcon'#10;
|
||||
Result:=Result+'a301'#10'GlueSolvent'#10;
|
||||
Result:=Result+'hostsuite'#10+pid+#10;
|
||||
Result:=Result+'iOSDevice'#10'T'#10;
|
||||
Result:=Result+'iOSDevice32'#10'T'#10;
|
||||
Result:=Result+'iOSDevice64'#10'T'#10;
|
||||
Result:=Result+'iOSSimulator'#10'T'#10;
|
||||
Result:=Result+'updatelevel'#10'0.0'#10;
|
||||
Result:=Result+'updates'#10'1'#10;
|
||||
|
||||
Result:=Result+'26'#10;
|
||||
Result:=Result+'active'#10'T'#10;
|
||||
Result:=Result+'beta'#10'0'#10;
|
||||
Result:=Result+'exportable'#10'0'#10;
|
||||
Result:=Result+'hostpid'#10+pid+#10;
|
||||
Result:=Result+'hostskuid'#10+skuid+#10;
|
||||
Result:=Result+'internaluse'#10'0'#10;
|
||||
Result:=Result+'naggy'#10'0'#10;
|
||||
Result:=Result+'noncommercial'#10'0'#10;
|
||||
Result:=Result+'noncommercial_label'#10'No'#10;
|
||||
Result:=Result+'platform'#10'0'#10;
|
||||
Result:=Result+'platform_label'#10'Cross Platform'#10;
|
||||
Result:=Result+'product'#10'7000'#10;
|
||||
Result:=Result+'productid'#10'7112'#10;
|
||||
Result:=Result+'productid_label'#10'InterBase 2017'#10; //InterBase 2017
|
||||
Result:=Result+'productsku'#10'0'#10;
|
||||
Result:=Result+'productsku_label'#10'Server'#10; //Server
|
||||
Result:=Result+'rndkey'#10'15687805'#10;
|
||||
Result:=Result+'serialno'#10+SerialNumber+#10;
|
||||
Result:=Result+'sku'#10'0'#10;
|
||||
Result:=Result+'templicense'#10'0'#10;
|
||||
Result:=Result+'termtype'#10'0'#10;
|
||||
Result:=Result+'termtype_label'#10'Unlimited'#10;
|
||||
Result:=Result+'title'#10'InterBase 2017 Server'#10; //InterBase 2017 Server
|
||||
Result:=Result+'trial'#10'0'#10;
|
||||
Result:=Result+'upgrade'#10'0'#10;
|
||||
Result:=Result+'version'#10'7'#10;
|
||||
Result:=Result+'21'#10;
|
||||
Result:=Result+'changeView'#10'1'#10;
|
||||
Result:=Result+'connectionMonitoring'#10'1'#10;
|
||||
Result:=Result+'connectionsPerUser'#10'200'#10;
|
||||
Result:=Result+'customVarId'#10' '#10;
|
||||
Result:=Result+'databaseAccess'#10'1'#10;
|
||||
Result:=Result+'dbEncryption'#10'1'#10;
|
||||
Result:=Result+'ddlOperations'#10'1'#10;
|
||||
Result:=Result+'devLicense'#10'1'#10;
|
||||
Result:=Result+'externalFileAccess'#10'1'#10;
|
||||
Result:=Result+'internetAccess'#10'1'#10;
|
||||
Result:=Result+'languages'#10'ALL'#10;
|
||||
Result:=Result+'licensedCpus'#10'32'#10;
|
||||
Result:=Result+'licensedUsers'#10'5000'#10;
|
||||
Result:=Result+'nodeID'#10' '#10;
|
||||
Result:=Result+'otwEncryption'#10'1'#10;
|
||||
Result:=Result+'remoteAccess'#10'1'#10;
|
||||
Result:=Result+'serverAccess'#10'1'#10;
|
||||
Result:=Result+'togoAccess'#10'0'#10;
|
||||
Result:=Result+'updatelevel'#10'0.0'#10;
|
||||
Result:=Result+'useAddons'#10'0'#10;
|
||||
Result:=Result+'version'#10'13.3'#10;
|
||||
|
||||
Result:=Result+'26'#10;
|
||||
Result:=Result+'active'#10'T'#10;
|
||||
Result:=Result+'beta'#10'0'#10;
|
||||
Result:=Result+'exportable'#10'0'#10;
|
||||
Result:=Result+'hostpid'#10+pid+#10;
|
||||
Result:=Result+'hostskuid'#10+skuid+#10;
|
||||
Result:=Result+'internaluse'#10'0'#10;
|
||||
Result:=Result+'naggy'#10'0'#10;
|
||||
Result:=Result+'noncommercial'#10'0'#10;
|
||||
Result:=Result+'noncommercial_label'#10'No'#10;
|
||||
Result:=Result+'platform'#10'0'#10;
|
||||
Result:=Result+'platform_label'#10'All'#10;
|
||||
Result:=Result+'product'#10'7000'#10;
|
||||
Result:=Result+'productid'#10'7112'#10;
|
||||
Result:=Result+'productid_label'#10'InterBase 2017'#10; //InterBase 2017
|
||||
Result:=Result+'productsku'#10'16'#10;
|
||||
Result:=Result+'productsku_label'#10'ToGo Edition'#10; //ToGo Edition
|
||||
Result:=Result+'rndkey'#10'15687805'#10;
|
||||
Result:=Result+'serialno'#10+SerialNumber+#10;
|
||||
Result:=Result+'sku'#10'16'#10;
|
||||
Result:=Result+'templicense'#10'0'#10;
|
||||
Result:=Result+'termtype'#10'0'#10;
|
||||
Result:=Result+'termtype_label'#10'Unlimited'#10;
|
||||
Result:=Result+'title'#10'InterBase 2017 ToGo Edition'#10; //InterBase 2017 ToGo Edition
|
||||
Result:=Result+'trial'#10'0'#10;
|
||||
Result:=Result+'upgrade'#10'0'#10;
|
||||
Result:=Result+'version'#10'7'#10;
|
||||
Result:=Result+'21'#10;
|
||||
Result:=Result+'changeView'#10'1'#10;
|
||||
Result:=Result+'connectionMonitoring'#10'1'#10;
|
||||
Result:=Result+'connectionsPerUser'#10'200'#10;
|
||||
Result:=Result+'customVarId'#10' '#10;
|
||||
Result:=Result+'databaseAccess'#10'1'#10;
|
||||
Result:=Result+'dbEncryption'#10'1'#10;
|
||||
Result:=Result+'ddlOperations'#10'1'#10;
|
||||
Result:=Result+'devLicense'#10'1'#10;
|
||||
Result:=Result+'externalFileAccess'#10'1'#10;
|
||||
Result:=Result+'internetAccess'#10'1'#10;
|
||||
Result:=Result+'languages'#10'ALL'#10;
|
||||
Result:=Result+'licensedCpus'#10'32'#10;
|
||||
Result:=Result+'licensedUsers'#10'5000'#10;
|
||||
Result:=Result+'nodeID'#10' '#10;
|
||||
Result:=Result+'otwEncryption'#10'1'#10;
|
||||
Result:=Result+'remoteAccess'#10'1'#10;
|
||||
Result:=Result+'serverAccess'#10'1'#10;
|
||||
Result:=Result+'togoAccess'#10'1'#10;
|
||||
Result:=Result+'updatelevel'#10'0.0'#10;
|
||||
Result:=Result+'useAddons'#10'0'#10;
|
||||
Result:=Result+'version'#10'13.3'#10;
|
||||
|
||||
Result:=Result+'1'#10;
|
||||
Result:=Result+'updatelevel'#10'0.0'#10;
|
||||
end;
|
||||
|
||||
end.
|
85
10.3.2/Keygen/RadVersion.pas
Normal file
85
10.3.2/Keygen/RadVersion.pas
Normal file
@ -0,0 +1,85 @@
|
||||
unit RadVersion;
|
||||
|
||||
interface
|
||||
uses Windows,Classes,SysUtils;
|
||||
type
|
||||
TPatchInfo=record
|
||||
Crc:DWORD;
|
||||
Sha1:string;
|
||||
PatchOffset:DWORD;
|
||||
FinalizeArrayOffset:DWORD;
|
||||
end;
|
||||
|
||||
TRadStudioVersion=record
|
||||
Name:string; // Rad Studio 10.2 Tokyo Update2
|
||||
Ver:string; // 25.0.29039.2004
|
||||
BDSVersion:string; // 19.0
|
||||
LicVerStr:string; // 10.2 Tokyo
|
||||
LicHostPID:Integer; // 8219
|
||||
LicHostSKU:Integer; // 52
|
||||
LicDelphiPID:string; // 2025
|
||||
LicCBuilderPID:string; // 4022
|
||||
BdsPatchInfo:TPatchInfo;
|
||||
LicenseManagerPatchInfo:TPatchInfo;
|
||||
mOasisRuntimePatchInfo:TPatchInfo;
|
||||
SetupGUID:string;
|
||||
ISOUrl:string;
|
||||
ISOMd5:string;
|
||||
end;
|
||||
PRadStudioVersion=^TRadStudioVersion;
|
||||
var
|
||||
RadStudioVersionList:TStringList;
|
||||
implementation
|
||||
|
||||
procedure InitRadStudioVersion(VerList:TStringList);
|
||||
var
|
||||
RadStudioVersion:PRadStudioVersion;
|
||||
begin
|
||||
New(RadStudioVersion);
|
||||
with RadStudioVersion^ do
|
||||
begin
|
||||
Name := 'Rad Studio 10.3 Rio 4364 Architect';
|
||||
Ver := '26.0.32429.4364';
|
||||
BDSVersion := '20.0';
|
||||
LicVerStr := '10.3';
|
||||
LicHostPID := 8220;
|
||||
LicHostSKU := 53;
|
||||
LicDelphiPID := '2026';
|
||||
LicCBuilderPID := '4023';
|
||||
BdsPatchInfo.Crc := $C426EC4A;
|
||||
BdsPatchInfo.Sha1 := '43BB879FE9EFD7B8752F2B5D99DF31F7CD948D68';
|
||||
BdsPatchInfo.PatchOffset := $1F724;
|
||||
BdsPatchInfo.FinalizeArrayOffset := $11EF7C;
|
||||
LicenseManagerPatchInfo.Crc := $0D512F70;
|
||||
LicenseManagerPatchInfo.Sha1 := '8D16D4521BCC12D537EB20B33864654E7A5B81C0';
|
||||
LicenseManagerPatchInfo.PatchOffset := $1F002C;
|
||||
LicenseManagerPatchInfo.FinalizeArrayOffset := $6227A4;
|
||||
mOasisRuntimePatchInfo.Sha1 := '101FC6D71A1DDEAF3B079477560DD0307ADE3C80';
|
||||
mOasisRuntimePatchInfo.PatchOffset := $0016CFE9;
|
||||
SetupGUID := '{426A3606-6CB8-4CF8-87A8-44388377C47D}';
|
||||
ISOUrl := 'http://altd.embarcadero.com/download/radstudio/10.3/delphicbuilder10_3_0_94364.iso';
|
||||
ISOMd5 := '0882D58CB53A7D0A828CC45D06C6ECD0';
|
||||
end;
|
||||
VerList.AddObject(RadStudioVersion^.Name, TObject(RadStudioVersion));
|
||||
end;
|
||||
|
||||
procedure FinallyRadStudioVersion(VerList:TStringList);
|
||||
var
|
||||
RadStudioVersion:PRadStudioVersion;
|
||||
begin
|
||||
while VerList.Count>0 do
|
||||
begin
|
||||
RadStudioVersion:=PRadStudioVersion(VerList.Objects[0]);
|
||||
if RadStudioVersion<>nil then Dispose(RadStudioVersion);
|
||||
VerList.Delete(0);
|
||||
end;
|
||||
end;
|
||||
|
||||
initialization
|
||||
RadStudioVersionList:= TStringList.Create;
|
||||
InitRadStudioVersion(RadStudioVersionList);
|
||||
finalization
|
||||
FinallyRadStudioVersion(RadStudioVersionList);
|
||||
FreeAndNil(RadStudioVersionList);
|
||||
|
||||
end.
|
251
10.3.2/Keygen/Sha1.pas
Normal file
251
10.3.2/Keygen/Sha1.pas
Normal file
@ -0,0 +1,251 @@
|
||||
{
|
||||
|
||||
***************************************************
|
||||
* A binary compatible SHA1 implementation *
|
||||
* written by Dave Barton (davebarton@bigfoot.com) *
|
||||
***************************************************
|
||||
* 160bit hash size *
|
||||
***************************************************
|
||||
|
||||
}
|
||||
unit SHA1;
|
||||
|
||||
interface
|
||||
uses
|
||||
Windows,SysUtils;
|
||||
|
||||
type
|
||||
TSHA1Digest = array[0..19] of byte;
|
||||
TSHA1Context = record
|
||||
Hash: array[0..4] of DWord;
|
||||
Hi, Lo: integer;
|
||||
Buffer: array[0..63] of byte;
|
||||
Index: integer;
|
||||
end;
|
||||
|
||||
procedure SHA1Init(var Context: TSHA1Context);
|
||||
procedure SHA1Update(var Context: TSHA1Context; Buffer: pointer; Len: integer);
|
||||
procedure SHA1Final(var Context: TSHA1Context; var Digest: TSHA1Digest);
|
||||
|
||||
|
||||
function SHA1String(M: AnsiString): TSHA1Digest;
|
||||
function SHA1File(N: string): TSHA1Digest;
|
||||
function SHA1Print(Digest: TSHA1Digest): AnsiString;
|
||||
|
||||
//******************************************************************************
|
||||
implementation
|
||||
{
|
||||
$R-
|
||||
}
|
||||
|
||||
function LRot16(X: Word; c: longint): Word;
|
||||
begin
|
||||
LRot16 := (X shl c) or (X shr (16 - c));
|
||||
end;
|
||||
|
||||
|
||||
function RRot16(X: Word; c: longint): Word;
|
||||
begin
|
||||
RRot16 := (X shr c) or (X shl (16 - c));
|
||||
end;
|
||||
|
||||
|
||||
function LRot32(X: DWord; c: longint): DWord;
|
||||
begin
|
||||
LRot32 := (X shl c) or (X shr (32 - c));
|
||||
end;
|
||||
|
||||
|
||||
function RRot32(X: DWord; c: longint): DWord;
|
||||
begin
|
||||
RRot32 := (X shr c) or (X shl (32 - c));
|
||||
end;
|
||||
|
||||
|
||||
|
||||
//******************************************************************************
|
||||
|
||||
function F1(x, y, z: DWord): DWord;
|
||||
begin
|
||||
Result := z xor (x and (y xor z));
|
||||
end;
|
||||
|
||||
function F2(x, y, z: DWord): DWord;
|
||||
begin
|
||||
Result := x xor y xor z;
|
||||
end;
|
||||
|
||||
function F3(x, y, z: DWord): DWord;
|
||||
begin
|
||||
Result := (x and y) or (z and (x or y));
|
||||
end;
|
||||
|
||||
//******************************************************************************
|
||||
|
||||
function RB(A: DWord): DWord;
|
||||
begin
|
||||
Result := (A shr 24) or ((A shr 8) and $FF00) or ((A shl 8) and $FF0000) or (A shl 24);
|
||||
end;
|
||||
|
||||
procedure SHA1Compress(var Data: TSHA1Context);
|
||||
var
|
||||
A, B, C, D, E, T: DWord;
|
||||
W: array[0..79] of DWord;
|
||||
i: integer;
|
||||
begin
|
||||
Move(Data.Buffer, W, Sizeof(Data.Buffer));
|
||||
for i := 0 to 15 do
|
||||
W[i] := RB(W[i]);
|
||||
for i := 16 to 79 do
|
||||
W[i] := LRot32(W[i - 3] xor W[i - 8] xor W[i - 14] xor W[i - 16], 1);
|
||||
A := Data.Hash[0]; B := Data.Hash[1]; C := Data.Hash[2]; D := Data.Hash[3]; E := Data.Hash[4];
|
||||
for i := 0 to 19 do
|
||||
begin
|
||||
T := LRot32(A, 5) + F1(B, C, D) + E + W[i] + $5A827999;
|
||||
E := D; D := C; C := LRot32(B, 30); B := A; A := T;
|
||||
end;
|
||||
for i := 20 to 39 do
|
||||
begin
|
||||
T := LRot32(A, 5) + F2(B, C, D) + E + W[i] + $6ED9EBA1;
|
||||
E := D; D := C; C := LRot32(B, 30); B := A; A := T;
|
||||
end;
|
||||
for i := 40 to 59 do
|
||||
begin
|
||||
T := LRot32(A, 5) + F3(B, C, D) + E + W[i] + $8F1BBCDC;
|
||||
E := D; D := C; C := LRot32(B, 30); B := A; A := T;
|
||||
end;
|
||||
for i := 60 to 79 do
|
||||
begin
|
||||
T := LRot32(A, 5) + F2(B, C, D) + E + W[i] + $CA62C1D6;
|
||||
E := D; D := C; C := LRot32(B, 30); B := A; A := T;
|
||||
end;
|
||||
Data.Hash[0] := Data.Hash[0] + A;
|
||||
Data.Hash[1] := Data.Hash[1] + B;
|
||||
Data.Hash[2] := Data.Hash[2] + C;
|
||||
Data.Hash[3] := Data.Hash[3] + D;
|
||||
Data.Hash[4] := Data.Hash[4] + E;
|
||||
FillChar(W, Sizeof(W), 0);
|
||||
FillChar(Data.Buffer, Sizeof(Data.Buffer), 0);
|
||||
end;
|
||||
|
||||
//******************************************************************************
|
||||
|
||||
procedure SHA1Init(var Context: TSHA1Context);
|
||||
begin
|
||||
Context.Hi := 0; Context.Lo := 0;
|
||||
Context.Index := 0;
|
||||
FillChar(Context.Buffer, Sizeof(Context.Buffer), 0);
|
||||
Context.Hash[0] := $67452301;
|
||||
Context.Hash[1] := $EFCDAB89;
|
||||
Context.Hash[2] := $98BADCFE;
|
||||
Context.Hash[3] := $10325476;
|
||||
Context.Hash[4] := $C3D2E1F0;
|
||||
end;
|
||||
|
||||
//******************************************************************************
|
||||
|
||||
procedure SHA1UpdateLen(var Context: TSHA1Context; Len: integer);
|
||||
var
|
||||
i, k: integer;
|
||||
begin
|
||||
for k := 0 to 7 do
|
||||
begin
|
||||
i := Context.Lo;
|
||||
Inc(Context.Lo, Len);
|
||||
if Context.Lo < i then
|
||||
Inc(Context.Hi);
|
||||
end;
|
||||
end;
|
||||
|
||||
//******************************************************************************
|
||||
|
||||
procedure SHA1Update(var Context: TSHA1Context; Buffer: pointer; Len: integer);
|
||||
type
|
||||
PByte = ^Byte;
|
||||
begin
|
||||
SHA1UpdateLen(Context, Len);
|
||||
while Len > 0 do
|
||||
begin
|
||||
Context.Buffer[Context.Index] := PByte(Buffer)^;
|
||||
Inc(PByte(Buffer));
|
||||
Inc(Context.Index);
|
||||
Dec(Len);
|
||||
if Context.Index = 64 then
|
||||
begin
|
||||
Context.Index := 0;
|
||||
SHA1Compress(Context);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
//******************************************************************************
|
||||
|
||||
procedure SHA1Final(var Context: TSHA1Context; var Digest: TSHA1Digest);
|
||||
type
|
||||
PDWord = ^DWord;
|
||||
begin
|
||||
Context.Buffer[Context.Index] := $80;
|
||||
if Context.Index >= 56 then
|
||||
SHA1Compress(Context);
|
||||
PDWord(@Context.Buffer[56])^ := RB(Context.Hi);
|
||||
PDWord(@Context.Buffer[60])^ := RB(Context.Lo);
|
||||
SHA1Compress(Context);
|
||||
Context.Hash[0] := RB(Context.Hash[0]);
|
||||
Context.Hash[1] := RB(Context.Hash[1]);
|
||||
Context.Hash[2] := RB(Context.Hash[2]);
|
||||
Context.Hash[3] := RB(Context.Hash[3]);
|
||||
Context.Hash[4] := RB(Context.Hash[4]);
|
||||
Move(Context.Hash, Digest, Sizeof(Digest));
|
||||
FillChar(Context, Sizeof(Context), 0);
|
||||
end;
|
||||
|
||||
|
||||
function SHA1String(M: AnsiString): TSHA1Digest;
|
||||
var
|
||||
Context: TSHA1Context;
|
||||
begin
|
||||
SHA1Init(Context);
|
||||
SHA1Update(Context, PAnsiChar(M), length(M));
|
||||
SHA1Final(Context, Result);
|
||||
end;
|
||||
|
||||
function SHA1File(N: string): TSHA1Digest;
|
||||
var
|
||||
FileHandle: THandle;
|
||||
MapHandle: THandle;
|
||||
ViewPointer: pointer;
|
||||
Context: TSHA1Context;
|
||||
begin
|
||||
SHA1Init(Context);
|
||||
FileHandle := CreateFile(pChar(N), GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE,
|
||||
nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_SEQUENTIAL_SCAN, 0);
|
||||
if FileHandle <> INVALID_HANDLE_VALUE then try
|
||||
MapHandle := CreateFileMapping(FileHandle, nil, PAGE_READONLY, 0, 0, nil);
|
||||
if MapHandle <> 0 then try
|
||||
ViewPointer := MapViewOfFile(MapHandle, FILE_MAP_READ, 0, 0, 0);
|
||||
if ViewPointer <> nil then try
|
||||
SHA1Update(Context, ViewPointer, GetFileSize(FileHandle, nil));
|
||||
finally
|
||||
UnmapViewOfFile(ViewPointer);
|
||||
end;
|
||||
finally
|
||||
CloseHandle(MapHandle);
|
||||
end;
|
||||
finally
|
||||
CloseHandle(FileHandle);
|
||||
end;
|
||||
SHA1Final(Context, Result);
|
||||
end;
|
||||
|
||||
function SHA1Print(Digest: TSHA1Digest): AnsiString;
|
||||
var
|
||||
I: byte;
|
||||
const
|
||||
Digits: array[0..15] of AnsiChar =
|
||||
('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
|
||||
begin
|
||||
Result := '';
|
||||
for I := 0 to 19 do Result := Result + Digits[(Digest[I] shr 4) and $0F] + Digits[Digest[I] and $0F];
|
||||
end;
|
||||
|
||||
end.
|
BIN
10.3.2/Release/Activator.exe
Normal file
BIN
10.3.2/Release/Activator.exe
Normal file
Binary file not shown.
37
10.3.2/Release/Readme.txt
Normal file
37
10.3.2/Release/Readme.txt
Normal file
@ -0,0 +1,37 @@
|
||||
为了便于在 Lite 15.x 中使用大侠们的特别补丁,初步写成这个:Activator.exe
|
||||
|
||||
他的主要作用:
|
||||
|
||||
1、整合各位大虾的 Keygen
|
||||
2、相对原始部署方式,这个 Activator 实现“一键激活”!
|
||||
|
||||
使用方法:
|
||||
|
||||
1、执行 Activator.exe
|
||||
|
||||
发布历史:
|
||||
|
||||
2019.07.22 - v15.2.1
|
||||
|
||||
1、根据 26.0.34749.6593 原版制作,基于 RADStudioKeyPatch.exe 的成果
|
||||
2、根据 wg961423 的反馈完善对 macOS64 的支持
|
||||
|
||||
2019.02.16 - v15.1
|
||||
|
||||
1、根据 26.0.33219.4899 原版制作,基于 RADStudioKeyPatch_Lite.exe 的成果
|
||||
|
||||
2018.11.26 - v15.0
|
||||
|
||||
1、根据 26.0.32429.4364 原版制作,基于 RadStudioKeygenSourceCodeV10.3.4364.rar 的成果
|
||||
|
||||
已知问题:
|
||||
|
||||
1、在一些操作系统上如果出现安全提示,直接确定即可。
|
||||
|
||||
特别感谢:
|
||||
|
||||
1、elseif, tonzi, freecat, unis, x-force, cjack, c5soft 等大侠的特别补丁,感谢诸位我知道的不知道的的大虾们的辛勤劳动!
|
||||
2、iny、nevergrief、snakejiao、star5、tintin1943、ti9er、wang_80919、wuxiangyang、wg961423 等等我知道的不知道的的网友们的热情测试!
|
||||
3、andreas hausladen 等大虾们的无私贡献!
|
||||
|
||||
O(∩_∩)O~
|
Loading…
Reference in New Issue
Block a user