LoadLibrary로 iphlpapi.dll을로드 할 때 스택 버퍼 오버런이 발생합니다! 이 문제는 어떻게 해결할 수 있습니까?!STATUS_STACK_BUFFER_OVERRUN (LoadLibrary 포함)
typedef DWORD (*GetExtendedTcpTable)(PVOID, PDWORD, BOOL, ULONG, TCP_TABLE_CLASS, ULONG);
GetExtendedTcpTable _GetExtendedTcpTable;
// load function at runtime
HINSTANCE hstLibrary = LoadLibrary("C:\\Windows\\System32\\Iphlpapi.dll");
if(!hstLibrary)
{
::MessageBox(NULL,"Can't load Iphlpapi.dll!\n","Error",
MB_OK + MB_ICONEXCLAMATION + MB_TASKMODAL);
FreeLibrary(hstLibrary); // free memory
exit(0);
}
// load function address from dll
_GetExtendedTcpTable = (GetExtendedTcpTable)GetProcAddress(hstLibrary, "GetExtendedTcpTable");
lib 디렉토리 기능의로드 및 실행은 잘 작동하지만, 어느 시점에서 내 프로그램은 STATUS_STACK_BUFFER_OVERRUN 예외가 발생합니다! (일부 지점 : 문자열 연산을 주석으로 처리 할 때 오류가 몇 줄 발생 함)
LoadLibrary 및 GetProcAddress (정적 바인딩)를 사용하지 않으면 버퍼 오버런이 발생하지 않습니다!
감사 인사,
leon22는
라이브러리 헤더 파일에서'GetExtendedTcpTable()'의 정의는 무엇입니까? – sharptooth