C# 응용 프로그램의 분해 방지 방법 [폐쇄
-
16-09-2019 - |
문제
C# 및 MySQL을 사용하여 클라이언트 서버 응용 프로그램을 개발할 계획입니다. 우리는 다른 소프트웨어 유틸리티와 마찬가지로 제품을 선반에서 판매 할 계획입니다. 우리는 유용성과 번들 기능 측면에서 경쟁 업체보다 일종의 우위를 점하는 제품의 분해에 대해 걱정하고 있습니다.
소프트웨어가 소집되는 것을 방지하여 제품의 비즈니스 논리가 그대로 유지 될 수 있습니까?
우리는 리플렉터 및 기타 디 컴파일러에 대해 들었습니다.이 컴파일러는 코드를 복사하기에 매우 취약하게 만듭니다.
우리의 고객 기반은 기업이 아니라 자신이하지 않을 수있는 의료 실무자이지만 경쟁 업체는 라이센스를 복사/비활성화하거나 코드/기능을 복제하여 제품의 가치가 시장에서 줄어들기를 원할 수도 있습니다.
이를 방지하기위한 제안은 가장 환영합니다.
해결책
클라이언트 컴퓨터에 .NET 어셈블리를 배포하는 경우 리플렉터 및 유사한 도구를 사용하여 항상 어떤 종류의 탈퇴가 가능합니다.
그러나이 상황은 네이티브 C ++로 응용 프로그램을 작성하면 발생하는 것과 실질적으로 다르지 않습니다. 불가능하다면 프로세서도 이해할 수 없었습니다.
당신은 결코 전문가 크래커를 물리 치지 않을 것입니다. 그들은 당신의 보안을 도전을 위해 해결하기 위해 지적 퍼즐로 취급 할 것입니다.
이 질문은 라이센스 관행을 물리 치는 것이 얼마나 어려운지에 관한 것입니다. 투자 수익.
스프레드 시트와 함께 앉아서 가능한 시나리오를 살펴보십시오. 위험은 생각보다 적을 것입니다.
"사용 편의성"과 같은 요소는 모든 사용자가 관찰 할 수 있도록 소프트웨어에서 볼 수 있으므로 복사하기가 쉽다고 생각합니다. 그러나 대부분의 개발자 (나 자신이 포함 된)는 일반적인 사용자와는 다르기 때문에 좋은 사용자 경험은 드물며 거의 복사되지 않습니다.
나는 당신이 크래커의 직업을 더 세게 만드는 데 집중할 것을 제안합니다.
시도 할 가능성 중 하나 : 설치 프로세스의 일부로 어셈블리를 기본 코드로 사전 컴파일 할 수 있습니다. Paint.net은 성능의 이유로이를 수행합니다. 일단이 작업을 마치면 원래 어셈블리를 버리고 최적화 된 기본 코드 에디션을 사용할 수 있다고 생각합니다.
다른 팁
그것이 나라면, 나는 난독 화하려고 시도하지 않을 것이다. 나는 :
- 그것에 대해 걱정하지 않고 지속적으로 개선하고 앞에 머무르는 것을 목표로합니다.
그러나 둘째로
- 웹을 통해 '비밀'서비스를 제공하는 것을 고려하십시오. 이것이 얼마나 중요한지 결정하는 것은 당신에게 달려 있습니다. 그러나 최종 사용자는 코드가 없기 때문에 "소집을 방지합니다.
.NET Obfuscator 용 Google. 당신은 이것에 도움이 될 많은 제품을 찾을 것입니다. 또한 스택 오버플로에는 이미 관련 질문이 있습니다.
여기 몇 가지가 있습니다.
편집하다: 객관화 도구를 검색하는 동안 오픈 소스 도구를 발견했습니다. de4dot. 이 도구는 대부분의 상업용 도구로 생성 된 난민한 DLL을 디 컴파일하는 것을 지원하며 꽤 좋은 일을합니다.
내가 이것을 마지막으로 살펴 보았을 때 Spices.net Obfuscator 시장에서 가장 좋은 것처럼 보였습니다.
아니, 나는 그들을 위해 일하지 않습니다. :)
나는 사용한다 SmartAssembly. 사용하기가 간단하며 크래시 보고서를 다시 보낼 수 있습니다.
다른 사람들이 언급 한 Obfuscators는 매우 좋을 것입니다.
당신이 고려하지 않았을 수도있는 대안적인 접근법은 C ++와 같은 기계 코드로 완전히 컴파일 된 언어를 사용하여 일부 핵심 비즈니스 논리를 코딩하는 것입니다.
이를 수행하는 이점은 누군가가 코드를 소집하기가 훨씬 더 어려워지는 것입니다. 이에 대한 단점은 유지할 두 가지 언어로 코드가 있다는 것입니다. 이것은 귀하의 상황에 가장 적합한 접근 방식이 아닐 수도 있지만 코드의 나머지 부분이 UI 보풀 인 동안 코드의 작은 부분 만 난독 화 해야하는 경우 유용합니다.
예를 들어, 의료 소프트웨어 패키지는 의사에게 해당 땀샘의 크기를 알려주는 목적으로 특정 땀샘의 가장자리 감지를 수행 할 수 있습니다. 비트 맵 이미지에서 땀샘 크기를 계산하기위한 알고리즘은 C ++로 작성된 DLL에 포함됩니다.
.NET 코드 주변의 C ++ 래퍼에 대한 질문에 답변합니다. 애플리케이션을 배포 할 때 최종 C ++ DLL 및 .NET DLL이 비즈니스 로직 코드가 별도의 엔티티가되며 비즈니스 로직에 도달하려는 사람들은 여전히 .NET DLL 및 내부를 엿볼 수 있습니다.
고려하고 싶을 수도 있습니다 Remotesoft Salamander Protector이것은 높은 수준의 언어로 소환하는 것이 불가능하다는 점에서 다른 무엇보다 훨씬 낫습니다.
물론, 전문가 인 사람은 소프트웨어로 충분한 시간을 보내고 일부는 소환하기 때문에 알아낼 수 있지만 모든 세트를 숨기고 방법을 얻을 수 있습니다.
그래서 그들은 정점을 얻을 수 있지만 그게 그것에 관한 것입니다. 그들은 단지 그것을 깨는 사람의 확률을 낮추는 나머지를 알아 내야합니다.
도움이 되었기를 바랍니다
Obfuscator는 코드를 혼동하지만 보호자는 보호합니다. .NET Protector를 사용할 수 있습니다. NetWinProtector
Intellilock은 난독 화 및 라이센스 측면에서 우리의 목적을 잘 수행했습니다. 그러나 지원이 마크에 달려 있지 않기 때문에 제품을 추천하지 않을 것입니다. 우리는 우리가 직면 한 문제에 대한 정시에 답장을받지 못했습니다. 우리는 자체적으로 검색하고 연구하거나 심지어 목표를 달성하기 위해 비즈니스 요구 사항을 변경해야했습니다.
이 답변을 통해 나는 소프트웨어를 홍보하거나 강등하려는 것이 아니라 사람들이 우리가 사용하고있는 제품에 대해 인식하여 현명한 결정을 내릴 수 있도록하기를 원합니다.