functions.h
上传用户:jinandeyu
上传日期:2007-01-05
资源大小:620k
文件大小:11k
源码类别:

远程控制编程

开发平台:

WINDOWS

  1. /*  Back Orifice 2000 - Remote Administration Suite
  2.     Copyright (C) 1999, Cult Of The Dead Cow
  3.     This program is free software; you can redistribute it and/or modify
  4.     it under the terms of the GNU General Public License as published by
  5.     the Free Software Foundation; either version 2 of the License, or
  6.     (at your option) any later version.
  7.     This program is distributed in the hope that it will be useful,
  8.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  9.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  10.     GNU General Public License for more details.
  11.     You should have received a copy of the GNU General Public License
  12.     along with this program; if not, write to the Free Software
  13.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  14. The author of this program may be contacted at dildog@l0pht.com. */
  15. #ifndef __INC_FUNCTIONS_H
  16. #define __INC_FUNCTIONS_H
  17. #include<windows.h>
  18. #include<windef.h>
  19. #include<lmcons.h>
  20. #include<lmshare.h>
  21. #include<tlhelp32.h>
  22. struct PASSWORD_CACHE_ENTRY {
  23.     WORD cbEntry;  
  24.     WORD cbResource;
  25.     WORD cbPassword;
  26.     BYTE iEntry;    
  27.     BYTE nType;     
  28.     char abResource[1];
  29. };
  30. typedef BOOL (FAR PASCAL *CACHECALLBACK)( struct PASSWORD_CACHE_ENTRY FAR *pce, DWORD dwRefData );
  31. DWORD APIENTRY WNetCachePassword(LPSTR pbResource, WORD  cbResource, LPSTR pbPassword, WORD cbPassword, BYTE nType, UINT fnFlags);
  32. DWORD APIENTRY WNetGetCachedPassword(LPSTR pbResource,WORD cbResource,LPSTR pbPassword, LPWORD pcbPassword, BYTE nType );
  33. DWORD APIENTRY WNetRemoveCachedPassword(LPSTR pbResource, WORD cbResource, BYTE nType);
  34. DWORD APIENTRY WNetEnumCachedPasswords(LPSTR pbPrefix,WORD cbPrefix,BYTE nType,CACHECALLBACK pfnCallback,DWORD dwRefData);
  35. typedef BOOL (WINAPI *MODULEWALK)(HANDLE hSnapshot, LPMODULEENTRY32 lpme); 
  36. typedef BOOL (WINAPI *THREADWALK)(HANDLE hSnapshot, LPTHREADENTRY32 lpte); 
  37. typedef BOOL (WINAPI *PROCESSWALK)(HANDLE hSnapshot, LPPROCESSENTRY32 lppe); 
  38. typedef HANDLE (WINAPI *CREATESNAPSHOT)(DWORD dwFlags, DWORD th32ProcessID); 
  39. typedef DWORD (WINAPI *REGSERVICEPROC)(DWORD dwProcessId, DWORD dwServiceType); 
  40. typedef HANDLE (WINAPI *CREATEREMOTETHREAD)(HANDLE hProcess, LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId);
  41. typedef LPVOID (WINAPI *VIRTUALALLOCEX)(HANDLE hProcess, LPVOID lpAddress, DWORD dwSize, DWORD flAllocationType, DWORD flProtect);
  42. typedef BOOL (WINAPI *VIRTUALFREEEX)(HANDLE hProcess, LPVOID lpAddress, DWORD dwSize, DWORD dwFreeType);
  43. typedef BOOL (WINAPI *VIRTUALPROTECTEX)(HANDLE hProcess, LPVOID lpAddress, DWORD dwSize, DWORD flNewProtect, PDWORD lpflOldProtect);
  44. typedef DWORD (WINAPI *VIRTUALQUERYEX)(HANDLE hProcess, LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, DWORD dwLength);
  45. typedef DWORD (WINAPI *ENUMPASSWORD)(LPSTR pbPrefix, WORD  cbPrefix, BYTE  nType, CACHECALLBACK pfnCallback, DWORD dwRefData);
  46. typedef DWORD (WINAPI *WNETCLOSEENUM)(HANDLE henum);
  47. typedef DWORD (WINAPI *WNETENUMRESOURCE)(HANDLE henum, LPDWORD lpcCount, LPVOID lpBuffer, LPDWORD lpBufferSize );
  48. typedef DWORD (WINAPI *WNETOPENENUM)(DWORD dwScope, DWORD dwType, DWORD dwUsage, LPNETRESOURCE lpNetResource, LPHANDLE lphEnum );
  49. typedef DWORD (WINAPI *WNETCANCELCONNECTION2)(LPCSTR lpName, DWORD dwFlags, BOOL fForce);
  50. typedef DWORD (WINAPI *WNETADDCONNECTION2)(LPNETRESOURCEA lpNetResource, LPCSTR lpPassword, LPCSTR lpUserName, DWORD dwFlags);
  51. typedef NET_API_STATUS (NET_API_FUNCTION *LMS_NETSESSIONENUM)(IN LPWSTR servername OPTIONAL, IN LPWSTR UncClientName OPTIONAL, IN LPWSTR username OPTIONAL, IN DWORD level, OUT LPBYTE *bufptr,IN DWORD prefmaxlen, OUT LPDWORD entriesread, OUT LPDWORD totalentries, IN OUT LPDWORD resume_handle OPTIONAL);
  52. typedef NET_API_STATUS (NET_API_FUNCTION *LMS_NETSHAREENUM)(IN LPWSTR servername, IN DWORD level, OUT LPBYTE *bufptr, IN DWORD prefmaxlen, OUT LPDWORD entriesread, OUT LPDWORD totalentries, IN OUT LPDWORD resume_handle);
  53. typedef NET_API_STATUS (NET_API_FUNCTION *LMS_NETSHAREDEL)(IN LPWSTR servername, IN LPWSTR netname, IN DWORD reserved);
  54. typedef NET_API_STATUS (NET_API_FUNCTION *LMS_NETSHAREADD)(IN  LPWSTR  servername, IN  DWORD   level, IN  LPBYTE  buf, OUT LPDWORD parm_err);
  55. typedef NET_API_STATUS (NET_API_FUNCTION *LMS_NETAPIBUFFERFREE)(IN LPVOID Buffer);
  56. typedef DWORD (WINAPI *SVR_NETSESSIONENUM)(const char FAR *pszServer, short sLevel, char FAR *pbBuffer, unsigned short cbBuffer, unsigned short FAR * pcEntriesRead, unsigned short FAR * pcTotalAvail);
  57. typedef DWORD (WINAPI *SVR_NETSHAREENUM)(const char FAR *pszServer, short sLevel, char FAR *pbBuffer, unsigned short cbBuffer, unsigned short FAR * pcEntriesRead, unsigned short FAR * pcTotalAvail);
  58. typedef DWORD (WINAPI *SVR_NETSHAREDEL)(const char FAR *pszServer, const char FAR *pszNetName, unsigned short usReserved);
  59. typedef DWORD (WINAPI *SVR_NETSHAREADD)(const char FAR * pszServer, short sLevel, const char FAR * pbBuffer, unsigned short cbBuffer);
  60. typedef LONG (WINAPI *REGSETKEYSECURITY)(HKEY hKey,SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor);
  61. typedef BOOL (WINAPI *SETSECURITYDESCRIPTORDACL)(PSECURITY_DESCRIPTOR pSecurityDescriptor, BOOL bDaclPresent, PACL pDacl, BOOL bDaclDefaulted);
  62. typedef BOOL (WINAPI *GETACE)(PACL pAcl, DWORD dwAceIndex, LPVOID *pAce);
  63. typedef BOOL (WINAPI *ADDACCESSALLOWEDACE)(PACL pAcl, DWORD dwAceRevision, DWORD AccessMask, PSID pSid);
  64. typedef BOOL (WINAPI *INITIALIZEACL)(PACL pAcl, DWORD nAclLength, DWORD dwAclRevision);
  65. typedef BOOL (WINAPI *INITIALIZESECURITYDESCRIPTOR)(PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD dwRevision);
  66. typedef DWORD (WINAPI *GETLENGTHSID)(PSID pSid);
  67. typedef BOOL (WINAPI *LOOKUPACCOUNTNAME)(LPCTSTR lpSystemName, LPCTSTR lpAccountName, PSID Sid, LPDWORD cbSid, LPTSTR ReferencedDomainName, LPDWORD cbReferencedDomainName, PSID_NAME_USE peUse);
  68. typedef BOOL (WINAPI *LOOKUPACCOUNTSID)(LPCTSTR lpSystemName, PSID Sid, LPTSTR Name, LPDWORD cbName, LPTSTR ReferencedDomainName, LPDWORD cbReferencedDomainName, PSID_NAME_USE peUse);
  69. typedef BOOL (WINAPI *GETSECURITYDESCRIPTORDACL)(PSECURITY_DESCRIPTOR pSecurityDescriptor, LPBOOL lpbDaclPresent, PACL *pDacl, LPBOOL lpbDaclDefaulted);
  70. typedef BOOL (WINAPI *GETSECURITYDESCRIPTORGROUP)(PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID *pGroup, LPBOOL lpbGroupDefaulted);
  71. typedef BOOL (WINAPI *GETSECURITYDESCRIPTOROWNER)(PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID *pOwner, LPBOOL lpbOwnerDefaulted); 
  72. typedef BOOL (WINAPI *OPENPROCESSTOKEN)(HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle);
  73. typedef BOOL (WINAPI *LOOKUPPRIVILEGEVALUE)(LPCSTR lpSystemName, LPCSTR lpName, PLUID lpLuid);
  74. typedef BOOL (WINAPI *ADJUSTTOKENPRIVILEGES)(HANDLE TokenHandle, BOOL DisableAllPrivileges, PTOKEN_PRIVILEGES NewState, DWORD BufferLength, PTOKEN_PRIVILEGES PreviousState, PDWORD ReturnLength);
  75. typedef LONG (WINAPI *REGGETKEYSECURITY)(HKEY hKey, SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor, LPDWORD lpcbSecurityDescriptor);
  76. typedef SC_HANDLE (WINAPI *OPENSCMANAGER)(LPCSTR lpMachineName,LPCSTR lpDatabaseName,DWORD dwDesiredAccess);
  77. typedef SC_HANDLE (WINAPI *CREATESERVICE)(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);
  78. typedef BOOL (WINAPI *CLOSESERVICEHANDLE)(SC_HANDLE hSCObject);
  79. typedef SC_HANDLE (WINAPI *OPENSERVICE)(SC_HANDLE hSCManager, LPCSTR lpServiceName, DWORD dwDesiredAccess);
  80. typedef BOOL (WINAPI *STARTSERVICECTRLDISPATCHER)(CONST SERVICE_TABLE_ENTRYA *lpServiceStartTable);
  81. typedef SERVICE_STATUS_HANDLE (WINAPI *REGISTERSERVICECTRLHANDLER)(LPCSTR lpServiceName, LPHANDLER_FUNCTION lpHandlerProc);
  82. typedef BOOL (WINAPI *SETSERVICESTATUS)(SERVICE_STATUS_HANDLE hServiceStatus, LPSERVICE_STATUS lpServiceStatus);
  83. typedef BOOL (WINAPI *DELETESERVICE)(SC_HANDLE hService);
  84. typedef BOOL (WINAPI *GETSERVICEDISPLAYNAME)(SC_HANDLE hSCManager, LPCSTR lpServiceName, LPSTR lpDisplayName, LPDWORD lpcchBuffer);
  85. typedef BOOL (WINAPI *STARTSERVICE)(SC_HANDLE hService, DWORD dwNumServiceArgs, LPCSTR *lpServiceArgVectors);
  86. extern CREATESNAPSHOT pCreateToolhelp32Snapshot; 
  87. extern MODULEWALK  pModule32First; 
  88. extern MODULEWALK  pModule32Next; 
  89. extern PROCESSWALK pProcess32First;
  90. extern PROCESSWALK pProcess32Next;
  91. extern THREADWALK  pThread32First;
  92. extern THREADWALK  pThread32Next;
  93. extern REGSERVICEPROC pRegisterServiceProcess;
  94. extern CREATEREMOTETHREAD pCreateRemoteThread;
  95. extern VIRTUALALLOCEX pVirtualAllocEx;
  96. extern VIRTUALFREEEX pVirtualFreeEx;
  97. extern VIRTUALQUERYEX pVirtualQueryEx;
  98. extern VIRTUALPROTECTEX pVirtualProtectEx;
  99. extern ENUMPASSWORD pWNetEnumCachedPasswords;
  100. extern WNETCLOSEENUM pWNetCloseEnum;
  101. extern WNETENUMRESOURCE pWNetEnumResource;
  102. extern WNETOPENENUM pWNetOpenEnum;
  103. extern WNETCANCELCONNECTION2 pWNetCancelConnection2;
  104. extern WNETADDCONNECTION2 pWNetAddConnection2;
  105. extern LMS_NETSESSIONENUM pLMSNetSessionEnum;
  106. extern LMS_NETSHAREENUM pLMSNetShareEnum;
  107. extern LMS_NETSHAREDEL pLMSNetShareDel;
  108. extern LMS_NETSHAREADD pLMSNetShareAdd;
  109. extern LMS_NETAPIBUFFERFREE pLMSNetApiBufferFree;
  110. extern SVR_NETSESSIONENUM pSVRNetSessionEnum;
  111. extern SVR_NETSHAREENUM pSVRNetShareEnum;
  112. extern SVR_NETSHAREDEL pSVRNetShareDel;
  113. extern SVR_NETSHAREADD pSVRNetShareAdd;
  114. extern REGSETKEYSECURITY pRegSetKeySecurity;
  115. extern SETSECURITYDESCRIPTORDACL pSetSecurityDescriptorDacl;
  116. extern GETACE pGetAce;
  117. extern ADDACCESSALLOWEDACE pAddAccessAllowedAce;
  118. extern INITIALIZEACL pInitializeAcl;
  119. extern INITIALIZESECURITYDESCRIPTOR pInitializeSecurityDescriptor;
  120. extern GETLENGTHSID pGetLengthSid;
  121. extern LOOKUPACCOUNTNAME pLookupAccountName;
  122. extern LOOKUPACCOUNTSID pLookupAccountSid;
  123. extern GETSECURITYDESCRIPTORDACL pGetSecurityDescriptorDacl;
  124. extern GETSECURITYDESCRIPTORGROUP pGetSecurityDescriptorGroup;
  125. extern GETSECURITYDESCRIPTOROWNER pGetSecurityDescriptorOwner;
  126. extern OPENPROCESSTOKEN pOpenProcessToken;
  127. extern LOOKUPPRIVILEGEVALUE pLookupPrivilegeValue;
  128. extern ADJUSTTOKENPRIVILEGES pAdjustTokenPrivileges;
  129. extern REGGETKEYSECURITY pRegGetKeySecurity;
  130. extern OPENSCMANAGER pOpenSCManager;
  131. extern CREATESERVICE pCreateService;
  132. extern CLOSESERVICEHANDLE pCloseServiceHandle;
  133. extern OPENSERVICE pOpenService;
  134. extern STARTSERVICE pStartService;
  135. extern STARTSERVICECTRLDISPATCHER pStartServiceCtrlDispatcher;
  136. extern REGISTERSERVICECTRLHANDLER pRegisterServiceCtrlHandler;
  137. extern SETSERVICESTATUS pSetServiceStatus;
  138. extern DELETESERVICE pDeleteService;
  139. extern GETSERVICEDISPLAYNAME pGetServiceDisplayName;
  140. int InitDynamicLibraries(void);
  141. int KillDynamicLibraries(void);
  142. #endif