#ifndef __SHELL_CODE_H__ #define __SHELL_CODE_H__ /* #ifndef _WIN64 typedef HANDLE (__stdcall *CREATEFILE)(LPCTSTR lpFileName, \ DWORD dwDesiredAccess, \ DWORD dwShareMode, \ LPSECURITY_ATTRIBUTES lpSecurityAttributes, \ DWORD dwCreationDisposition, \ DWORD dwFlagsAndAttributes, \ HANDLE hTemplateFile); typedef BOOL (__stdcall *WRITEFILE)(HANDLE hFile, \ LPCVOID lpBuffer, \ DWORD nNumberOfBytesToWrite, \ LPDWORD lpNumberOfBytesWritten, \ LPOVERLAPPED lpOverlapped); typedef HRESULT (__stdcall *CLOSEHANDLE)(HANDLE hHandle); typedef BOOL (__stdcall *SHELLEXECUTEEX)(SHELLEXECUTEINFO *pExecInfo); typedef UINT (__stdcall *WINEXEC)(LPCSTR lpCmdLine,UINT uCmdShow); typedef HRESULT (__stdcall *URLDOWNLOADTOFILE)(LPUNKNOWN pCaller, \ LPCTSTR szURL, \ LPCTSTR szFileName, \ DWORD dwReserved, \ LPBINDSTATUSCALLBACK lpfnCB); typedef DWORD (__stdcall *GETTEMPPATH)(DWORD nBufferLength,LPTSTR lpBuffer); #else typedef HANDLE (__fastcall *CREATEFILE)(LPCTSTR lpFileName, \ DWORD dwDesiredAccess, \ DWORD dwShareMode, \ LPSECURITY_ATTRIBUTES lpSecurityAttributes, \ DWORD dwCreationDisposition, \ DWORD dwFlagsAndAttributes, \ HANDLE hTemplateFile); typedef BOOL (__fastcall *WRITEFILE)(HANDLE hFile, \ LPCVOID lpBuffer, \ DWORD nNumberOfBytesToWrite, \ LPDWORD lpNumberOfBytesWritten, \ LPOVERLAPPED lpOverlapped); typedef HRESULT (__fastcall *CLOSEHANDLE)(HANDLE hHandle); typedef BOOL (__fastcall *SHELLEXECUTEEX)(SHELLEXECUTEINFO *pExecInfo); typedef UINT (__fastcall *WINEXEC)(LPCSTR lpCmdLine,UINT uCmdShow); typedef HRESULT (__fastcall *URLDOWNLOADTOFILE)(LPUNKNOWN pCaller, \ LPCTSTR szURL, \ LPCTSTR szFileName, \ DWORD dwReserved, \ LPBINDSTATUSCALLBACK lpfnCB); typedef DWORD (__fastcall *GETTEMPPATH)(DWORD nBufferLength,LPTSTR lpBuffer); #endif typedef struct _SHELL_CODE_IMPORT_KERNEL32 { WCHAR wKernel32[] = {'k','e','r','n','e','l','3','2','.','d','l','l',L'\0'}; CREATEFILE ShellCodeCreateFile; WRITEFILE ShellCodeWriteFile; CLOSEHANDLE ShellCodeCloseHandle; WINEXEC ShellCodeWinExec; GETTEMPPATH ShellCodeGetTempPath; }SHELL_CODE_IMPORT_KERNEL32,*PSHELL_CODE_IMPORT_KERNEL32; typedef struct _SHELL_CODE_IMPORT_URLMON { WCHAR wUrlMon[] = {'u','r','l','m','o','n','.','d','l','l',L'\0'}; URLDOWNLOADTOFILE ShellCodeUrlDownloadToFile; }SHELL_CODE_IMPORT_URLMON,*PSHELL_CODE_IMPORT_URLMON; typedef struct _SHELL_CODE_PARAM { ULONG ulShellCodeLength; PVOID pShellCodeStartAddress; SHELL_CODE_IMPORT_KERNEL32 ShellCodeImportKernel32; SHELL_CODE_IMPORT_URLMON ShellCodeImportUrlMon; WCHAR wUrl[MAX_PATH]; }SHELL_CODE_PARAM,*PSHELL_CODE_PARAM; */ #endif