写在前面
也做了一段时间的Windows逆向,编写了包含一系列API的WeChat机器人,将dll注入目标进程后,调用就成了问题,要调用,就要知道api函数的地址。
想要搞到地址,就要使用GetProcAddress这个函数,可是这个函数需要两个参数,CreateRemoteThread
只能传递一个参数,怎么办呢?这里提供两种解决方案。
获取RVA
这种方案比较简单,主要思路就是把dll加载到自身进程,再通过函数地址 - 模块句柄
的方式获取到目标函数的RVA。
然后使用GetModuleHandle
拿到远程进程中的模块句柄,加上RVA就得到了函数地址。
这种办法自然也有局限性,比如64位进程无