런타임 다이나믹 링킹 (Run-time Dynamic Linking)
코드
// 윈도우 API 함수 포인터 구조체 생성
typedef LPVOID(WINAPI* _VirtualAlloc)(LPVOID, SIZE_T, DWORD, DWORD);
// 필요한 문자열 unsigned char 형태로 저장
unsigned char sKernel32[] = { 'K','e','r','n','e','l','3','2',0x0 };
unsigned char sVirtualAlloc[] = { 'V','i','r','t','u','a','l','A','l','l','o','c',0x0 };
// 런타임 중 DLL의 모듈 핸들을 구한 뒤 exported 함수의 핸들을 구함. 그 뒤 윈도우 API 함수 포인터 구조체로 캐스팅 (형변환)
_VirtualAlloc pVirtualAlloc = (_VirtualAlloc)(GetProcAddress(GetModuleHandleA((LPCSTR)sKernel32), (LPCSTR)sVirtualAlloc));
...
// 4. 이제부터 VirtualAlloc 대신 pVirtualAlloc 을 사용 실습


References
Last updated