![]() |
|
#1
|
|||
|
|||
|
[C] Winapi Call Dynamically and easily
This Small Function Let You call winapi dynamically, without having to define function definition, or writing nonsense wrappers.
Code:
void* DynCall(void *ptr, ...)
{
char* function;
char* library;
va_list va;
void *p;
int i = 0;
DWORD argBuf[32];
DWORD ret;
HANDLE lib;
va_start(va, ptr);
library = ptr;
function = va_arg(va, void*);
p = va_arg(va, void *);
if(!(lib = GetModuleHandleA(library)))
lib = _LoadLibraryA(library);
if (!lib)
error("Cant load libarary %s", library);
void *funcAddress = _GetProcAddress(lib, function);
if (!funcAddress)
error("Cant Find Dynamic Address %s", function);
for (; p != 0xb33f; p = va_arg(va, void *)) {
argBuf[i++] = p;
}
for (i--; i >= 0; i--)
{
p = argBuf[i];
_asm {
push p
}
}
va_end(va);
_asm {
push lb
jmp funcAddress
lb:
mov ret, eax
}
return ret;
}
Code:
DWORD dwResult = DynCall("ntdll.dll","NtUnmapViewOfSection",
PI.hProcess,
(LPVOID)(NtHeader->OptionalHeader.ImageBase),0xb33f
);
I think it will be useful to someone. |
| The Following User Gave Reputation+1 to 0xall0c For This Useful Post: | ||
mr.exodia (03-20-2018) | ||
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Calling any function dynamically without typedef | Succubus | Source Code | 0 | 10-21-2021 16:34 |
| WinAPI: No WM_COMMAND Message? | aldente | General Discussion | 2 | 07-05-2006 07:17 |