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

本文介绍了一种方法,通过调整进程权限、注入DLL并显示DLL窗口,同时确保在卸载DLL后宿主进程不会被关闭。提供了解决方案的源码,并详细解释了关键代码实现,包括注入、卸载过程以及如何在DLL注入后显示对话框。
摘要由CSDN通过智能技术生成

以前也可以注入并显示窗口,但是一旦卸载则会导致宿主进程也被关闭,今天终于搞定卸载注入的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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值