关于调用dll导出函数的有关问题
关于调用dll导出函数的问题
例如我写一个dll,然后将这个dll注入到了另外一个进程B.EXE里。
此时我A.EXE想通过调用dll的导出函数,实现调用B.EXE里的功能函数。
请问有何种方法实现呢?
注入我用的是远程线程注入进去的。。
求解。。。
------解决方案--------------------
A.exe 和 dll 建立通信管道,例如使用socket或者共享内存,让dll来调用B.exe的函数。
------解决方案--------------------
首先,A和B两个进程是隔离的,不能A调用直接在B里执行,不过既然DLL注入进去了,办法就多了,下面给你举个例子:
这样,你在B进程里建立线程,循环调用这个函数,那么在做“做要在b进程中做的工作;”前,B进程就会阻塞并等待,当A进程调用这个函数时,B进程里的 WaitForSingleObject 会立即返回。
这只是个例子,方法很多,不外乎进程通信,比如可通过 socket pipe mailslot 等发消息给B进程,让B进程做一些东西。
例如我写一个dll,然后将这个dll注入到了另外一个进程B.EXE里。
此时我A.EXE想通过调用dll的导出函数,实现调用B.EXE里的功能函数。
请问有何种方法实现呢?
注入我用的是远程线程注入进去的。。
求解。。。
------解决方案--------------------
A.exe 和 dll 建立通信管道,例如使用socket或者共享内存,让dll来调用B.exe的函数。
------解决方案--------------------
首先,A和B两个进程是隔离的,不能A调用直接在B里执行,不过既然DLL注入进去了,办法就多了,下面给你举个例子:
void WINAPI InvokeThis()
{
if (本进程是 a.exe)
{
HANDLE hEvt = OpenEvent(xxxxxx);
SetEvent(hEvt);
CloseHandle(hEvt);
}
else if (本进程是 b.exe)
{
WaitForSingleObject(xxxxxx);
ResetEvent(xxxxxx);
做要在b进程中做的工作;
}
}
这样,你在B进程里建立线程,循环调用这个函数,那么在做“做要在b进程中做的工作;”前,B进程就会阻塞并等待,当A进程调用这个函数时,B进程里的 WaitForSingleObject 会立即返回。
这只是个例子,方法很多,不外乎进程通信,比如可通过 socket pipe mailslot 等发消息给B进程,让B进程做一些东西。