怎么调用远程注入后DLL中的函数
dll里写了个Add函数,也导出了,直接在exe里调用dll没问题,然后我把这个Dll注入到其他进程后不会调用Dll里的Add函数(注入是成功的),网上找了N久也不知道怎么搞,都说像LoadLibraryA一样调用,但是这个LoadLibraryA是全局的,所以进程里都有加载这个kernel32,而且网上说这个在每个进程里的地址一样,我自己注入的可不是全部进程注入的
GetProcAddress 后GetLastError 每次都是126,确认dll是注入成功的,有用工具查看过
怀疑这个GetProcAddress 是进行注入的Exe执行的,所以系统就在这个exe的模块里去找那个dll了,所以找不到
最后,RT问一下
DWORD dwID;
LPVOID pFunc = LoadLibraryA;
HANDLE hThread = CreateRemoteThread( hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)pFunc, lpBuf, 0, &dwID );
WaitForSingleObject( hThread, INFINITE );
//do
DWORD hDll;
lpAdd AddFunc;
GetExitCodeThread( hThread,&hDll );
HMODULE hmdll=(HMODULE)hDll;
if(hDll!=NULL)
{
AddFunc=GetProcAddress(hmdll,"Add");
DWORD aa= GetLastError();//这每次都是126(找不到模块)
if(AddFunc!=NULL)
{
AddFunc(2,3);
AfxMessageBox("遠程執行成功");
}
}
typedef int (*lpAdd)(int a,int b);
extern "C" __declspec(dllexport) int __stdcall Add(int a,int b)
{
return theApp.Add(a,b);
}
GetProcAddress 后GetLastError 每次都是126,确认dll是注入成功的,有用工具查看过
怀疑这个GetProcAddress 是进行注入的Exe执行的,所以系统就在这个exe的模块里去找那个dll了,所以找不到
最后,RT问一下
...全文


进程/线程/DLL
