如何得到目标进程中加载的DLL的函数地址并远程调用
答案:2 悬赏:70 手机版
解决时间 2021-02-01 03:23
- 提问者网友:鐵馬踏冰河
- 2021-01-31 09:18
如何得到目标进程中加载的DLL的函数地址并远程调用
最佳答案
- 五星知识达人网友:怀裏藏嬌
- 2021-01-31 10:20
要在目标进程中找到DLL的函数地址,就要在目标进程中调用GetModuleHandle和GetProcAddress函数,要把以下代码放到目标进程中执行。
Pushad
pushfd
Mov EBX ,ls //ls是注入的模块路径在目标进程中的指针
Push EBX
Mov ECX ,GetModuleHandle //这两个函数地址可以在本地进程中得到。
Call ECX
Mov EBX,ls2 //要调用函数的导出名在目标进程中的地址
Push EBX
Push EAX
Mov ECX,GetProcAddress
Call ECX
Call EAX //GetProcAddress返回的地址在eax中,这里只是调用无参数的函数,如果有参数就很麻烦了。
popfd
Popad
Ret
这样处理了以后,DLL中要执行的无参数函数就可以不用放在DLLMAIN中了,DLL中可以做很多函数进去,放便在不同的目标进程中注入,可以让DLL更具有灵活性。
Pushad
pushfd
Mov EBX ,ls //ls是注入的模块路径在目标进程中的指针
Push EBX
Mov ECX ,GetModuleHandle //这两个函数地址可以在本地进程中得到。
Call ECX
Mov EBX,ls2 //要调用函数的导出名在目标进程中的地址
Push EBX
Push EAX
Mov ECX,GetProcAddress
Call ECX
Call EAX //GetProcAddress返回的地址在eax中,这里只是调用无参数的函数,如果有参数就很麻烦了。
popfd
Popad
Ret
这样处理了以后,DLL中要执行的无参数函数就可以不用放在DLLMAIN中了,DLL中可以做很多函数进去,放便在不同的目标进程中注入,可以让DLL更具有灵活性。
全部回答
- 1楼网友:有你哪都是故乡
- 2021-01-31 11:59
什么是远线程?我们知道用createthread可以在当前进程里建立一个线程,远线程与此类似,只不过是在其他进程中建立一个线程,用api函数createremotethread。这个远线程建立后就与建立它的进程无关了,而是进入了另外一个进程。举例说,进程a可以在进程b中建立一个远线程,这个远线程就是进程b中的线程了,而此时如果进程a结束了,也不会影响到那个远线程的运行,除非进程b也结束了,那个远线程才会结束。 如果要启动注入的线程还需要启动的代码,不会因为注入就直接执行
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯