2009-10-28 3 views
1

문제

기본 문제는 일부 타사 코드를 디버깅하여 작동 방법을 확인하여 일부만 대체 할 수있게하려는 것입니다.어셈블리 바인딩을 사용자 지정/서명되지 않은 DLL로 리디렉션

바인딩을 리디렉션하여 GAC에서 DLL을 사용하지 않고 대신 컴파일 된 복사본 (서명되지 않거나 다른 공개 키가 있음)이 있어야합니다.


세부

문제의 특정 항목은 asp.net의 MVC는 이유는 최적화 된 GAC에 DLL의 복사본이며, 마이크로 소프트의 소스에서 소스 코드를 올바르게 일치하지 않는 것입니다 섬기는 사람.

Microsoft는 asp.net mvc의 소스를 릴리스 했으므로 다운로드하여 컴파일 할 수 있지만 분명히 자신의 키로 dll에 서명 할 수는 없지만 자체 키로 서명 할 수는 있지만 다른 공개 키 토큰.

간단한 대답은 내 응용 프로그램에서 내 DLL을 참조하고 응용 프로그램을 다시 컴파일하는 것입니다. 그렇지만 asp.net mvc (예 : mvccontrib)를 참조하는 다른 모든 타사 DLL도 다시 컴파일해야합니다.

+0

해결 방법을 얻었습니까? 나는이 정확한 문제가있다. 꽤 가이드 거기 주위 (ScottGu의 블로그?) MVC dll의 비 GAC 버전을 사용하기 때문에, 그것은 퍼즐의 모든 조각처럼 보인다 ... – notJim

답변

0

SN.EXE tool으로 서명 확인을 조정할 수 있습니다.

sn -Vr assembly 

GAC에서 원래 어셈블리를 등록 취소 한 다음 프로그램 폴더에 자신을 넣고 SN을 사용하여 확인을 건너 뜁니다.

+0

거기 그것을 제거하는 것을 피할 수있는 방법이 있습니까? gacutil이 MSI 설치 프로그램에서 참조하는 gacutil이이를 제거하는 것을 거부하고 있기 때문에 일반적으로 무차별 공격을 피하고 나중에 임의의 작업을 중단하는 것이 좋습니다. –

0

지연된 서명 된 dll/exes가있는 시스템에 '패치'하는 것과 유사한 문제가있었습니다. sn -Vr *,[PublicKey]을 사용하도록 유도하고 SecurityException : 강력한 이름 유효성 검사에 실패했습니다. 그런 다음 레지스트리 위치 : HKLM\Software\Microsoft\StrongName\VerificationHKLM\Software\Wow6432Node\Microsoft\StrongName\Verification을 보면 일부 잘못된 항목이있는 것으로 보입니다. 잘못된 항목을 제거한 다음 다시 sn을 사용하여 (64/32 비트 용) 매력처럼 작동했습니다.

관련 문제