[英]Program can't find twitcurl.lib and I don't know how to specify the location
[英]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.