#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) |
Thread Tools | |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Calling any function dynamically without typedef | Succubus | Source Code | 0 | 10-21-2021 16:34 |
[MASM Source] - ZwCreateThread example (winAPI CreateThread emulation) | TomaHawk | Source Code | 4 | 09-08-2019 14:06 |
WinAPI: No WM_COMMAND Message? | aldente | General Discussion | 2 | 07-05-2006 07:17 |