Código:
#include <stdio.h>
#include <windows.h>
int main(int argc,char **argv)
{
typedef int (*punteroExitProcess)(UINT);
typedef int (*punteroBeep)(DWORD,DWORD);
typedef DWORD (*punteroGetCurrentProcessId)(void);
HMODULE dirKernel32=GetModuleHandle("kernel32.dll");
punteroExitProcess punteroExit=NULL;
punteroBeep punteroBep=NULL;
punteroGetCurrentProcessId GetCurrentProcessId2=NULL;
punteroExit=(punteroExitProcess)GetProcAddress(dirKernel32,"ExitProcess");
punteroBep=(punteroBeep)GetProcAddress(dirKernel32,"Beep");
GetCurrentProcessId2=(punteroGetCurrentProcessId)GetProcAddress(dirKernel32,"GetCurrentProcessId");
printf("Kernel32:%p\nExitProcess:%p\nBeep:%p\nGetCurrentProcessId:%p\n",dirKernel32,punteroExit,punteroBep,GetCurrentProcessId2);
printf("PID=%d\n",GetCurrentProcessId2());
punteroBep(1000,3000);
punteroExit(0);
}
Perdonen los nombres.La idea era obtener la direccion en memoria de kernel32 y jugar un poco con las funciones de este , a travez de punteros a funciones. Claro que hay formas mas faciles , solo era para repasar un poco.