55 lines
1.5 KiB
C++
55 lines
1.5 KiB
C++
#pragma once
|
|
|
|
namespace W7EUtils
|
|
{
|
|
bool GetProcessList(HWND hWnd, std::map< DWORD, std::wstring > &mapProcs);
|
|
|
|
bool OpenProcessToInject(HWND hWnd, HANDLE *pOutProcHandle, DWORD dwPid, const wchar_t *szProcName);
|
|
|
|
bool GetElevationType(TOKEN_ELEVATION_TYPE * ptet);
|
|
|
|
template < typename T > class GetProcAddr
|
|
{
|
|
public:
|
|
T f;
|
|
|
|
__forceinline GetProcAddr(FARPROC (WINAPI *fpGetProcAddress)(HMODULE hModule, LPCSTR lpProcName), HMODULE hModule, const char *lpProcName)
|
|
{
|
|
f = reinterpret_cast< T >(fpGetProcAddress(hModule, lpProcName));
|
|
}
|
|
};
|
|
|
|
class CTempResource
|
|
{
|
|
private:
|
|
HINSTANCE m_hInstance;
|
|
int m_iResourceId;
|
|
std::wstring m_strFilePath;
|
|
public:
|
|
CTempResource(HINSTANCE hInstance, int iResourceId);
|
|
virtual ~CTempResource();
|
|
bool GetFilePath(std::wstring &strPath);
|
|
};
|
|
|
|
class CRemoteMemory
|
|
{
|
|
private:
|
|
HANDLE m_hRemoteProcess;
|
|
std::list< void * > m_listRemoteAllocations;
|
|
bool m_bAnyFailures;
|
|
|
|
private:
|
|
CRemoteMemory(const CRemoteMemory &rhs); // Disallow.
|
|
CRemoteMemory &operator=(const CRemoteMemory &rhs); // Disallow.
|
|
|
|
public:
|
|
CRemoteMemory(HANDLE hRemoteProcess);
|
|
virtual ~CRemoteMemory();
|
|
void LeakMemory();
|
|
bool AnyFailures() const;
|
|
void *AllocAndCopyMemory(const void *pLocalBuffer, SIZE_T bufferSize, bool bExecutable, bool bConst = true);
|
|
wchar_t *AllocAndCopyMemory(const wchar_t *szLocalString, bool bConst = true);
|
|
char *AllocAndCopyMemory(const char *szLocalString, bool bConst = true);
|
|
};
|
|
}
|