简体   繁体   English

如何通过指向该函数的指针调用winapi函数?

[英]How to call winapi function via pointer to this function?

I get functions from ntdll.dll dynamically, using GetProcAddress winapi function like this: 我使用GetProcAddress winapi函数从ntdll.dll动态获取函数,如下所示:

HMODULE ntdllh = LoadLibrary(L"ntdll.dll");
unsigned char* ptrToNtLoadDriver 
                        = (unsigned char*)GetProcAddress(ntdllh, "NtLoadDriver");

How can I call NtLoadDriver function via ptrToNtLoadDriver ? 如何通过ptrToNtLoadDriver调用NtLoadDriver函数? I thought of something like this: ((NTSTATUS NtLoadDriver(PUNICODE_STRING driverServiceName))ptrToNtLoadDriver)(fooString) 我想到了这样的东西: ((NTSTATUS NtLoadDriver(PUNICODE_STRING driverServiceName))ptrToNtLoadDriver)(fooString)

  1. do typedef "X" for function type you want to call (example: "typedef returntype (*X)(argtype);") 对要调用的函数类型执行typedef“ X”(例如:“ typedef returntype(* X)(argtype);”)
  2. change "unsigned char* ptrToNtLoadDriver" to "X ptrToNtLoadDriver" 将“ unsigned char * ptrToNtLoadDriver”更改为“ X ptrToNtLoadDriver”
  3. call function as "ptrToNtLoadDriver(argsHere)" 调用函数为“ ptrToNtLoadDriver(argsHere)”

((NTSTATUS(WINAPI *)(PUNICODE_STRING))ptrToNtLoadDriver)(fooStrin);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM