[英]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.