主题:在EXE末尾添加数据
program lx;
uses
dos;
var
f:file;
ch:char;
i,len,exelen:longint;
procedure getexelen(name: pathstr; var exelen: longint);
var
h: array[1..3] of word;
f: file;
begin
exelen:=0;
assign(f,name);
reset(f, 1);
blockread(f, h, sizeof(h));
exelen:=longint(h[3]-1)*512+h[2];
close(f);
end;
begin
getexelen(paramstr(0), exelen);
assign(f, paramstr(0));
reset(f, 1);
len:=filesize(f);
for i:=exelen+1 to len-1 do begin
blockread(f, ch, 1);
write(ch);
end;
close(f);
end.
将这个程序保存为a.pas, 编译得到a.exe.
现在运行这个程序, 什么也不会显示.
开一个DOS窗口, 进入tp所在文件夹, 输入一行:
copy /b a.exe+a.pas a.exe /y
也可以把a.pas换成其他文本文件. 注意每次执行这个命令前都要重新编译一下a.exe.
再运行一下a.exe, 有什么效果大家自己试试就知道了.
以上
uses
dos;
var
f:file;
ch:char;
i,len,exelen:longint;
procedure getexelen(name: pathstr; var exelen: longint);
var
h: array[1..3] of word;
f: file;
begin
exelen:=0;
assign(f,name);
reset(f, 1);
blockread(f, h, sizeof(h));
exelen:=longint(h[3]-1)*512+h[2];
close(f);
end;
begin
getexelen(paramstr(0), exelen);
assign(f, paramstr(0));
reset(f, 1);
len:=filesize(f);
for i:=exelen+1 to len-1 do begin
blockread(f, ch, 1);
write(ch);
end;
close(f);
end.
将这个程序保存为a.pas, 编译得到a.exe.
现在运行这个程序, 什么也不会显示.
开一个DOS窗口, 进入tp所在文件夹, 输入一行:
copy /b a.exe+a.pas a.exe /y
也可以把a.pas换成其他文本文件. 注意每次执行这个命令前都要重新编译一下a.exe.
再运行一下a.exe, 有什么效果大家自己试试就知道了.
以上