2011-01-07 3 views
1

win32 API를 호출하는 함수는 무엇입니까?이 기능을 수행하는 시스템 호출은 무엇입니까?

_itoa_s(), strcat_s() 
+0

이들은 Win32 함수가 아니며 Microsoft CRT의 일부입니다. –

+2

소스'% programfiles % \ Microsoft Visual Studio 10.0 \ VC \ crt \ src \ xtoa.c'와'% programfiles % \ Microsoft Visual Studio 10.0 \ VC \ crt \ src \ tcscat_s.inl'을보십시오. – dalle

답변

1

정말 하나뿐입니다. SetUnhandledExceptionFilter(). TerminateProcess()가 뒤에옵니다. 함수가 버퍼 오버 플로우를 감지하면 코드 경로에있는 것입니다. 이렇게하면 처리되지 않은 예외 필터를 연결하고 의도적으로 액세스 위반이 발생하여 맬웨어가 활성화되지 않습니다. 불행히도 오버플로가 간단한 프로그래밍 버그에 의해 트리거 될 때 사용자 정의 충돌보고를 수행하는 것을 매우 어렵게 만듭니다. 코드는 vc/crt/gs_report.c에 있습니다.

4

가능하지 않음.

이러한 기능은 MicroSoft C 표준 itoastrcat의 보안 버전입니다. 이 C 함수는 시스템 라이브러리가 아닌 C 라이브러리의 일부입니다. 그들이 제공하는 기능은 시스템 호출이 필요없이 완전히 구현 될 수 있습니다.

하지만 결국 시스템 호출을하는지 여부는 전혀 알 수 없습니다.

+1

C 표준 라이브러리의 모든 함수가 아니라 이러한 특정 함수는 시스템 호출없이 구현 될 수 있습니다. – bcsanches

+0

소스를 살펴보면 둘 다'_SECURECRT__FILL_STRING' 매크로를 사용하는 것처럼 보입니다.이 매크로는'memset'을 호출하여 x64에서'RtlFillMemory'를 호출합니다. – dalle

1

디버거를 사용하여 디버거로 들어가서 정확히 수행 할 수 있습니다. 언뜻보기에, 그들은 시스템 호출을하지 않습니다. 이것은 내가 기대하는 것입니다.

1

"기본"시설에 시스템 호출이 필요한지 성능 관점에서 볼 때 매우 걱정됩니다. 귀하의 질문에 대한 명확한 답변이 없지만 상식적 인 의미는 다음과 같습니다.

관련 문제