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.

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...