2016-07-20 2 views
2

현재 C#에서 개발 된 응용 프로그램을 작성 중입니다. Google은 앱 보안 방법을 찾고 있습니다. 나는 디 컴파일을 막는 것이 거의 불가능하다는 것을 알고 있지만 재 컴파일을 막는 방법이 있는지 알고 싶다.C# - 재 컴파일 방지

내 앱을 디 컴파일하거나 소스 코드를 변경 (예 : 라이센스가 확인 된 경우 건너 뛸 수 있음) 한 다음 다시 컴파일하면 성공한 것입니다. 재 컴파일을 피할 수있는 방법이 있습니까?

+2

어셈블리에 서명 할 수 있습니다! http://stackoverflow.com/questions/3975723/c-why-sign-an-assembly –

+1

컴파일 된 코드를 공격자에게주지 마십시오 (예 : 제어하는 ​​시스템에서만 코드를 실행하십시오.) 필요한 경우 기능을 노출하십시오 * 적절한 원격 액세스 기술 (HTTP, RPC 등)을 통해) –

+5

@CallumLinington - 서명은 여기서는 아무런 도움이되지 않습니다. 공격자는 코드를 다시 컴파일하고 전혀 서명하지 않을 수 있습니다. –

답변

1

결국 재 컴파일을 막을 수는 없습니다. 결국 그것은 모두 일리노이이며, 쉽게 되돌릴 수 있습니다.

그러나 일부 난독 화 도구는 C#에서 유효하지 않은 속성 및 필드 이름을 사용합니다. 즉, 코드를 다시 컴파일하면 지옥이됩니다. 먼저 모든 문제를 해결해야합니다. 나는 우리 자신의 난독 화 된 어셈블리 중 하나에 대해 테스트하려고 노력했습니다. 몇 시간 후에 시도를 중단했는데 꽤 효과적이었습니다.

또한 난독 화 도구는 실제로 발생하는 것을 이해하기 어렵도록 코드를 스크램블하므로 라이센스 시스템을 찾고 이해하는 것이 매우 어려워집니다.

+0

[네이티브 코드로 컴파일] (https://msdn.microsoft.com/en-us/library/dn584397(v=vs.110) .aspx)이 좋거나 더 나은 난독 화 전략이 될 수 있습니까? –

+0

그게 옵션이긴하지만, 개발할 때 몇 가지 단점이 있습니다. –

1

실제로 (컴파일 된) 코드를 배포하려는 경우에는 다시 컴파일하는 데는 아무 것도 할 수 없습니다 (유용합니다). 당신은 어쨌든 그것을 할 수 없다는 것을 알기 위해 "예방"하는데 많은 시간과 돈을 소비하게 될 것입니다.

대기업은이를 방지하기 위해 상당한 비용을 지출하고 (예 : Adobe) 제품에 여전히 금이 가고 있습니다.

Patrick이 제안한 것처럼 난독 화를 시도 할 수는 있지만 크래커에게는 약간의 장애물이되지만 스택 추적은 정말 엉망입니다. 스택 파일을 디코딩 (릴리스 버전)하기 위해 매핑 파일을 저장하고 관리해야합니다.