设为首页 加入收藏

TOP

VC++实现线程注入(一)
2013-07-22 18:14:08 来源: 作者: 【 】 浏览:248
Tags:实现 线程 注入

  在基于黑客软件、杀毒软件、系统应用软件开发过程中,需要使用一种方式:将外部DLL通过线程形式注入到其他进程中。这样的过程就叫注入线程或者叫线程注入。

  #include "stdafx.h"

  #include "windows.h"

  // ========== 定义一个代码结构,本例为一个对话框============

  struct MyData

  {

  char sz[64]; // 对话框显示内容

  DWORD dwMessageBox; // 对话框的地址

  };

  // ========== 远程线程的函数 ==============================

  DWORD __stdcall RMTFunc(MyData *pData)

  {

  typedef int(__stdcall*MMessageBox)(HWND,LPCTSTR,LPCTSTR,UINT);

  MMessageBox MsgBox = (MMessageBox)pData->dwMessageBox;

  MsgBox(NULL, pData->sz, NULL, MB_OK);

  return 0;

  }

  int main(int argc, char* argv[])

  {

  // ===== 获得需要创建REMOTETHREAD的进程句柄 ===============================

  HWND hWnd = FindWindow("notepad", NULL); // 以NOTEPAD为例

  DWORD dwProcessId;

  ::GetWindowThreadProcessId(hWnd, &dwProcessId);

  HANDLE hProcess = OpenProcess(

  PROCESS_ALL_ACCESS,

  FALSE,

  dwProcessId);

  // ========= 代码结构 ================================================

  MyData data;

  ZeroMemory(&data, sizeof (MyData));

  strcat(data.sz, "对话框的内容.");

  HINSTANCE hUser = LoadLibrary("user32.dll");

  if (! hUser)

  {

  printf("Can not load library.\n");

  return 0;

  }

  data.dwMessageBox = (DWORD)GetProcAddress(hUser, "MessageBoxA");

  FreeLibrary(hUser);

  if (! data.dwMessageBox)

  return 0;

  // ======= 分配空间 ===================================================

  void *pRemoteThread

  = VirtualAllocEx(hProcess, 0,

  1024*4, MEM_COMMIT|MEM_RESERVE,

  PAGE_EXECUTE_READWRITE);

  if (! pRemoteThread)

  return 0;

  if (! WriteProcessMemory(hProcess, pRemoteThread, &RMTFunc, 1024*4, 0))

  return 0;

  MyData *pData

  = (MyData*)VirtualAllocEx(hProcess, 0,

  sizeof (MyData), MEM_COMMIT,

  PAGE_READWRITE);

  if (!pData)

  return 0;

  if (! WriteProcessMemory(hProcess, pData, &data, sizeof (MyData), 0))

  return 0;

   

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇VC++播放音频文件的方法 下一篇VC++实现DLL注入

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: