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

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

?? injlib.cpp

?? Windows via C/C++, Fifth Edition圖書源代碼
?? CPP
字號:
/******************************************************************************
Module:  InjLib.cpp
Notices: Copyright (c) 2008 Jeffrey Richter & Christophe Nasarre
******************************************************************************/


#include "..\CommonFiles\CmnHdr.h"     /* See Appendix A. */
#include <windowsx.h>
#include <stdio.h>
#include <tchar.h>
#include <malloc.h>        // For alloca
#include <TlHelp32.h>
#include "Resource.h"
#include <StrSafe.h>



///////////////////////////////////////////////////////////////////////////////


#ifdef UNICODE
   #define InjectLib InjectLibW
   #define EjectLib  EjectLibW
#else
   #define InjectLib InjectLibA
   #define EjectLib  EjectLibA
#endif   // !UNICODE


///////////////////////////////////////////////////////////////////////////////


BOOL WINAPI InjectLibW(DWORD dwProcessId, PCWSTR pszLibFile) {

   BOOL bOk = FALSE; // Assume that the function fails
   HANDLE hProcess = NULL, hThread = NULL;
   PWSTR pszLibFileRemote = NULL;

   __try {
      // Get a handle for the target process.
      hProcess = OpenProcess(
         PROCESS_QUERY_INFORMATION |   // Required by Alpha
         PROCESS_CREATE_THREAD     |   // For CreateRemoteThread
         PROCESS_VM_OPERATION      |   // For VirtualAllocEx/VirtualFreeEx
         PROCESS_VM_WRITE,             // For WriteProcessMemory
         FALSE, dwProcessId);
      if (hProcess == NULL) __leave;

      // Calculate the number of bytes needed for the DLL's pathname
      int cch = 1 + lstrlenW(pszLibFile);
      int cb  = cch * sizeof(wchar_t);

      // Allocate space in the remote process for the pathname
      pszLibFileRemote = (PWSTR) 
         VirtualAllocEx(hProcess, NULL, cb, MEM_COMMIT, PAGE_READWRITE);
      if (pszLibFileRemote == NULL) __leave;

      // Copy the DLL's pathname to the remote process' address space
      if (!WriteProcessMemory(hProcess, pszLibFileRemote, 
         (PVOID) pszLibFile, cb, NULL)) __leave;

      // Get the real address of LoadLibraryW in Kernel32.dll
      PTHREAD_START_ROUTINE pfnThreadRtn = (PTHREAD_START_ROUTINE)
         GetProcAddress(GetModuleHandle(TEXT("Kernel32")), "LoadLibraryW");
      if (pfnThreadRtn == NULL) __leave;

      // Create a remote thread that calls LoadLibraryW(DLLPathname)
      hThread = CreateRemoteThread(hProcess, NULL, 0, 
         pfnThreadRtn, pszLibFileRemote, 0, NULL);
      if (hThread == NULL) __leave;

      // Wait for the remote thread to terminate
      WaitForSingleObject(hThread, INFINITE);

      bOk = TRUE; // Everything executed successfully
   }
   __finally { // Now, we can clean everything up

      // Free the remote memory that contained the DLL's pathname
      if (pszLibFileRemote != NULL) 
         VirtualFreeEx(hProcess, pszLibFileRemote, 0, MEM_RELEASE);

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

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

   return(bOk);
}


///////////////////////////////////////////////////////////////////////////////


BOOL WINAPI InjectLibA(DWORD dwProcessId, PCSTR pszLibFile) {

   // Allocate a (stack) buffer for the Unicode version of the pathname
   SIZE_T cchSize = lstrlenA(pszLibFile) + 1;
   PWSTR pszLibFileW = (PWSTR) 
      _alloca(cchSize * sizeof(wchar_t));

   // Convert the ANSI pathname to its Unicode equivalent
   StringCchPrintfW(pszLibFileW, cchSize, L"%S", pszLibFile);

   // Call the Unicode version of the function to actually do the work.
   return(InjectLibW(dwProcessId, pszLibFileW));
}


///////////////////////////////////////////////////////////////////////////////


BOOL WINAPI EjectLibW(DWORD dwProcessId, PCWSTR pszLibFile) {

   BOOL bOk = FALSE; // Assume that the function fails
   HANDLE hthSnapshot = NULL;
   HANDLE hProcess = NULL, hThread = NULL;

   __try {
      // Grab a new snapshot of the process
      hthSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessId);
      if (hthSnapshot == INVALID_HANDLE_VALUE) __leave;

      // Get the HMODULE of the desired library
      MODULEENTRY32W me = { sizeof(me) };
      BOOL bFound = FALSE;
      BOOL bMoreMods = Module32FirstW(hthSnapshot, &me);
      for (; bMoreMods; bMoreMods = Module32NextW(hthSnapshot, &me)) {
         bFound = (_wcsicmp(me.szModule,  pszLibFile) == 0) || 
                  (_wcsicmp(me.szExePath, pszLibFile) == 0);
         if (bFound) break;
      }
      if (!bFound) __leave;

      // Get a handle for the target process.
      hProcess = OpenProcess(
         PROCESS_QUERY_INFORMATION |   
         PROCESS_CREATE_THREAD     | 
         PROCESS_VM_OPERATION,  // For CreateRemoteThread
         FALSE, dwProcessId);
      if (hProcess == NULL) __leave;

      // Get the real address of FreeLibrary in Kernel32.dll
      PTHREAD_START_ROUTINE pfnThreadRtn = (PTHREAD_START_ROUTINE)
         GetProcAddress(GetModuleHandle(TEXT("Kernel32")), "FreeLibrary");
      if (pfnThreadRtn == NULL) __leave;

      // Create a remote thread that calls FreeLibrary()
      hThread = CreateRemoteThread(hProcess, NULL, 0, 
         pfnThreadRtn, me.modBaseAddr, 0, NULL);
      if (hThread == NULL) __leave;

      // Wait for the remote thread to terminate
      WaitForSingleObject(hThread, INFINITE);

      bOk = TRUE; // Everything executed successfully
   }
   __finally { // Now we can clean everything up

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

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

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

   return(bOk);
}


///////////////////////////////////////////////////////////////////////////////


BOOL WINAPI EjectLibA(DWORD dwProcessId, PCSTR pszLibFile) {

   // Allocate a (stack) buffer for the Unicode version of the pathname
   SIZE_T cchSize = lstrlenA(pszLibFile) + 1;
   PWSTR pszLibFileW = (PWSTR) 
      _alloca(cchSize * sizeof(wchar_t));

   // Convert the ANSI pathname to its Unicode equivalent
      StringCchPrintfW(pszLibFileW, cchSize, L"%S", pszLibFile);

   // Call the Unicode version of the function to actually do the work.
   return(EjectLibW(dwProcessId, pszLibFileW));
}


///////////////////////////////////////////////////////////////////////////////


BOOL Dlg_OnInitDialog(HWND hWnd, HWND hWndFocus, LPARAM lParam) {

   chSETDLGICONS(hWnd, IDI_INJLIB);
   return(TRUE);
}


///////////////////////////////////////////////////////////////////////////////


void Dlg_OnCommand(HWND hWnd, int id, HWND hWndCtl, UINT codeNotify) {
   
   switch (id) {
      case IDCANCEL:
         EndDialog(hWnd, id);
         break;

      case IDC_INJECT:
         DWORD dwProcessId = GetDlgItemInt(hWnd, IDC_PROCESSID, NULL, FALSE);
         if (dwProcessId == 0) {
            // A process ID of 0 causes everything to take place in the 
            // local process; this makes things easier for debugging.
            dwProcessId = GetCurrentProcessId();
         }

         TCHAR szLibFile[MAX_PATH];
         GetModuleFileName(NULL, szLibFile, _countof(szLibFile));
         PTSTR pFilename = _tcsrchr(szLibFile, TEXT('\\')) + 1;
         _tcscpy_s(pFilename, _countof(szLibFile) - (pFilename - szLibFile),
             TEXT("22-ImgWalk.DLL"));
         if (InjectLib(dwProcessId, szLibFile)) {
            chVERIFY(EjectLib(dwProcessId, szLibFile));
            chMB("DLL Injection/Ejection successful.");
         } else {
            chMB("DLL Injection/Ejection failed.");
         }
         break;
   }
}


///////////////////////////////////////////////////////////////////////////////


INT_PTR WINAPI Dlg_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {

   switch (uMsg) {
      chHANDLE_DLGMSG(hWnd, WM_INITDIALOG, Dlg_OnInitDialog);
      chHANDLE_DLGMSG(hWnd, WM_COMMAND,    Dlg_OnCommand);
   }
   return(FALSE);
}


///////////////////////////////////////////////////////////////////////////////


int WINAPI _tWinMain(HINSTANCE hInstExe, HINSTANCE, PTSTR pszCmdLine, int) {

   DialogBox(hInstExe, MAKEINTRESOURCE(IDD_INJLIB), NULL, Dlg_Proc);
   return(0);
}


//////////////////////////////// End of File //////////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区四区五区黄| 中文字幕欧美日本乱码一线二线 | 欧美日韩一级大片网址| 国产91精品一区二区麻豆亚洲| 日本在线不卡一区| 日本中文字幕一区二区视频 | 日韩欧美激情四射| 欧美成va人片在线观看| 久久综合久久99| 欧美精品一区视频| 欧美激情资源网| 国产精品护士白丝一区av| 亚洲欧洲日本在线| 亚洲线精品一区二区三区八戒| 亚洲va欧美va国产va天堂影院| 青青草国产成人av片免费| 奇米影视一区二区三区小说| 免费在线观看视频一区| 国产综合久久久久久鬼色| 国产69精品久久99不卡| 91亚洲精华国产精华精华液| 欧美少妇xxx| 欧美电影免费观看完整版| 中文字幕成人网| 亚洲成a人v欧美综合天堂| 美腿丝袜亚洲一区| www.色综合.com| 欧美色区777第一页| 久久久久一区二区三区四区| 亚洲欧洲制服丝袜| 免费在线观看一区二区三区| 成人av资源站| 日韩一级视频免费观看在线| 国产精品久久三区| 日韩电影在线免费观看| 成人性色生活片| 欧美精品18+| 中文字幕av一区 二区| 午夜天堂影视香蕉久久| 成人精品免费网站| 91精品国产一区二区人妖| 国产精品福利一区二区| 六月丁香综合在线视频| 91丨porny丨蝌蚪视频| 日韩三级av在线播放| 亚洲激情av在线| 国产91综合一区在线观看| 717成人午夜免费福利电影| 成人免费一区二区三区在线观看| 麻豆精品视频在线观看视频| 欧美性色欧美a在线播放| 国产精品视频一二三| 免费成人在线播放| 欧美三级电影在线看| 国产精品女主播在线观看| 激情五月婷婷综合| 欧美日韩精品一二三区| 一区二区在线观看免费视频播放| 国产毛片精品国产一区二区三区| 日韩一级免费一区| 天天色天天爱天天射综合| 色94色欧美sute亚洲线路一久| 国产精品乱码一区二三区小蝌蚪| 国产精品一区二区免费不卡| 福利电影一区二区三区| 精品1区2区在线观看| 美女爽到高潮91| 欧美一级高清大全免费观看| 天天影视网天天综合色在线播放 | 天堂蜜桃91精品| 欧美日韩一区二区三区在线| 亚洲免费看黄网站| 91极品视觉盛宴| 亚洲一区在线播放| 欧美日韩美少妇| 日日摸夜夜添夜夜添国产精品 | 久久99蜜桃精品| 亚洲精品一区二区三区蜜桃下载 | 美日韩一区二区三区| 欧美一区二区三区电影| 免费观看在线综合| 日韩精品一区二区三区蜜臀 | 成人涩涩免费视频| 欧美激情一区在线| av电影天堂一区二区在线观看| 中文字幕在线免费不卡| 日本韩国精品在线| 一级精品视频在线观看宜春院| 欧美三级中文字| 免费观看在线综合| 日本一区二区三区视频视频| www.欧美日韩国产在线| 一区二区三区四区国产精品| 欧美怡红院视频| 久久精品国产免费| 中文久久乱码一区二区| 欧美伊人久久大香线蕉综合69| 日本伊人色综合网| 久久久久久久久岛国免费| 99久久精品费精品国产一区二区| 亚洲最新在线观看| 欧美mv日韩mv亚洲| 波多野结衣中文字幕一区二区三区| 亚洲蜜臀av乱码久久精品| 欧美日韩精品一区二区三区| 国产一区二区三区蝌蚪| 亚洲伦理在线精品| 精品国产第一区二区三区观看体验| 丁香一区二区三区| 偷窥国产亚洲免费视频| 国产欧美日韩中文久久| 欧美男女性生活在线直播观看| 国内精品伊人久久久久av一坑| 亚洲精品视频一区| 精品久久人人做人人爰| 色噜噜狠狠色综合中国| 国产永久精品大片wwwapp| 亚洲一二三四在线观看| 国产精品三级av| 7777女厕盗摄久久久| 成人精品鲁一区一区二区| 免费三级欧美电影| 亚洲国产一区二区在线播放| 国产欧美1区2区3区| 91精品欧美久久久久久动漫| 99久久精品国产一区| 国产乱人伦偷精品视频免下载| 亚洲一区影音先锋| 亚洲图片你懂的| 日本一区二区三区在线不卡| 欧美一区二区视频在线观看2020| 99精品欧美一区| 成人一区二区三区在线观看 | 日本一区二区电影| 精品久久久影院| 欧美日韩国产免费一区二区 | 日本欧美韩国一区三区| 亚洲欧美日韩在线| 亚洲天堂福利av| 国产女主播一区| 国产午夜精品福利| 欧美精品一区二区三区四区| 欧美精品丝袜中出| 欧美伦理电影网| 欧美日韩久久久| 欧美日韩你懂的| 在线亚洲欧美专区二区| 色94色欧美sute亚洲线路一久| 成人精品一区二区三区四区| 成人一级黄色片| 成人涩涩免费视频| av网站免费线看精品| 菠萝蜜视频在线观看一区| 不卡视频一二三| 91亚洲午夜精品久久久久久| 91在线观看视频| 色先锋aa成人| 色婷婷一区二区| 欧美日韩在线不卡| 91精品国产综合久久久蜜臀图片| 欧美一区二区播放| 精品国一区二区三区| 久久久久久久久久久黄色| 国产清纯在线一区二区www| 国产精品久久久久久户外露出 | 国产亚洲人成网站| 欧美激情一二三区| 亚洲麻豆国产自偷在线| 亚洲综合在线五月| 老色鬼精品视频在线观看播放| 久久国产欧美日韩精品| 成人激情校园春色| 在线一区二区三区做爰视频网站| 欧美视频一区二区三区四区| 欧美一级欧美一级在线播放| 26uuu亚洲| 亚洲男人的天堂在线aⅴ视频| 性久久久久久久久| 国产美女主播视频一区| 91美女在线观看| 91超碰这里只有精品国产| 久久久久久夜精品精品免费| 亚洲人成电影网站色mp4| 日韩精品视频网站| 国产精品中文有码| 欧美性大战久久久久久久蜜臀 | 国产精品一二三在| 色琪琪一区二区三区亚洲区| 欧美日韩高清在线| 中文字幕不卡的av| 日韩国产欧美视频| 91视频国产资源| 日韩女优av电影| 一区二区三区免费在线观看| 精品伊人久久久久7777人| 色欧美片视频在线观看在线视频| 91精品国产综合久久精品性色| 中文字幕第一区二区| 麻豆精品国产传媒mv男同| 在线看国产一区|