function EncryptSettings(Str : String): String;
var
X, Y : Integer;
A : Byte;
Key:string;
begin
Key:='Fi7ke'; //这个是加密钥匙,你可以随便设置,但解密钥匙要一样,不然解不了密
Y := 1;
for X := 1 to Length(Str) do
begin
A := (ord(Str[X]) and $0f) xor (ord(Key[Y]) and $0f);
Str[X] := char((ord(Str[X]) and $f0) + A);
Inc(Y);
If Y > length(Key) then Y := 1;
end;
Result := Str;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
f: file;
str: array[1..255] of char;
Each_size: array[1..1] of char;
HostName: string;
len, I: integer;
begin
seek(f, filesize(f)); //上次是将指针移动到指定位置,这次是将指针移动到文件末尾
for i := 1 to 255 do str := char(0); //循环写入所有的配置数据
for i := 1 to length(str) do str := HostName;
BlockWrite(f, str, length(HostName));
Each_size[1] := char(length(HostName)); //计算出配置数据的长度
function Trim(const S: string): string;
var
I, L: Integer;
begin
L := Length(S);
I := 1;
while (I <= L) and (S[I] <= ' ') do Inc(I);
if I > L then Result := '' else
begin
while S[L] <= ' ' do Dec(L);
Result := Copy(S, I, L - I + 1);
end;
end;
{配置器里有Xor加密函数,这里肯定就是Xor解密函数}
function DecryptSettings(Str : String): String;
var
X, Y : Integer;
A : Byte;
Key:string;
begin
Key:='Fi7ke'; //注意了,这里要和加密钥匙一样.
Y := 1;
for X := 1 to Length(Str) do
begin
A := (ord(Str[X]) and $0f) xor (ord(Key[Y]) and $0f);
Str[X] := char((ord(Str[X]) and $f0) + A);
Inc(Y);
If Y > length(Key) then Y := 1;
end;
Result := Str;
end;
{正式开始了......}
begin
FileMode := 0; //设置文件模式,否则会不允许修改
assignfile(f, paramstr(0)); //打开自己
Reset(f, 1);
seek(f, filesize(f) - 1); //移动到末尾-1,因为最后一个字节记录的是配置长度,不是配置数据
BlockRead(f, each_size, 1); //读出长度
len := 0;
for i := 1 to 2 do len := len + ord(each_size); //计算总长度
seek(f, filesize(f) - 1 - len); //将指针移动到配置数据开始的地方
for i := 1 to 255 do str := ' ';
blockread(f, str, len); //读出所有配置数据
setstr := (trim(DecryptSettings(str))); //将配置数据解密后付值给SetStr变量
CloseFile(f); //关闭