亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? inject.c

?? 鍵盤鎖
?? C
?? 第 1 頁 / 共 3 頁
字號:
    if (!(hNTDll = LoadLibrary("NTDLL.DLL")))
        return -1;

    // Load ZwQuerySystemInformation() dynamically
    if (!(ZwQuerySystemInformation = (ZWQUERYSYSTEMINFORMATION)GetProcAddress(hNTDll, "ZwQuerySystemInformation")))
	{
		FreeLibrary(hNTDll);
		SetLastError(ERROR_PROC_NOT_FOUND);
        return -1;
	}

    // Find needed buffer length
    do
    {
		if (!(pBuffer = malloc(BufferLen)))
		{
			FreeLibrary(hNTDll);
			SetLastError(ERROR_NOT_ENOUGH_MEMORY);
	        return -1;
		}

		Status = ZwQuerySystemInformation(SystemProcessesAndThreadsInformation,
					                      pBuffer, BufferLen, NULL);

		if (Status == STATUS_INFO_LENGTH_MISMATCH)
		{
			free(pBuffer);
			BufferLen *= 2;
		}
		else if (!NT_SUCCESS(Status))
		{
			free(pBuffer);
			FreeLibrary(hNTDll);
			return -1;
		}
    }
    while (Status == STATUS_INFO_LENGTH_MISMATCH);

	pInfo = (PSYSTEM_PROCESSES)pBuffer;
    for (;;)
    {
		pszProcessName = pInfo->ProcessName.Buffer;
		if (pszProcessName == NULL)
			pszProcessName = L"Idle";

        // Process found ?
        if (wcsicmp(pszProcessName, wcProcessName) == 0)
        {
			dwPID = pInfo->ProcessId;
			free(pBuffer);
			FreeLibrary(hNTDll);
			return dwPID;
        }

		if (pInfo->NextEntryDelta == 0)
			break;

		// Find the address of the next process structure
		pInfo = (PSYSTEM_PROCESSES)(((PUCHAR)pInfo) + pInfo->NextEntryDelta);
    }

    free(pBuffer);
	FreeLibrary(hNTDll);
    return -1;
}


/********************************
 * Return PID for Process Name. *
 ********************************/
DWORD GetPIDFromName(char *szProcessName)
{
    DWORD   dwPID;
    OSVERSIONINFO   info;

    info.dwOSVersionInfoSize = sizeof(info);
    GetVersionEx(&info);

	// Get PID using Toolhelp or  ZwQuerySystemInformation() depending on the OS version
    if (info.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
        dwPID = GetPIDFromNameToolhelp(szProcessName);
    else if (info.dwPlatformId == VER_PLATFORM_WIN32_NT)
        dwPID = GetPIDFromNameZwQuerySystemInformation(szProcessName);
    else
        dwPID = -1;

    return dwPID;
}


/////////////////////////////////////////////// Inject DLL ////////////////////////////////////////////

extern		HINSTANCE	hInst;					// Instance handle
DWORD		hLibModule;							// Handle of injected library
char		*szDllName     = "injdll.dll";			// Library to inject
char		*szProcessName = "winlogon.exe";	// Process to inject

/*****************************************
 * Load a library into a remote process. *
 *****************************************/
int InjectDll()
{
	HANDLE	hThread;				// Thread handle
	HANDLE	hProcess;				// Process handle
    DWORD	dwPID;					// Process ID
	char	szLibPath[MAX_PATH];	// Full DLL path
	void	*pLibRemote;			// Address (in the remote process) where szLibPath will be copied to

	// Enable DEBUG privilege
    if (!EnablePrivilege(SE_DEBUG_NAME, TRUE))
		return 0;

	// Get remote process id
    dwPID = GetPIDFromName(szProcessName);
    if (dwPID == -1)
		return 0;

	// Open remote process
	hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID);
	if (hProcess == NULL)
		return 0;

	// Get full path of the DLL
	if (!GetModuleFileName(hInst, szLibPath, MAX_PATH))
		return 0;
	strcpy(strrchr(szLibPath, '\\') + 1 , szDllName);

	// Allocate memory in the remote process to store the szLibPath string
	pLibRemote = VirtualAllocEx(hProcess, NULL, sizeof(szLibPath), MEM_COMMIT, PAGE_READWRITE);
	if (pLibRemote == NULL)
		return 0;
	// Copy the szLibPath string to the remote process.
	if (!WriteProcessMemory(hProcess, pLibRemote, (void*)szLibPath, sizeof(szLibPath), NULL))
		return 0;

	// Load the DLL into the remote process 
	// (via CreateRemoteThread() & LoadLibrary())
	hThread = CreateRemoteThread(hProcess, 
								 NULL, 
								 0,	
								 (LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA"), 
								 pLibRemote, 
								 0, 
								 NULL);
	// Failed
	if(hThread == NULL)
	{
		VirtualFreeEx(hProcess, pLibRemote, sizeof(szLibPath), MEM_RELEASE);
		return 0;
	}

	// Wait for LoadLibrary() to finish and get return code (handle of loaded library)
	WaitForSingleObject(hThread, INFINITE);
	GetExitCodeThread(hThread, &hLibModule);
	CloseHandle(hThread);
	CloseHandle(hProcess);

	// Free remote memory for szLibPath
	VirtualFreeEx(hProcess, pLibRemote, sizeof(szLibPath), MEM_RELEASE);

	// Remote LoadLibrary() failed
	if (!hLibModule)
		return 0;

	// Disable DEBUG privilege
	EnablePrivilege(SE_DEBUG_NAME, FALSE);

	return 1;
}


/****************************************************
 * Unload injected library from the remote process. *
 ****************************************************/
int EjectDll()
{
	HANDLE	hThread;
	HANDLE	hProcess;
    DWORD	dwPID;
	DWORD	dwRetFreeLibrary;

	// Enable DEBUG privilege
    if (!EnablePrivilege(SE_DEBUG_NAME, TRUE))
		return 0;

	// Get remote process id
    dwPID = GetPIDFromName(szProcessName);
    if (dwPID == -1)
		return 0;

	// Open remote process
	hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID);
	if (hProcess == NULL)
		return 0;

	// Unload the DLL from the remote process 
	// (via CreateRemoteThread & FreeLibrary)
	hThread = CreateRemoteThread(hProcess,
								 NULL, 
								 0,
								 (LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("Kernel32"), "FreeLibrary"),
								 (void*)hLibModule,
								 0, 
								 NULL );
	// Failed to unload
	if (hThread == NULL)
		return 0;

	// Wait for FreeLibrary() to finish and get return code
	WaitForSingleObject(hThread, INFINITE);
	GetExitCodeThread(hThread, &dwRetFreeLibrary);
	CloseHandle(hThread);
	CloseHandle(hProcess);

	// Disable DEBUG privilege
	EnablePrivilege(SE_DEBUG_NAME, FALSE);

	return (dwRetFreeLibrary);
}

////////////////////////////////////////////// Inject Code ////////////////////////////////////////

/**************************************************************************************************************
 * Some tips when using CreateRemoteThread()/WriteProcessMemory().                                            *
 *                                                                                                            *
 * 1. Analise generated code.                                                                                 *
 *    Check injected functions for absolute addressing (calls, jumps, data references, ...)                   * 
 *    and other generated code that shouldn't be there.                                                       *
 *    Use:                                                                                                    *
 *    A) Project\Settings\C/C++\Listing Files\Listing file type=Assembly, Machine Code, and Source.           *
 *    B) A disassembler (wdasm32).                                                                            *
 *    C) A debugger (softice).                                                                                *
 *                                                                                                            *
 * 2. Turn off stack probes.                                                                                  *
 *    Check for __chkstk() references in the listing files.                                                   *
 *    A) Use #pragma check_stack(off). [DOESN'T SEEMS TO WORK ?!?]                                            *
 *    B) Use less than 4K of local variables.                                                                 *
 *    C) Augment the stack size: /Gs size (Project\Settings\C/C++\ProjectOptions)                             *
 *                                                                                                            *
 * 3. Remove the /GZ switch in the debug build.                                                               *
 *    Check for __chkesp() references in the listing files.                                                   *
 *    A) Project\Settings\C/C++\Project Options                                                               *
 *                                                                                                            *
 * 4. Disable incremental compilation (/Gi).                                                                  *
 *    A) Use #pragma comment(linker, "/INCREMENTAL:NO")                                                       *
 *    B) Remove the /Gi switch (Project\Settings\C/C++\Customize\Enable incremental compilation=Off           *
 *    C) Declare the functions as static.                                                                     *
 *                                                                                                            *
 * 5. Don't let optimization screw your code.                                                                 *
 *    A) Turn off optimization (Project\Settings\C/C++\General\Optimizations=Disable(Debug)                   *
 *    B) Use #pragma optimize("", off)                                                                        *
 *    C) Don't write functions with the same prototype (e.g. AfterFuncX()). Let them return different values. *
 *                                                                                                            *
 * 6. Split switch() statements in 3 cases maximum, or use if/then/else.                                      *
 *                                                                                                            *
 * 7. Don't call any functions besides those in KERNEL32.LL and USER32.DLL (USER32.DLL isn't garanted to be   *
 *    mapped into every process).                                                                             *
 *    Use LoadLibrary()/GetProcAddress if you need functions from other libraries.                            *
 *                                                                                                            *
 * 8. Don't use any static strings.                                                                           *
 *    Pass them in INJDATA.                                                                                   *
 *                                                                                                            *
 * 9. Don't call any function directly.                                                                       *
 *    Copy each routine to the remote process individually and supply their addresses in INJDATA.             *
 *                                                                                                            *
 * 10. Good luck.                                                                                             *
 *     If you analise the generated code (using a disassembler) you should catch any errors before executing  *
 *     the code (and crashing the process !).                                                                 *
 **************************************************************************************************************/  

#pragma comment(linker, "/INCREMENTAL:NO")	// Turns off incremental linking

// Global variables
DWORD	PID;						// PID of injected process
BYTE	*pDataRemote;				// Address of INJDATA in the remote process
BYTE	*pSASWinProcRemote;			// The address of SASWindowProc() in the remote process

#define	DUMMY_ADDR	0x12345678		// Dummy addr of INJDATA

// INJDATA: Memory block passed to each remote injected function.
// We pass every function address or string data in this block.
typedef LONG		(WINAPI *SETWINDOWLONG)	  (HWND, int, LONG); 
typedef LRESULT		(WINAPI *CALLWINDOWPROC)  (WNDPROC, HWND, UINT, WPARAM, LPARAM);
typedef HWND		(WINAPI *FINDWINDOW)	  (LPCTSTR, LPCTSTR);

typedef struct {
	SETWINDOWLONG	fnSetWindowLong;	// Addr. of SetWindowLong()
	CALLWINDOWPROC	fnCallWindowProc;	// Addr. of CallWindowProc()
	FINDWINDOW		fnFindWindow;		// Addr. of FindWindow()
	char			szClassName[50];	// Class name = "SAS Window class"
	char			szWindowName[50];	// Window name = "SAS window"
	HWND			hwnd;				// Window handle of injected process
	WNDPROC			fnSASWndProc;		// Addr. of remote SASWindowProc
	WNDPROC 		fnOldSASWndProc;	// Addr. of old SASWindowProc
} INJDATA, *PINJDATA;


/*****************************************************************
 * Subclassed window procedure handler for the injected process. *
 *****************************************************************/

#pragma optimize("", off)
#pragma check_stack(off)

static LRESULT CALLBACK SASWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	// INJDATA pointer. 
	// Must be patched at runtime !
	INJDATA* pData = (INJDATA *)DUMMY_ADDR;

	if (uMsg == WM_HOTKEY)
	{
		// Ctrl+Alt+Del
		if (lParam == MAKELONG(MOD_CONTROL | MOD_ALT, VK_DELETE))
			return 1;

		// Ctrl+Shift+Esc
		if (lParam == MAKELONG(MOD_CONTROL | MOD_SHIFT, VK_ESCAPE))
			return 1;
	}

	// Call the original window procedure
	return pData->fnCallWindowProc(pData->fnOldSASWndProc, hwnd, uMsg, wParam, lParam);		
}


static int AfterSASWindowProc(void) {return 1;}



/*************************************************
 * Subclass the remote process window procedure. *
 * Return: 0=failure, 1=success                  *
 *************************************************/

#pragma optimize("", off)
#pragma check_stack(off)

static DWORD WINAPI InjectFunc (INJDATA *pData) 
{
	// Subclass window procedure
	pData->fnOldSASWndProc = (WNDPROC) pData->fnSetWindowLong (pData->hwnd, GWL_WNDPROC, (long)pData->fnSASWndProc);	

	return (pData->fnOldSASWndProc != NULL);
}


static int AfterInjectFunc(void) {return 2;}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合自拍亚洲综合图不卡区| 色婷婷av一区二区三区之一色屋| 国产风韵犹存在线视精品| 国产成人精品综合在线观看| 99精品欧美一区二区三区小说| 91福利国产成人精品照片| 欧美日韩色一区| 26uuu精品一区二区三区四区在线| 久久久亚洲高清| 一区二区三区四区在线| 免费成人在线播放| 国产99久久久精品| 欧美色偷偷大香| 久久久久久久综合色一本| 亚洲精品少妇30p| 另类欧美日韩国产在线| 99久久综合国产精品| 91精品国产色综合久久不卡蜜臀 | 亚洲一区二区三区四区不卡| 日本中文字幕不卡| 国产69精品久久99不卡| 欧美日韩一区二区三区四区五区 | 国产成人av电影在线观看| 色999日韩国产欧美一区二区| 日韩欧美黄色影院| 亚洲免费观看高清完整版在线| 男女男精品视频网| 99国产精品国产精品久久| 日韩欧美一卡二卡| 亚洲一区二区三区小说| 成人自拍视频在线| 欧美一级二级三级蜜桃| 一区二区三区四区蜜桃| 成人中文字幕在线| 精品捆绑美女sm三区| 亚洲一二三区不卡| 成人深夜视频在线观看| 日韩精品专区在线| 午夜日韩在线电影| 一本大道久久a久久综合婷婷| 久久久www成人免费毛片麻豆| 午夜电影网一区| 91蜜桃在线观看| 国产精品私人影院| 激情综合五月天| 欧美二区在线观看| 亚洲最新视频在线观看| 成人黄色软件下载| 久久久精品人体av艺术| 日本免费新一区视频| 欧美视频日韩视频| 亚洲乱码国产乱码精品精的特点 | 国产亚洲综合在线| 蜜桃一区二区三区在线| 欧美日韩亚洲另类| 亚洲乱码一区二区三区在线观看| 成人黄色国产精品网站大全在线免费观看 | 日韩限制级电影在线观看| 一区二区三区中文字幕电影 | 亚洲少妇屁股交4| 高清国产一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av| 日韩精品免费视频人成| 欧美日韩亚洲国产综合| 午夜av一区二区| 欧美精品一卡两卡| 肉色丝袜一区二区| 91精品国产综合久久福利 | 日韩欧美成人激情| 人人爽香蕉精品| 欧美一区二区三区成人| 手机精品视频在线观看| 欧美日韩国产综合草草| 午夜精品爽啪视频| 9191精品国产综合久久久久久| 亚洲成人av在线电影| 欧美日韩精品欧美日韩精品 | 日韩小视频在线观看专区| 日韩精品亚洲专区| 日韩午夜在线观看视频| 91精品国产品国语在线不卡| 亚洲国产精品精华液网站| 欧美日韩在线三区| 日韩在线播放一区二区| 91精品国产一区二区| 日本美女一区二区三区视频| 日韩一区二区三区视频在线| 美女视频一区二区| 久久久美女毛片 | 《视频一区视频二区| 99免费精品在线观看| 一区二区三区免费网站| 欧美天天综合网| 日日夜夜免费精品| 欧美成人一区二区三区片免费 | 国产无人区一区二区三区| 国产成人在线看| 日韩美女久久久| 欧美在线|欧美| 日本视频免费一区| 久久久久国产一区二区三区四区 | √…a在线天堂一区| 欧美丝袜自拍制服另类| 全国精品久久少妇| 国产人久久人人人人爽| 91麻豆自制传媒国产之光| 亚洲va欧美va人人爽午夜 | 懂色一区二区三区免费观看| 亚洲欧洲av另类| 欧美日韩成人激情| 国产永久精品大片wwwapp| 国产精品蜜臀av| 欧美美女一区二区在线观看| 极品美女销魂一区二区三区| 亚洲日本护士毛茸茸| 欧美精品一二三| 国产成人av资源| 日韩激情av在线| 欧美韩国日本综合| 欧美日韩成人激情| 成人动漫一区二区| 日本va欧美va瓶| 国产精品三级视频| 欧美一级一区二区| 97精品视频在线观看自产线路二| 日本成人中文字幕在线视频| 国产精品素人视频| 日韩欧美在线影院| 91亚洲国产成人精品一区二三| 日日欢夜夜爽一区| 亚洲欧洲精品成人久久奇米网| 欧美精品精品一区| 99re在线视频这里只有精品| 美女被吸乳得到大胸91| 亚洲女爱视频在线| 久久久精品tv| 欧美一区二区三区在线视频| 97精品电影院| 国产乱码一区二区三区| 五月激情六月综合| 综合在线观看色| 久久综合九色综合97婷婷| 欧美探花视频资源| 不卡一卡二卡三乱码免费网站| 蜜臀av国产精品久久久久| 亚洲一区电影777| 国产精品私人自拍| 久久蜜桃香蕉精品一区二区三区| 欧美日韩视频在线一区二区| 91原创在线视频| 国产成人亚洲精品狼色在线 | 精品久久久久久久久久久久久久久久久 | 91精品国产入口| 欧美亚洲免费在线一区| av不卡在线播放| 国产一区在线精品| 蜜臀av一区二区在线免费观看 | 欧美久久一二三四区| 91一区二区在线观看| 成人免费av在线| 国产电影精品久久禁18| 美女视频第一区二区三区免费观看网站| 一区二区三区在线视频播放| 国产精品久久综合| 国产欧美日韩在线视频| 欧美videos中文字幕| 91麻豆精品国产91久久久使用方法| 91免费精品国自产拍在线不卡 | 亚洲一区二区美女| 欧美一区二区福利在线| av影院午夜一区| 午夜不卡av在线| 精品国产一区二区三区不卡 | 久久综合色播五月| 久久爱www久久做| 久久久美女艺术照精彩视频福利播放| 99天天综合性| √…a在线天堂一区| 天天色图综合网| 性做久久久久久久免费看| 欧美一级一级性生活免费录像| 日韩av高清在线观看| 欧美成va人片在线观看| 日韩激情视频在线观看| 欧美成人免费网站| av网站一区二区三区| 久久黄色级2电影| 精品久久99ma| 99国产精品久| 岛国一区二区三区| 美美哒免费高清在线观看视频一区二区 | 欧美色视频在线| 99国产欧美另类久久久精品| 日韩1区2区日韩1区2区| 亚洲视频图片小说| 国产精品素人一区二区| 欧美va亚洲va| 2023国产精华国产精品| 国产 欧美在线| 国产超碰在线一区|