⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 npextend.cpp

📁 扩展记事本功能的VC程序
💻 CPP
字号:
#include <windows.h>

void ALRemoteInsertdll(DWORD,LPCTSTR);

HWND texthwnd;
HINSTANCE hLibrary;  
FARPROC pfn;
double winver = NULL; 

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR lpCmdLine,int)
{
	PROCESS_INFORMATION pi;
	STARTUPINFO si;
	memset(&si, 0, sizeof(si));    
	si.cb = sizeof(si); 
	si.dwFlags = STARTF_USESHOWWINDOW;
	si.wShowWindow =SW_HIDE;
 
	char* cmdline1;
	char strs1[MAX_PATH]="Notepad.exe ";
	cmdline1=lpCmdLine;	
	strcat(strs1,cmdline1);

	try{
	BYTE i = CreateProcess(	NULL, 
						strs1,
						NULL, 
						NULL, 
						FALSE,
						NORMAL_PRIORITY_CLASS, 
						NULL,   
						NULL, 
						&si, 
						&pi);
	if(!i)
		throw "  \"Notepad.exe\"文件未找到!";
	WaitForInputIdle(pi.hProcess, INFINITE);
	}
	catch(char* str)
	{
		MessageBox(NULL,str,NULL,MB_OK);
		return FALSE;
	}
	
	char str[20];
	OSVERSIONINFO osvi;
	osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
	GetVersionEx(&osvi);		
	wsprintf(str,"%d.%d",osvi.dwMajorVersion,osvi.dwMinorVersion);
	winver = atof(str);	

	char dllname[18] = "DllExtend.dll";
	try{
		DWORD i = SearchPath(NULL,dllname,NULL,NULL,NULL,NULL);
		if(!i)
			throw "\"DllExtend.dll\"文件丢失!";

		if(winver >= 5.0)       
			ALRemoteInsertdll(pi.dwProcessId,dllname);   
		else
		{																			
			hLibrary=LoadLibrary(dllname);  
			pfn=GetProcAddress(hLibrary,"SetHook");
			(*pfn)();
		}
	}
	catch(char* str)
	{
		MessageBox(NULL,str,NULL,MB_OK);
		return FALSE;
	}

	texthwnd=FindWindow("Notepad",NULL);
	ShowWindow(texthwnd,SW_SHOW);

	CloseHandle(pi.hThread); 
	CloseHandle(pi.hProcess);
	ExitProcess(0);
	return FALSE;
}

void ALRemoteInsertdll(DWORD dwProcessId,LPCTSTR pszDllFile)
{
	HANDLE hThread = NULL;
	HANDLE hProcess = NULL;
	LPTSTR pszDllFileRemote = NULL;

	__try
	{	
		hProcess = OpenProcess( PROCESS_CREATE_THREAD|
							    PROCESS_VM_OPERATION|
								PROCESS_VM_WRITE,
								FALSE,
								dwProcessId);
		if(hProcess == NULL)
			__leave;

		int cb =lstrlen(pszDllFile);
		pszDllFileRemote = (LPSTR)VirtualAllocEx(hProcess,
												NULL,	
												cb,
												MEM_COMMIT,	
												PAGE_READWRITE);
		if(pszDllFileRemote == NULL)
			__leave;

		if(!WriteProcessMemory(hProcess,
								pszDllFileRemote,
								(PVOID)pszDllFile,
								cb,	
								NULL))
			__leave;
		
		PTHREAD_START_ROUTINE pThreadLib = (PTHREAD_START_ROUTINE)
			GetProcAddress(GetModuleHandle(TEXT("Kernel32")),"LoadLibraryA");
		if(pThreadLib == NULL)
			__leave;
		
		hThread = CreateRemoteThread(hProcess,
									NULL,
									0,
									pThreadLib,
									pszDllFileRemote,
									0,
									NULL);
		if(hThread == NULL)
			__leave;
		
		WaitForSingleObject(hThread,INFINITE);
	}
	__finally
	{
		if(pszDllFileRemote != NULL)
			VirtualFreeEx(hProcess,pszDllFileRemote,0,MEM_RELEASE);

		if(hThread != NULL)	
			CloseHandle(hThread);

		if(hProcess != NULL)
			CloseHandle(hProcess);
	}
	return;
}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -