直接修改exe文件本身的源代码。注意调试时显示的次数
(2009-12-23 15:33:43)
标签:
it |
分类: IT(编程) |
直接修改exe文件本身的源代码。注意调试时显示的次数始终是0,因为调试时每次都要重写可执行文件。
请执行生成的exe文件查看运行结果。
本程序仅能运行50次。
unit Unit1;
interface
uses
Windows,
Messages, SysUtils,
Variants, Classes,
Graphics, Controls,
Forms,
Dialogs;
type
TForm1
= class(TForm)
procedure
FormCreate(Sender: TObject);
procedure
FormDestroy(Sender: TObject);
private
{ Private
declarations }
usedTimes:byte;
public
{ Public
declarations }
end;
var
Form1:
TForm1;
implementation
{$R *.dfm}
procedure
TForm1.FormCreate(Sender: TObject);
var
fs:TFileStream;
begin
fs:=TFileStream.Create(application.ExeName,fmopenread
or fmsharedenynone);
fs.Seek(-1,soFromEnd);
fs.Read(usedTimes,1);
fs.Free;
showMessage('你已使用了'+intToStr(usedTimes)+'次!只能使用50次。');
if
usedTimes>50
then application.Terminate;
//限制使用50次
end;
procedure
TForm1.FormDestroy(Sender: TObject);
var
f:Textfile;
fs:TFileStream;
i:byte;
begin
i:=usedTimes+1;
copyfile('project1.exe','a.exe',false);
fs:=TFilestream.Create('a.exe',fmopenwrite or
fmshareExclusive);
fs.Seek(-1,soFromEnd);
fs.Write(i,1);
fs.Free;
assignfile(f,'delSelf.bat');
rewrite(f);
writeln(f,'del project1.exe');//+#10+'ren
a.exe project1.exe'+#10+'del
%0');
writeln(f,'ren a.exe
project1.exe');
writeln(f,'del %0');
closefile(f);
winExec('delSelf.bat',sw_hide);
end;