我的目标是通过它的地址调用一些函数。我该怎么做?
我已经为这个目标做了下一个工作,但首先(1) - 我有访问冲突(不知道为什么),第二个我有一些调用函数的问题是带有 ESP 值的 ASM ......
第一个(访问冲突的问题):
#include <iostream>
#include <Windows.h>
const DWORD_PTR offset = 0x00001a90;
typedef void (__stdcall *uef)(int);
int main(void)
{
HMODULE hModule = LoadLibrary(L"C:\\Windows\\system32\\OpenAL32.dll");
DWORD_PTR addr = (DWORD_PTR)hModule + offset;
uef func = (uef)offset;
func(0);
return 0;
}
第二个(运行时的问题与 ESP 值):
#include <iostream>
#include <Windows.h>
typedef void (__stdcall *uef)(int);
int main(void)
{
HMODULE hModule = LoadLibrary(L"C:\\Windows\\system32\\OpenAL32.dll");
uef obj = NULL;
if(hModule != NULL)
{
obj = reinterpret_cast<uef>(GetProcAddress(hModule, "alEnable"));
}
if(obj != NULL)
{
(*obj)(0);
}
if(hModule != NULL)
{
FreeLibrary(hModule);
}
return 0;
}
我该如何解决这个问题?
附言
另一个主要问题是:
如何在运行时动态计算函数地址以便下次调用?
谢谢,
此致!