病毒木马的入侵并潜伏在用户计算机上总是有着某种目的,例如获取用户隐私的办公文件或是账号密码,或是控制肉鸡,或是进行加密磁盘文件然后进行勒索。
对用户桌面进行截屏,获取截屏数据,能够让病毒木马的控制者直接观看到用户计算机的画面,直观地了解到目前计算机的操作和状态,便于监控用户计算机的屏幕,如果截屏频率够快,还能连成一段视频。
该函数检索指定窗口的客户区域,或整个屏幕上显示上下文环境的句柄,以后可以在GDI函数中使用该句柄来在设备上下文环境中绘图。
函数声明:
HDC WINAPI GetDC(
_In_opt_ HWND hWnd);
参数说明:
返回值:
对指定的源设备环境区域中的像素进行位块转换(Bit Block),以传送到目标设备环境。
函数声明:
WINGDIAPI BOOL WINAPI BitBlt(
_In_ HDC hdc,
_In_ int x,
_In_ int y,
_In_ int cx,
_In_ int cy,
_In_opt_ HDC hdcSrc,
_In_ int x1,
_In_ int y1,
_In_ DWORD rop);
参数说明:
值 | 含义 |
---|---|
SRCCOPY | 将源矩形区域直接复制到目标矩形区域 |
SRCAND | 通过使用AND操作符将源和目标矩形区域内的颜色合并 |
SRCPAINT | 通过使用OR操作符将源和目标矩形区域内的颜色合并 |
返回值:
结构体定义:
typedef struct _ICONINFO {
BOOL fIcon;
DWORD xHotspot;
DWORD yHotspot;
HBITMAP hbmMask;
HBITMAP hbmColor;
} ICONINFO;
成员说明:
创建子目录,每两秒截一次屏,并保存在该子目录
// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include
#include
#include "resource.h"
#include "ConsoleApplication1.h"
#include
#include
#include
#include
#include
BOOL SaveBmp(HBITMAP hBmp, wchar_t *filename)
{
CImage image;
image.Attach(hBmp);
image.Save(filename);
return TRUE;
}
BOOL Get_screen(wchar_t *filename)
{
HWND hDesktopWnd = GetDesktopWindow();
HDC hdc = GetDC(hDesktopWnd);
HDC mdc = CreateCompatibleDC(hdc);
int dwScreenW = GetSystemMetrics(SM_CXSCREEN);
int dwScreenH = GetSystemMetrics(SM_CYSCREEN);
HBITMAP bmp = CreateCompatibleBitmap(hdc, dwScreenW, dwScreenH);
HBITMAP holdbmp = (HBITMAP)SelectObject(mdc, bmp);
BitBlt(mdc, 0, 0, dwScreenW, dwScreenH, hdc, 0, 0, SRCCOPY);
SaveBmp(bmp, filename);
return TRUE;
}
int main()
{
_wmkdir(L"path");
for (int i = 0; i < 5; ++i)
{
wchar_t filename1[5][40] = {L"1.png", L"2.png", L"3.png", L"4.png", L"5.png"};
wchar_t filepath[20] = L"path";
wchar_t filename[40] = { 0 };
wsprintf(filename, L".\\%s\\%s", filepath, filename1[i]);
printf("%ws\n", filename);
BOOL bRet = Get_screen(filename);
if (bRet)
{
printf("screen success!\n");
}
Sleep(2000);
//每两秒抓一次截图
}
return 0;
}
可利用桌面截屏功能+数据压缩功能+传输功能,实现固定频率截屏并回传功能。