簡體   English   中英

如果我不知道它會在哪里,如何指定 a.dll 的路徑?

[英]How can I specify path of a .dll if I don't know where it will be?

我正在制作一個程序,將 a.dll 注入正在運行的進程中。 我需要指定.dll 的路徑才能正確注入,但是如果注入器(and.dll)與其他人共享,我該如何指定直接路徑? 我曾考慮將 .exe 注入器和 .dll 放在同一個文件夾中,但我不確定如何指定注入器程序需要搜索以查看 specific.dll 是否與它位於同一文件夾中。 我將在下面顯示一個示例代碼:

system("start SnippingTool.exe");

    const char* dllPath = "C:\\Users";
    const char* procName = "SnippingTool.exe";
    DWORD procId = 0;

    while (!procId)
    {
        procId = GetProcId(procName);
        Sleep(30);
    }

    HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, 0, procId);

    if (hProc && hProc != INVALID_HANDLE_VALUE)
    {
        void* loc = VirtualAllocEx(hProc, 0, MAX_PATH, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);

        WriteProcessMemory(hProc, loc, dllPath, strlen(dllPath) + 1, 0);

        HANDLE hThread = CreateRemoteThread(hProc, 0, 0, (LPTHREAD_START_ROUTINE)LoadLibraryA, loc, 0, 0);

        if (hThread)
        {
            CloseHandle(hThread);
        }
    }

    if (hProc)
    {
        CloseHandle(hProc);
    }
    return 0;
}

而且我知道我使用系統打開了進程,但是我遇到了同樣的問題,我不知道如何指定 SnippingTool 所在的特定文件路徑。 對於某些人來說,這可能是一個簡單的解決方案,但我學習如何編碼的旅程大約還有一周的時間。 任何提示或指示將不勝感激!

不錯的噴油器源碼,看着眼熟:P

如果您要運送注射器,請將 DLL 運送到同一文件夾中。

這里有兩種方法可以做到:

#include <filesystem>
namespace fs = std::filesystem;

char szExePath[MAX_PATH];
GetModuleFileNameA(GetModuleHandle(NULL), szExePath, MAX_PATH);
fs::path exePath(szExePath);

fs::path dllPath = exePath.replace_filename("DllName.dll")

if (fs::exists(dllPath))
    std::cout << "File Exists";
else
    std::cout << "File Does Not Exist";
#include <filesystem>
namespace fs = std::filesystem;

int wmain(int argc, wchar_t* argv[])
{
    fs::path thisExe = fs::path(argv[0]);
    fs::path currentFolder = dstFolder.remove_filename();
    fs::path dllPath = currentFolder / "DllName.dll"); 
    
    if (fs::exists(dllPath))
        std::cout << "File Exists";
    else
        std::cout << "File Does Not Exist";
}

暫無
暫無

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

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