gpt4 book ai didi

c++ - 使用远程线程的 DLL 注入(inject)在执行时不执行任何操作

转载 作者:行者123 更新时间:2023-11-30 02:38:03 26 4
gpt4 key购买 nike

长期以来,我一直在努力找出问题所在。我见过一些人分配:

GetProcAddress(GetModuleHandle("KERNEL32.dll"), "LoadLibraryA")

我想知道这是否是我必须做的,但我只是不明白那行代码到底做了什么。和我的dll函数没有关系,为什么要加载呢?

主要(控制台应用程序 A.K.A 注入(inject)器):

#include <iostream>
#include <windows.h>
#include <TlHelp32.h>

char* dllPath = "C:\\Users\\Kalist\\Desktop\\Projects\\DLL\\bin\\Debug\\DLL.dll";
typedef DWORD (WINAPI *pThreadFunc)();
char* ProcToInject = "calc.exe";

int main(){
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(PROCESSENTRY32);
HANDLE procSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
DWORD procID;

if(procSnap){
if(Process32First(procSnap, &pe32)){
do{
if(!strcmp(pe32.szExeFile, ProcToInject)){
procID = pe32.th32ProcessID;
break;
}
}while(Process32Next(procSnap, &pe32));
}
CloseHandle(procSnap);
}
HANDLE procAccess = OpenProcess(PROCESS_ALL_ACCESS, false, procID);
void* memSpace = VirtualAllocEx(procAccess, NULL, strlen(dllPath)+1, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
WriteProcessMemory(procAccess, memSpace, dllPath, strlen(dllPath)+1, NULL);
HINSTANCE getLibadd = LoadLibrary(dllPath);
pThreadFunc pThreadFuncVar = (pThreadFunc)GetProcAddress(getLibadd, "threadFunc");

CreateRemoteThread(procAccess, NULL, 0, (LPTHREAD_START_ROUTINE)pThreadFuncVar, memSpace, 0, NULL);

CloseHandle(procAccess);
}

DLL远程进程:

#include <iostream>
#include <windows.h>

extern "C" DWORD WINAPI threadFunc(){
MessageBox(0, "Injection worked!", "Injection message", MB_OK);
return 0;
}

最佳答案

您的代码的问题是 pThreadFuncVar 包含您的注入(inject)器进程中 threadFunc 的地址。但是,您的 Dll.dll 甚至没有加载到目标进程中。即使您的 dll 已加载,它也可能不会加载到同一地址,因此 pThreadFuncVar 地址在目标进程中仍然没有意义。

只有少数基本模块,如 KERNEL32,被加载到每个进程的相同地址。因此,如果您将 LoadLibraryA 的地址用于 CreateRemoteThread,它将从您复制到目标进程内存中的路径加载 dll。这将依次调用您的 dll 的 dll 附加过程,这是您要放置 MessageBox 调用的地方。

关于c++ - 使用远程线程的 DLL 注入(inject)在执行时不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31149264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com