문제

나는 어셈블리는 사용될 모든 응용 프로그램에 의해 다른 것보다는 지정된 실행 파일을 실행합니다.저에게 어떤 지침니다.

도움이 되었습니까?

해결책

당신이 등록할 수 있는 어셈블리 및 실행으로 동일한 핵심과 다음에 체크를 넣어 생성자의 클래스를 보호하려면:

public class NotForAnyoneElse {
  public NotForAnyoneElse() {
    if (typeof(NotForAnyoneElse).Assembly.GetName().GetPublicKeyToken() != Assembly.GetEntryAssembly().GetName().GetPublicKeyToken()) {
      throw new SomeException(...);
    }
  }
}

다른 팁

습니다.Net2.0 또는 더 나은,모든 걸 내부,다음 사용하 Friend 어셈블리

http://msdn.microsoft.com/en-us/library/0tke9fxk.aspx

이 멈추지 않을 것이다.고 싶을 통합하는 일부의 정보는 아래에서.당신이 절대적으로 필요한 누군가를 중지에서 호출하는,아마도 최고의 솔루션입니다:

  1. ILMerge 니다.exe 다.dll
  2. obfuscate 최종.exe

도 확인할 수 있습 호출 스택을 얻을 어셈블리 각자는지 확인들은 모두 서명한 것과 같은 키를 조립합니다.

100%완전히 불가능하지 않고 점프를 통해 농구.

의 하나의 특권을 사용하여.NET 사용하는 능력이 반사되는 부하까지 어셈블리 및 검사하여 동적으로 메소드를 호출,etc.이것은 무엇 interop 사 VB.NET F#가능합니다.

그러나,이후 코드에서는 관리형 어셈블리는 것을 의미 누구나 참조를 추가 코드를 호출하여 해당 공용 방법 또는 부하를 사용하여 그것을 반영하고 부르 프라이빗 방법.는 경우에도'obfuscate'코드,사람들은 여전히 사용할 수 있 반영하고 호출의 코드입니다.그러나,이후 모든 이름으로 마스킹을 하는 아무것도 prohibitavely 어렵습니다.

는 경우에 당신을 발송해야 합니다.순 코드에서는 패션을 방지하는 다른 사람들,그것을 실행할 수 있습니다 NGEN 바이너리(컴파일하 86)및 선박 사람들 수 있습니다.

나는 알고 있지 않은 상황의 특성,하지만 난처해야 충분합니다.

당신은 수도에 사용하는 Netz 패커 실행 및 압축기입니다.

이 어셈블리와.exe 파일 및 팩으로 그들을 단일 실행 그래서 그들은 보이지 않는 외부 세계없이 파고 주변에 있다.

내 생각은 이것은 충분에 대한 액세스를 방지하기 위해 대부분입니다.net 프로그래머를 위한 것입니다.

는 큰 이득이다.netz 접근 방식은 그것이 필요하지 않 코드를 변경합니다.또 다른 혜택은 정말 단순화 설치 과정이다.

할 수 있어야 모든 것을 만들기 위해 내부적으로 범위를 지정,다음 사용 InternalsVisibleTo 특성에게만 부여되는 하나의 어셈블리에 액세스 내부 방법이 있습니다.

코드 액세스 보안 특성@샤 그레이엄 언급하는 StrongNameIdentityPermissionAttribute

어떤 사람들이 사용하 InternalsVisibleTo 특성을 표시 모든 것 내부입니다.물론 이것지 않을 것에 대비 반영합니다.

한 가지 않는 언급되는 것입 ilmerge 어셈블리로습니다.exe/.dll/아이의 장벽 항목에 대한 비트(지 않는 사람은 볼 수있는 당신의 assemby 에 앉아 자신의 요구를 참조)지만,중지하는 반사를 날고있다..

업데이트:또한 IIRC,ilmerge 는 기능을 할 수있는 자동으로 소화 하 병합된 어셈블리는 것을 의미한 당신을 사용할 필요가 없 InternalsVisibleTo 에서 모든

나는 확실하지 않으면 이것은 사용 가능한 avenue 당신이지만,아마도 당신할 수 있는 호스트를 사용하여 어셈블리 또는 WCF ASP.NET 웹 서비스를 사용하여 어떤 종류의 인증 체계(LDAP,공/rpivate 키 쌍,etc.) 을 위해서만 허용되는 클라이언트가 연결합니다.이지 어셈블리는 육체적으로 다른 사람의 손을 제어할 수 있으며 누가하여 연결합니다.다만 생각했다.

할 수 있습니다 설정에 액세스 코드에 대한 보안 정책을 어셈블리입니다.

당신이 사용할 수 있습 난독.

입니다:

int MySecretPrimeDetectionAlgorithm(int lastPrimeNumber);

으로 무언가를 읽을 다음과 같:

int Asdfasdfasdfasdfasdfasdfasdf(int qwerqwerqwerqwerqwerqwer);

다른 사람들이 아직도 사용하실 수 있도록 조립하지만,그것은을 확인하기 어려울 것이다 모든 합리적이다.

그것은 당신을 찾고 보호 또는 난처 도구입니다.안이 있으로 모든 문제가 해결되는 것은 아닙,보호 도구는 내가 추천 smartassembly.몇몇 대안 도롱뇽 난독, dotfuscator, 고 Xenocode.

는 경우 불행하게도 당신이 당신의 바이트는 누군가에게 읽을 수...는 경우 그들은 충분한 시간과 노력,그들이 할 수 있는 방법을 찾을 로드하고 통신의 코드입니다.를 선제 대답==============마시 당신은 자주 묻:도롱뇽을 방지하는 코드로드되는 직접적으로 반사 도구지만,나는 더 나은(ie:더 많은 신뢰할 수 있는)경험 smartassembly.

이게 도움이 되었으면 좋겠습니다.:)

는 경우 어셈블리에 대한 웹 서비스를 들어,당신은 수 있도록 지정된 실행 파일을 전달하는 비밀은 값에 비누 메시지입니다.

다만 필요한 코드를 통과를 보내에서 사용하는 함수 호출되지 않은 경우 허가 아무 것도 작품,니다.setAuthorizeCode('123456')다음에서 매일 사용할 수 있는 곳이다 경우 확인 authorizeCode!= 123456 그 오류 또는 종료...그것은 같은 소리 하지 않은 좋은 응답을 다시 사용성을 높이는 정확하게 지점입니다.

시간 사용 될 수 있습은 당신할 때 하드 코딩은 권한을 부여 코드로 프로그램입니다.

다만 생각될 수 있 당신이 무엇을 찾고 있거나 당신에게 영감을 뭔가를 더합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top