질문 제목 : 함수의 주소를 구하는 방법을 생각해봤는데요질문 요약 :GetProcAddress에서 인자로 실행파일의 시작주소를 넣어주고 사용자 함수를 찾으려고 합니다질문 내용 :
Colored By Color Scripter™123456789101112131415#includeWindows.h#includestdio.hintmyfunc(){printf(helloworld\n);return0;}voidmain(){FARPROCa;a=GetProcAddress(GetModuleHandle(NULL),myfunc);printf(%x\n%x\n,myfunc,a);}실행해봤는데 a에는 0이 들어가 있었습니다.그래서 한번 발상의 전환을 해 보았습니다.Colored By Color Scripter™12345678910111213141516#includeWindows.h#includestdio.h__declspec(dllexport)intmyfunc(){printf(helloworld\n);return0;}voidmain(){FARPROCa;a=GetProcAddress(GetModuleHandle(NULL),myfunc);printf(%x\n%x\n,myfunc,a);a();}놀랍게도 정상적으로 호출이 됩니다.보통 함수들은 IAT영역에 위치하면서 loader가 실행시간에 정해진 주소에 로드해 준다 라고 알고있었는데dllexport를 붙여주면 IAT에 위치하는게 아니라 EAT에 위치하게 되는건가요? 아니면 양쪽 모두에 위치하게 되는건가요?
함수의 주소를 구하는 방법을 생각해봤는데요
세련 2026.05.04 댓글 0
댓글 0