www.pudn.com > 将DLL注入到其他进程中.rar > LIB.H


 
#include  
#include  
 
const  BYTE   Int3  = 0xCC; 
 
// functions 
LPVOID MapFileR(char * targetfile);   // maps a file into memory with read access 
LPVOID MapFileRW(char * targetfile);  // maps a file into memory with read and write access 
BOOL IsPE (LPVOID MapAddress);        // checks whether a file is a valid PE file 
DWORD GetFsize(PSTR szTargetFile);    // returns the filesize 
VOID ShowLastError();                 // does the GetLastError,... shit 
VOID MakeOfn(OPENFILENAME &TMPofn);   // initializes a OPENFILENAME struct 
int mb(char* Title,char* Text,int Style); // easier MessageBox 
DWORD MakeReverseOrder(DWORD dwNum);  // does what it's named like 
 
 
LPVOID MapFileR(char * targetfile) 
{ 
	HANDLE   hFile,hFileMap; 
	LPVOID   pMappedFile; 
	 
	hFile = CreateFile ( targetfile, GENERIC_READ,FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); 
	if (hFile == INVALID_HANDLE_VALUE) 
	{ 
		return NULL; 
	} 
	hFileMap = CreateFileMapping (hFile, NULL, PAGE_READONLY, 0, 0,NULL); 
	if (!hFileMap) 
	{ 
		CloseHandle (hFile); 
		return NULL; 
	} 
	pMappedFile = MapViewOfFile ( hFileMap, FILE_MAP_READ, 0, 0, 0); 
	if (!pMappedFile) 
	{ 
		CloseHandle (hFileMap); 
		CloseHandle (hFile); 
		return NULL; 
	} 
	CloseHandle(hFileMap); 
	CloseHandle(hFile); 
	return pMappedFile; 
} 
 
LPVOID MapFileRW(char * targetfile) 
{ 
	HANDLE   hFile,hMap; 
	LPVOID   pMap; 
 
	hFile = CreateFile ( targetfile, GENERIC_READ | GENERIC_WRITE, \ 
		FILE_SHARE_READ | FILE_SHARE_WRITE,	NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); 
	if (hFile == INVALID_HANDLE_VALUE) 
	{ 
		return NULL; 
	} 
	hMap = CreateFileMapping (hFile, NULL, PAGE_READWRITE, 0, 0,NULL); 
	if (!hMap) 
	{ 
		CloseHandle (hFile); 
		return NULL; 
	} 
	pMap = MapViewOfFile ( hMap, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0); 
	CloseHandle(hMap); 
	CloseHandle(hFile); 
	if (!pMap) 
		return NULL; 
	return pMap; 
} 
 
BOOL IsPE (LPVOID MapAddress) 
{ 
	PIMAGE_DOS_HEADER pDosh; 
	PIMAGE_NT_HEADERS pPeh; 
 
	if (MapAddress == NULL) 
		return FALSE; 
	pDosh = (PIMAGE_DOS_HEADER)MapAddress; 
	if (pDosh->e_magic != IMAGE_DOS_SIGNATURE) 
		return FALSE; 
	pPeh = (PIMAGE_NT_HEADERS)((DWORD)pDosh + pDosh->e_lfanew); 
	if (pPeh->Signature != IMAGE_NT_SIGNATURE) 
		return FALSE; 
	return TRUE; 
} 
 
DWORD GetFsize(PSTR szTargetFile) 
{ 
	HANDLE   hFile; 
 
	hFile = CreateFile (szTargetFile, GENERIC_READ,FILE_SHARE_READ, NULL, OPEN_EXISTING, \ 
		               FILE_ATTRIBUTE_NORMAL, 0); 
	if (hFile == INVALID_HANDLE_VALUE) 
	{ 
		return 0xFFFFFFFF; 
	} 
	return GetFileSize(hFile,0); 
} 
 
VOID ShowLastError() 
{ 
	PSTR lpMsgBuf; 
     
    FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |  
		          FORMAT_MESSAGE_IGNORE_INSERTS,NULL,GetLastError(),MAKELANGID(LANG_NEUTRAL, \ 
				  SUBLANG_DEFAULT),(LPTSTR) &lpMsgBuf,0,NULL); 
	MessageBox(0,(PSTR)lpMsgBuf,"LastError:",0); 
	LocalFree(lpMsgBuf); 
	return; 
} 
 
VOID MakeOfn(OPENFILENAME &TMPofn) 
{ 
	ZeroMemory(&TMPofn,sizeof(TMPofn)); 
	TMPofn.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY; 
	TMPofn.lpstrTitle = "Choose a file..."; 
	TMPofn.nMaxFile = 256; 
	TMPofn.nFilterIndex = 1; 
	TMPofn.lpstrInitialDir = "."; 
	TMPofn.lpstrFilter = "any file\0*.*\0\0"; 
	TMPofn.lStructSize = sizeof(TMPofn); 
	return; 
} 
 
int mb(char* Title,char* Text = "Info",int Style = 0) 
{ 
	return MessageBox(0,Title,Text,Style); 
} 
 
DWORD MakeReverseOrder(DWORD dwNum) 
{ 
	PBYTE    pByOld,pByNew; 
	DWORD    dwNiceNum; 
	int      i; 
 
	pByOld = (PBYTE)&dwNum; 
	pByNew = (PBYTE)&dwNiceNum+3; 
	for(i=0; i<4; i++) 
		*pByNew-- = *pByOld++; 
 
	return dwNiceNum; 
}