远程注入DLL并自动显示DLL的窗口

  • Post author:
  • Post category:其他


以前也可以注入并显示窗口,但是一旦卸载则会导致宿主进程也被关闭,今天终于搞定卸载注入的DLL后不影响宿主进程。

源码在http://wooddoor.ys168.com的VC目录下的“远程注入、卸载.rar”【VC2008的工程】


注入器源码部分:

#include <tlhelp32.h>

namespace pathfileFun

{


//**************************************************************

//*  GetCurrentDirectory得到的不一定是应用程序所在的目录!要得到应用程序所在的目录,这里有一个函数:

//*函数名:     GetAppPath()

//*

//*

//*返回值         CString                     –   返回路径的形式是   C:/temp/

//功能               –   得到应用程序所在的路径,保存到strPathBuffer中

//*

//**************************************************************

inline CString WINAPI GetAppPath()

{


CString strPathBuffer;

TCHAR PathBuffer[MAX_PATH];

GetModuleFileName(AfxGetInstanceHandle(), PathBuffer, MAX_PATH);

strPathBuffer.Format(_T(“%s”),PathBuffer);

CString strAppPath=strPathBuffer.Mid(0,strPathBuffer.ReverseFind(_T(‘//’))+1);

return strAppPath;

};

//格式化路径,使得路径统一成以“/”结尾

inline CString FormatPath(CString strPath)

{


if ( strPath.Right(1) != _T(“//”) )

strPath += _T(“//”);

return strPath;

};

//从文件的全路径中获取文件所在的文件夹路径,返回的路径以“/”结尾

inline CString GetPathFromFile(CString FilePath)

{


return FilePath.Mid(0,FilePath.ReverseFind(_T(‘//’))+1);

};

//从文件的全路径中获取文件名(含后缀)

inline CString GetFileNameFromFilePath(CString FilePath)

{


return FilePath.Right(FilePath.GetLength() – FilePath.ReverseFind(_T(‘//’))+1);

};

}

//===========================================


//调整进程权限

bool EnablePrivilege(TCHAR* PrivilegeName,BOOL IsEnable)

{


HANDLE hToken;

TOKEN_PRIVILEGES tp;

LUID luid;

if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOK



版权声明:本文为gnuljf原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。