Skip to content
This repository has been archived by the owner on Dec 27, 2023. It is now read-only.

Latest commit

 

History

History

payload

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Slime Shady

The payload uses GDI to spawn a few dozens layered / most on top / transparent windows where slimes sprites are animated. It draws on the windows using Device Independent Bitmaps. DIBs are basically a palette of RGB colors as well as an array of 1 byte pixels.

Slime01 Slime02 Slime03 Slime04 Slime05 Slime06 Slime07 Slime08 Slime09 Slime10 Slime11 Slime12

There is a master window that receives a message WM_TIMER at regular interval and that invalidates every windows' client area. This triggers WM_PAINT messages so that every window can update their window.

The genheaders.py Python script preprocesses the sprites directory and generates a valid compressed set of DIBs that the program will draw using StretchDIBits.

Thanks to kaze for inspiration and his blogposts regarding GDI.

Building the payload

To build the payload, you just have to run nmake from a VS 2017 x64 prompt.

CVE-2019-11708\payload>nmake

Microsoft (R) Program Maintenance Utility Version 14.16.27034.0
Copyright (C) Microsoft Corporation.  All rights reserved.

        taskkill /f /im payload.exe
ERROR: The process "payload.exe" not found.
        if not exist .\bin mkdir bin
        python src\genheaders.py sprites
        cl /O1 /nologo /ZI /W3 /D_AMD64_ /DWIN_X64 /sdl /Febin\payload.exe src\payload.cc /link /nologo /debug:full user32.lib
payload.cc
        del *.obj *.pdb *.idb
        if exist .\bin del bin\*.exp bin\*.ilk bin\*.lib
        start .\bin\payload.exe

This creates a payload.exe / payload.pdb file inside the payload\bin directory.