VC417 基于VC的一种简单木马的设计
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
VC自诞生以来,一直是Windows环境下最主要的应用开发系统之一,Visual c++不仅是C++语言的集成开发环境,而且与Win32紧密相连,利用Visual c++开发系统可以完成各种各样的应用程序开发,从底层软件到上层直接面向用户的软件,强大的调试功能为大型复杂软件的开发提供了有效的排错手段。
进入20世纪90年代以来,随着多媒体技术和图形图像技术的不断发展,可视化技术(Visual)得到广泛重视,越来越多的计算机专业人员和非专业人员都开始研究并应用可视化技术。所谓可视化,一般是指软件开发阶段的可视化和计算机图形技术和方法的应用。可视化编程就是软件开发阶段的可视化。Visual c++是一款很好的可视化开发工具。界面友好,缩短了开发时间,便于程序员操作。
开发环境是程序员同VC++的交互界面,通过Visual c++程序员可以直接访问C++源代码编辑器、资源编辑器、使用内部调试器还可以创建项目文件。
本程序中,〖本文来自:计算机毕业网 〗用VC++6.0中的MFC开发环境,server使用MFC中的单文档模式来实现,client使用MFC中的基本对话框模式。
think58.com
通常木马分为两种:一种是黑客可以通过远程控制的方式来获取信息,木马就是植入被黑者电脑中的服务端程序,而黑客则使用客户端程序。另一种是木马植入后,自动收集数据然后发送给黑客,使用电子邮件,MSN或者ICQ消息等。
2.3.2 木马发展
第一代木马:伪装型病毒
这种病毒通过伪装成一个合法性程序诱骗用户上当,不具备传染性。世界上第一个计算机木马是出现在1986年的PC-WRITE木马。它伪装成共享软件PC-WRITE的2.72版本,一旦用户信以为真运行该木马程序,那么他的下场就是硬盘被格式化。
第二代木马:AIDS型木马
1989年出现了AIDS木马,它利用电子邮件进行散播:给他人寄去一封含木马程序的邮件。该程序运行后,虽然不破坏数据,但它将硬盘加密锁死,然后提示受感染用户花钱消灾。这一代木马已经具备传播特征。
第三代木马:网络传播性木马
这一代木马具备了后门(一种可以为计算机系统秘密开启访问入口程序,使攻击者绕过安全程序进入系统)、记录键盘功能、远程控制等功能,利用网络协议进行攻击。 内容来自think58
常见的木马伪装技术有:1)修改图标,将服务端程序修改成HTML,TXT,ZIP等各种文件的图标,这种伪装有极大的迷惑性;2)捆绑文件,将木马捆绑在一个安装程序上面,当安装程序运行时,木马在用户毫不知情的情况下,进入系统,被捆绑的文件一般是可执行文件,如EXE,COM一类的文件;3).出错显示,当服务器端用户打开木马程序时,会弹出一个错误提示框,如“文件已破坏,无法打开”之类的信息,然而木马已经在系统种运行;4).定制端口,现在流行的技术是控制端用户可以在1024-65535之间任意选择一个端口作为木马端口,这样就给判断所感染的木马造成困难;5).自我销毁,安装木马后原木马文件将自动销毁,这样服务端就很难找到木马的来源,在没有查杀工具的帮助下,就很难删除木马了;6).木马更名,允许控制端用户自由定制安装后的木马文件名,这样就很难判断所感染的木马类型。 内容来自think58 [来源:http://www.think58.com]
当Server先在被控计算机上启动以后,Client输入被控计算机IP如:192.168.0.5,就可以连接上服务端,Client 端单击获取信息按钮,Server端收到Client发过来的消息并响应,然后Server端调用四个API函数:调用函数GetSystemInfo()来返回当前系统的信息,调用函数GlobalMemoryStatus()来获得当前可用的物理和虚拟内存信息,调用函数GetVersionEx()来返回当前操作系统的版本信息,调用函数GetSystemMetrics()来返回与Windows环境有关的信息。Server通过调用以上函数,得到系统消息,并返回给Client. Client 端收到Server返回的消息并显示在文本框中如图3-3:
copyright think58
[来源:http://think58.com]
[资料来源:www.THINK58.com]注销功能是通过以下函数实现:
int CMainFrame::LogOff() //注销
{
ExitWindowsEx(EWX_LOGOFF,0);
return 0;
}
重新启动计算机通过以下函数实现:
int CMainFrame::Reboot() //重新启动
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
DWORD dwVersion; // 版本号
dwVersion = GetVersion(); //得到WINDOWS NT或Win32的版本号
if(dwVersion < 0x80000000)
{
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
copyright think58
tkp.PrivilegeCount = 1; //设置权限
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);
ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0);
}〖本文来自:计算机毕业网 〗
else //WIN系列其它系统
{
ExitWindowsEx(EWX_FORCE | EWX_REBOOT, 0);
}
return 0;
}
关机功能通过以下函数实现:
int CMainFrame::PowerOff() //关机
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
DWORD dwVersion; // 版本号
dwVersion = GetVersion(); //得到WINDOWS NT或Win32的版本号
if(dwVersion < 0x80000000) //用于判断WIN系列,从而设置相应的权限
{
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken); [来源:http://think58.com]
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; //设置权限
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0);
}
else
{
ExitWindowsEx(EWX_FORCE | EWX_SHUTDOWN, 0);
}
return 0;
}
内容来自think58
[来源:http://www.think58.com]