加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 如何在dll注入中调用特定函数?

发布时间:2020-12-14 02:05:37 所属栏目:Windows 来源:网络整理
导读:以下代码将注入dll并将调用DllMain.我如何从DLL中调用特定函数,而不仅仅是DllMain? DWORD pid; HANDLE hd; LPVOID gp,rs,proc; gp = (LPVOID)GetProcAddress(GetModuleHandle(L"Kernel32.dll"),"LoadLibraryA"); pid = 6096; hd = OpenProcess(PROCESS_ALL_
以下代码将注入dll并将调用DllMain.我如何从DLL中调用特定函数,而不仅仅是DllMain?

DWORD pid;
    HANDLE hd;
    LPVOID gp,rs,proc;

    gp = (LPVOID)GetProcAddress(GetModuleHandle(L"Kernel32.dll"),"LoadLibraryA");
    pid = 6096;

    hd = OpenProcess(PROCESS_ALL_ACCESS,pid);    


    rs = (LPVOID)VirtualAllocEx(hd,sizeof(DLL_NAME),MEM_RESERVE | MEM_COMMIT,PAGE_READWRITE);

    if (!WriteProcessMemory(hd,(LPVOID)rs,DLL_NAME,strlen(DLL_NAME),0))
    {
        printf("WriteProcessMemory %d",GetLastError());
    }

    if (!CreateRemoteThread(hd,(LPTHREAD_START_ROUTINE)gp,0))
    {
        printf("CreateRemoteThread %d",GetLastError());
    }

解决方法

当你注入的DLL的DllMain第一次运行时,调用CreateThread来创建一个可以做你喜欢的任何事情的新线程.请注意,您无法按照文档中的说明从DllMain调用任意代码.因此从DllMain调用CreateThread.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读