📄 unit_frmmain.pas
字号:
unit Unit_FrmMain;
interface
uses
Windows, Messages, SysUtils, Variants, Graphics, Controls, Forms,
Dialogs, StdCtrls, Classes, ExtCtrls, Menus;
type
TFrmMain = class(TForm)
SaveDialog1: TSaveDialog;
Memo1: TMemo;
Panel1: TPanel;
Label3: TLabel;
Button3: TButton;
Edit_EncyMark: TEdit;
Edit_MailAddress: TEdit;
Image1: TImage;
Button1: TButton;
Label1: TLabel;
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmMain: TFrmMain;
implementation
uses
Unit_Common,
Unit_MyCyBuf,
Lh5Unit2,
Unit_FrmChooseIcon,
Unit_ModifIconByStream;
{$R *.dfm}
procedure TFrmMain.Button3Click(Sender: TObject);
const
AspUrl: string = 'http://www.abc.com/login.asp';
iFileMark: integer = 98; {加密标志,和MainExe.dpr对应}
var
i: integer;
StrTemp, StrWrite: string;
MyStreamHead, MyStreamOrg: TmemoryStream;
MyStreamEncy, MyStreamPack: TMemoryStream;
MyEncyStreamInfo: TEncyStreamInfo;
EncyBuf: Unit_MyCyBuf.TBuf;
iReadSize: integer;
strInfo: string;
iInfoLength: integer;
iEncyMark, iCode: integer;
MyRes: TResourceStream; {$R Head.Res}
begin
if Trim(Edit_MailAddress.Text) = '' then
begin
Application.MessageBox('信箱不能为空,请重新输入!', Pchar(Application.Title), MB_ICONINFORMATION);
Edit_MailAddress.SetFocus;
Exit;
end;
if pos('@', Edit_MailAddress.Text) = 0 then
begin
Application.MessageBox('信箱格式不正确,请重新输入!', Pchar(Application.Title), MB_ICONINFORMATION);
Edit_MailAddress.SetFocus;
Exit;
end;
if Trim(Edit_EncyMark.Text) = '' then
begin
Application.MessageBox('变形数字不能为空,请重新输入!', Pchar(Application.Title), MB_ICONINFORMATION);
Edit_EncyMark.SetFocus;
Exit;
end;
Val(Trim(Edit_EncyMark.Text), iEncyMark, iCode);
if iCode <> 0 then
begin
Application.MessageBox('变形数字必须为数字,请重新输入!', Pchar(Application.Title), MB_ICONINFORMATION);
Edit_EncyMark.SetFocus;
Exit;
end;
if SaveDialog1.Execute then
begin
MyStreamEncy := TMemoryStream.Create;
MyStreamHead := TMemoryStream.Create;
MyStreamOrg := TMemoryStream.Create;
MyStreamPack := TMemoryStream.Create;
MyRes := TResourceStream.Create(HInstance, 'SdkHead', 'exefile');
MyRes.SaveToStream(MyStreamHead); // Cjt_SaveSdkHeadToStream(MyStreamHead);
MyRes.Free;
Cjt_ModifIconByStream(Image1.Picture.Icon, MyStreamHead);
MyStreamHead.Seek(0, soFromEnd); //移动指针到尾部
MyEncyStreamInfo.iEncyKey := iEncyMark;
MyStreamOrg.Clear; MyStreamEncy.Clear; MyStreamPack.Clear;
MyRes := TResourceStream.Create(HInstance, 'Mir2Dll', 'dllfile');
MyRes.SaveToStream(MyStreamOrg); // Cjt_SaveMir2DllToStream(MyStreamOrg);
MyRes.Free;
MyStreamOrg.Position := 0;
repeat
iReadSize := MyStreamOrg.Read(EncyBuf, sizeof(EncyBuf));
MyEncyBuf(EncyBuf, iReadSize, MyEncyStreamInfo.iEncyKey);
MyStreamEncy.Write(EncyBuf, iReadSize);
until MyStreamOrg.Position >= MyStreamOrg.Size;
MyStreamEncy.Position := 0;
LHACompress(MyStreamEncy, MyStreamPack);
MyStreamPack.Position := 0;
MyEncyStreamInfo.iPackSize := MyStreamPack.Size;
MyStreamHead.CopyFrom(MyStreamPack, MyStreamPack.Size);
MyStreamHead.Write(MyEncyStreamInfo, Sizeof(MyEncyStreamInfo));
MyEncyStreamInfo.iEncyKey := iEncyMark;
MyStreamOrg.Clear; MyStreamEncy.Clear; MyStreamPack.Clear;
MyRes := TResourceStream.Create(HInstance, 'MainExe', 'exefile');
MyRes.SaveToStream(MyStreamOrg); // Cjt_SaveMainExeToStream(MyStreamOrg);
MyRes.Free;
MyStreamOrg.Position := 0;
repeat
iReadSize := MyStreamOrg.Read(EncyBuf, sizeof(EncyBuf));
MyEncyBuf(EncyBuf, iReadSize, MyEncyStreamInfo.iEncyKey);
MyStreamEncy.Write(EncyBuf, iReadSize);
until MyStreamOrg.Position >= MyStreamOrg.Size;
MyStreamEncy.Position := 0;
LHACompress(MyStreamEncy, MyStreamPack);
MyStreamPack.Position := 0;
MyEncyStreamInfo.iPackSize := MyStreamPack.Size;
MyStreamHead.CopyFrom(MyStreamPack, MyStreamPack.Size);
MyStreamHead.Write(MyEncyStreamInfo, Sizeof(MyEncyStreamInfo));
StrTemp := AspUrl + #13 + Trim(Edit_MailAddress.Text);
StrWrite := '';
for i := 1 to Length(StrTemp) do StrWrite := StrWrite + Chr(Ord(StrTemp[i]) - iFileMark);
strInfo := StrWrite;
iInfoLength := Length(strInfo);
MyStreamHead.Write(strInfo[1], iInfoLength);
MyStreamHead.Write(iInfoLength, sizeof(iInfoLength));
MyStreamHead.SaveToFile(SaveDialog1.FileName);
MyStreamEncy.Free;
MyStreamHead.Free;
MyStreamOrg.Free;
MyStreamPack.Free;
Application.MessageBox('服务端生成完毕!', Pchar(Application.Title), MB_ICONINFORMATION);
end;
end;
procedure TFrmMain.Button1Click(Sender: TObject);
begin
if FrmChooseIcon.ShowModal = mrok then
if not (FrmChooseIcon.Image1.Picture.Icon.Empty) then
Image1.Picture.Icon.Assign(FrmChooseIcon.Image1.Picture.Icon);
end;
procedure TFrmMain.FormCreate(Sender: TObject);
begin
//使Edit1只接收数字
SetWindowLong(Edit_EncyMark.Handle, GWL_STYLE, GetWindowLong(Edit_EncyMark.Handle, GWL_STYLE) or ES_NUMBER);
Application.Title := '传奇2变形特征码+极度流畅终结版Build20040615';
Caption := Application.Title;
Edit_MailAddress.Clear;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -