📄 unitbuilder.pas
字号:
unit UnitBuilder;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TFormBuilder = class(TForm)
StatusBar1: TStatusBar;
Label1: TLabel;
Edit_File: TEdit;
Label2: TLabel;
Edit_DNS: TEdit;
Label3: TLabel;
Edit_Port: TEdit;
Button1: TButton;
Button2: TButton;
SD_Client: TSaveDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormBuilder: TFormBuilder;
implementation
{$R *.dfm}
uses
Unit_Clinet001;
const
DNS_offset = $000030D4;
File_Offset = $000031E4;
Port_Offset = $00002FBA;
function Clinet001SaveFile(SaveFile: String):Boolean;
var
hFile:THandle;
BytesWrite: dword;
begin
Result:=False;
hFile := CreateFile(Pchar(SaveFile),GENERIC_READ or GENERIC_WRITE,FILE_SHARE_READ,nil,CREATE_ALWAYS,0,0);
if hFile = INVALID_HANDLE_VALUE then Exit;
if WriteFile(hFile,Clinet001Buf,Clinet001Size, BytesWrite, nil) then Result:=True;
CloseHandle(hFile);
end;
Procedure KWrite(kfil: string; koff: LongInt; kdat: string; klen: LongInt);
var
f: File of Byte;
i: LongInt;
c: Byte;
begin
AssignFile(f,kfil);
Reset(f);
Seek(f,koff);
for i:=1 to klen do begin
if i>length(kdat)
then c:=0
else c:=ord(kdat[i]);
Write(f,c);
end;
CloseFile(f);
end;
procedure TFormBuilder.Button1Click(Sender: TObject);
var
StrFile: String;
iPort, iTemp: Integer;
hFile: THandle;
dwBytesWrite: DWORD;
begin
if SD_Client.Execute then
begin
StrFile := SD_Client.FileName;
if Length(StrFile) = 0 then Exit;
DeleteFile(Pchar(StrFile));
if Clinet001SaveFile(StrFile) then
begin
try
iPort := StrToInt(Edit_Port.Text);
if (iPort < 1) and (iPort > 65535) then
begin
ShowMessage('请输入正确的端口');
Exit;
end;
hFile := CreateFile(Pchar(StrFile), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
if hFile = INVALID_HANDLE_VALUE then Exit;
// 写入端口信息
SetFilePointer(hFile, Port_Offset, nil, FILE_BEGIN);
iTemp := 0;
WriteFile(hFile, iTemp, Sizeof(DWORD), dwBytesWrite, nil);
SetFilePointer(hFile, Port_Offset, nil, FILE_BEGIN);
WriteFile(hFile, iPort, Sizeof(DWORD), dwBytesWrite, nil);
CloseHandle(hFile);
// 写入DNS
KWrite(StrFile, DNS_offset, Edit_DNS.Text, 36);
// 写入文件名
KWrite(StrFile, File_Offset, Edit_File.Text, 36);
ShowMessage('生成成功:' + StrFile);
except
end;
end;
end;
end;
procedure TFormBuilder.Button2Click(Sender: TObject);
begin
Close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -