簡體   English   中英

DLL不會在Firefox中加載,而是在自定義應用程序中加載

[英]Dll not being loaded in Firefox but loads in custom application

我在SO上發布了一個有關代碼注入的最新問題,這個問題很相似但不相同。 我正在將dll注入Firefox,它已成功注入,但DLL中的代碼無法運行。 如果我將相同的代碼注入到自定義應用程序中,它將起作用。 為什么會這樣。 這是我正在使用的代碼。

Injector.exe //注入代碼的文件

#include <stdio.h>
#include <windows.h>

#define procId 2844
#define dllname "dllinject.dll"    // located in same directory

int main()
{
    HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, false, procId);
    LPVOID allocated = (LPVOID)VirtualAllocEx(hProc, NULL, strlen(dllname), MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory(hProc, (LPVOID)allocated, dllname, strlen(dllname), NULL);
    LPVOID libaddr = (LPVOID)GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA");
    CreateRemoteThread(hProc, NULL, NULL, (LPTHREAD_START_ROUTINE)libaddr, NULL, NULL);
    CloseHandle(hProc);
    return 0;
}

Simpleinjected.exe //被注入的文件

#include <stdio.h>

int main()
{
    printf("Hello");
    return 0;
}

dllinject.dll

#include <windows.h>

int message(const char *msg)
{
    MessageBox(NULL, msg, "Message from Dll", MB_OK);
    return 0;
}

BOOL WINAPI DLLMain(HINSTANCE hInstDll, DWORD ulReason, LPVOID lpReserved)
{
    switch(ulReason)
    {
        case DLL_PROCESS_ATTACH:
            message("process attach");
            break;
        case DLL_THREAD_ATTACH:
            message("thread attach");
            break;
        case DLL_PROCESS_DETACH:
            message("process detach");
            break;
        case DLL_THREAD_DETACH:
            message("thread detach");
            break;
    }
    return true;
}

當注入simpleinjected.exe時它可以工作,但是在Firefox中注入時,即使成功注入了dll也沒有任何反應。

我無法復制您的意見。 我能夠將dllinject.dll注入其他進程(也包括firefox),但從未見過消息框。

經過一番挖掘,我發現您的DLLMain拼寫錯誤。 將其更改為DllMain ,您將在Firefox中看到消息框。

順便說一句:您可能想將MessageBox更改為MessageBeep因為FireFox會創建/破壞很多線程...(即使進行快速測試,這也很煩人!)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM