如何把信息写入exe文件?(50分)

  • 主题发起人 主题发起人 wyd258963
  • 开始时间 开始时间
W

wyd258963

Unregistered / Unconfirmed
GUEST, unregistred user!
我想把信息写入exe文件,比如:我想在用户登入的次数写入exe文件,这能实现吗?
 
给段代码:
procedure TForm1.Button1Click(Sender: TObject);
var
Dir: PChar;
Ch: Array[0..3] of Char;
Stream1,Stream2: TMemoryStream;
begin
GetMem(Dir,254);
GetTempPath(254, Dir);
TempName:=StrPas(Dir)+'o.o.0.o.o.exe';
CopyFile(PChar(ParamStr(0)),PChar(TempName),False);
Stream1:=TMemoryStream.Create;
Stream2:=TMemoryStream.Create;
Stream1.LoadFromFile(TempName);
//在尾部加入4个随机字节
Randomize;
Ch[0]:=Chr(Random(256));
Ch[1]:=Chr(Random(256));
Ch[2]:=Chr(Random(256));
Ch[3]:=Chr(Random(256));
Stream1.Seek(0,soFromEnd);
Stream1.Write(Ch,4);
//修改偏移48的一个字节,记录程序运行次数
Stream1.Seek(0,soFrombegin
ning);
Stream2.CopyFrom(Stream1,48);
Stream1.Seek(48,soFrombegin
ning);
Stream1.Read(Ch,1);
Ch[0]:=Chr(1+Ord(Ch[0]));
Stream2.Write(Ch,1);
Stream1.Seek(49,soFrombegin
ning);
Stream2.CopyFrom(Stream1,Stream1.Size-49);
Stream2.SaveToFile(TempName);
Stream1.Free;
Stream2.Free;
FreeMem(Dir);
repeat Close Until FileExists(TempName);
end;
 
我想请问下:假如我保存到应用程序本身,对该文件会不会有影响?
 
追加写到EXE尾部就可以了,EXE的长度不是根据FILESIZE决定的,而是符合PE结构,所以写到尾部很安全!
 
如果不改变EXE文件的结构,对EXE是不会造成影响的
 
除了这种方法外,还有其它简单一点的方法吗?
 
如何还有其它简单一点的方法,虽然现在没有分啦,但等下我可以开另一贴加分
 
TempName:=StrPas(Dir)+'o.o.0.o.o.exe';是什么意思?
 
后退
顶部