디버거가 macOS 및 Linux에서 버전별 CLR(공용 언어 런타임) 디버깅 라이브러리에 대한 경로를 제공할 수 있습니다.
문법
HRESULT ProvideUnixLibrary (
[in] const WCHAR* pwszFileName,
[in] const WCHAR* pwszRuntimeModule,
[in] LIBRARY_PROVIDER_INDEX_TYPE indexType,
[in] BYTE* pbBuildId,
[in] int iBuildIdSize,
[out] LPWSTR* ppResolvedModulePath);
매개 변수
pwszFilename
[in] 요청되는 모듈의 이름입니다.
pwszRuntimeModule
[in] 런타임 또는 단일 파일 모듈 경로입니다.
indexType
[in] 제공된 인덱스 정보(pBuildId)의 형식입니다.
LIBRARY_PROVIDER_INDEX_TYPE 열거형을 참조하세요.
pbBuildId
[in] Linux 또는 macOS 모듈 빌드 ID입니다. 빌드 ID를 검색하는 데 문제가 있는 경우 null일 수 있습니다.
iBuildIdSize
[in] pbBuildId 배열의 바이트 수입니다. 빌드 ID를 검색하는 데 문제가 있는 경우 0일 수 있습니다.
ppResolvedModulePath
[out] 모듈 dll에 대한 null 종료 경로입니다. Unix에서는 CoTaskMemAlloc와 함께 할당되어야 합니다. Unix에서는 malloc와 함께 할당되어야 합니다. 실패는 그대로 둡니다. 아래 보안 참고 사항을 참조하세요!
반환 값
이 메서드는 메서드 오류를 나타내는 HRESULT 오류뿐만 아니라 다음과 같은 특정 HRESULT를 반환합니다.
HRESULT (작업의 성공 여부를 나타내는 결과 코드) | 설명 |
---|---|
S_OK |
메서드가 성공적으로 완료되었습니다. |
비고
ProvideUnixLibrary
를 사용하면 디버거가 mscordbi.dll 및 mscordacwks.dll같은 특정 CLR 파일을 디버깅하는 데 필요한 모듈을 제공할 수 있습니다.
디버거는 사용 가능한 수단을 사용하여 디버깅 모듈을 찾거나 조달할 수 있습니다.
중요합니다
이 기능을 사용하면 API 호출자가 실행 파일 및 악성 코드가 포함된 모듈을 제공할 수 있습니다. 보안 예방 조치로서 호출자는 직접 실행할 의사가 없는 코드를 배포하는 데 사용하면 ProvideUnixLibrary
안 됩니다.
mscordbi.dll 또는 mscordacwks.dll같은 이미 릴리스된 라이브러리에서 심각한 보안 문제가 발견되면 shim을 패치하여 잘못된 버전의 파일을 인식할 수 있습니다. 그런 다음 shim은 패치된 파일 버전에 대한 요청을 실행하고 요청에 대한 응답으로 제공되는 경우 잘못된 버전을 거부할 수 있습니다. 사용자가 새 버전의 shim에 패치를 적용한 경우에만 발생할 수 있습니다. 패치되지 않은 버전은 여전히 취약합니다.
요구 사항
플랫폼:.NET 지원 운영 체제를 참조하세요.
헤더: dbgshim.h
라이브러리: dbgshim.dll, libdbgshim.so, libdbgshim.dylib
.NET 버전: .NET Core 2.1 이후 사용 가능
.NET