微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

以下代码将注入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.

原文地址:https://www.jb51.cc/windows/612875.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐