首页
社区
课程
招聘
[旧帖] [求助]dll注入函数哪里错了 0.00雪花
发表于: 2012-3-24 15:22 1019

[旧帖] [求助]dll注入函数哪里错了 0.00雪花

2012-3-24 15:22
1019
下面有段dll注入函数,可是不知道哪里出错了,希望有高手能帮忙解答下,谢谢了。

dwProcessID:要注入dll的进程ID
lpszDll:要注入的dll的路径


BOOL RemoteLoadLibrary( DWORD dwProcessID, LPCSTR lpszDll )        //DLL注入
{
        // 打开目标进程
        HANDLE hProcess = OpenProcess( PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, dwProcessID );
        // 向目标进程地址空间写入DLL名称
        DWORD dwSize, dwWritten;
        dwSize = lstrlenA( lpszDll ) + 1;
        LPVOID lpBuf = VirtualAllocEx( hProcess, NULL, dwSize, MEM_COMMIT, PAGE_READWRITE );
        if ( NULL == lpBuf )
        {
                CloseHandle( hProcess );
                return FALSE;
        }
        if ( WriteProcessMemory( hProcess, lpBuf, (LPVOID)lpszDll, dwSize, &dwWritten ) )
        {
                // 要写入字节数与实际写入字节数不相等,仍属失败
                if ( dwWritten != dwSize )
                {
                        VirtualFreeEx( hProcess, lpBuf, dwSize, MEM_DECOMMIT );
                        CloseHandle( hProcess );
                        return false;
                }
        }
        else
        {
                CloseHandle( hProcess );
                return false;
        }
        // 使目标进程调用LoadLibrary,加载DLL
        DWORD dwID;
        LPVOID pFunc = LoadLibraryA;
        HANDLE hThread = CreateRemoteThread( hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)pFunc, lpBuf, 0, &dwID );
        // 等待LoadLibrary加载完毕
        WaitForSingleObject( hThread, INFINITE );
        // 释放目标进程中申请的空间
        VirtualFreeEx( hProcess, lpBuf, dwSize, MEM_DECOMMIT );
        CloseHandle( hThread );
        CloseHandle( hProcess );
        return true;
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//