문제

C# 및 MySQL을 사용하여 클라이언트 서버 응용 프로그램을 개발할 계획입니다. 우리는 다른 소프트웨어 유틸리티와 마찬가지로 제품을 선반에서 판매 할 계획입니다. 우리는 유용성과 번들 기능 측면에서 경쟁 업체보다 일종의 우위를 점하는 제품의 분해에 대해 걱정하고 있습니다.

소프트웨어가 소집되는 것을 방지하여 제품의 비즈니스 논리가 그대로 유지 될 수 있습니까?

우리는 리플렉터 및 기타 디 컴파일러에 대해 들었습니다.이 컴파일러는 코드를 복사하기에 매우 취약하게 만듭니다.

우리의 고객 기반은 기업이 아니라 자신이하지 않을 수있는 의료 실무자이지만 경쟁 업체는 라이센스를 복사/비활성화하거나 코드/기능을 복제하여 제품의 가치가 시장에서 줄어들기를 원할 수도 있습니다.

이를 방지하기위한 제안은 가장 환영합니다.

도움이 되었습니까?

해결책

클라이언트 컴퓨터에 .NET 어셈블리를 배포하는 경우 리플렉터 및 유사한 도구를 사용하여 항상 어떤 종류의 탈퇴가 가능합니다.

그러나이 상황은 네이티브 C ++로 응용 프로그램을 작성하면 발생하는 것과 실질적으로 다르지 않습니다. 불가능하다면 프로세서도 이해할 수 없었습니다.

당신은 결코 전문가 크래커를 물리 치지 않을 것입니다. 그들은 당신의 보안을 도전을 위해 해결하기 위해 지적 퍼즐로 취급 할 것입니다.

이 질문은 라이센스 관행을 물리 치는 것이 얼마나 어려운지에 관한 것입니다. 투자 수익.

스프레드 시트와 함께 앉아서 가능한 시나리오를 살펴보십시오. 위험은 생각보다 적을 것입니다.

"사용 편의성"과 같은 요소는 모든 사용자가 관찰 할 수 있도록 소프트웨어에서 볼 수 있으므로 복사하기가 쉽다고 생각합니다. 그러나 대부분의 개발자 (나 자신이 포함 된)는 일반적인 사용자와는 다르기 때문에 좋은 사용자 경험은 드물며 거의 복사되지 않습니다.

나는 당신이 크래커의 직업을 더 세게 만드는 데 집중할 것을 제안합니다.

시도 할 가능성 중 하나 : 설치 프로세스의 일부로 어셈블리를 기본 코드로 사전 컴파일 할 수 있습니다. Paint.net은 성능의 이유로이를 수행합니다. 일단이 작업을 마치면 원래 어셈블리를 버리고 최적화 된 기본 코드 에디션을 사용할 수 있다고 생각합니다.

다른 팁

그것이 나라면, 나는 난독 화하려고 시도하지 않을 것이다. 나는 :

  1. 그것에 대해 걱정하지 않고 지속적으로 개선하고 앞에 머무르는 것을 목표로합니다.

그러나 둘째로

  1. 웹을 통해 '비밀'서비스를 제공하는 것을 고려하십시오. 이것이 얼마나 중요한지 결정하는 것은 당신에게 달려 있습니다. 그러나 최종 사용자는 코드가 없기 때문에 "소집을 방지합니다.

.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이것은 높은 수준의 언어로 소환하는 것이 불가능하다는 점에서 다른 무엇보다 훨씬 낫습니다.

물론, 전문가 인 사람은 소프트웨어로 충분한 시간을 보내고 일부는 소환하기 때문에 알아낼 수 있지만 모든 세트를 숨기고 방법을 얻을 수 있습니다.

그래서 그들은 정점을 얻을 수 있지만 그게 그것에 관한 것입니다. 그들은 단지 그것을 깨는 사람의 확률을 낮추는 나머지를 알아 내야합니다.

도움이 되었기를 바랍니다

오랜 시간이 지난 후이 스레드에 글을 쓰고 있습니다. 우리는 소프트웨어를 구입했습니다 지적 이는 분해, 난독 화 방지에 도움이되며 강력한 라이센스 모듈도 있습니다.

우리는 가지 않았다 .NET 반응기 Intellilock이 우리의 목적을 충분히 제공하고 있기 때문에 더 많은 예방 통제를 가지고 있지만.

Obfuscator는 코드를 혼동하지만 보호자는 보호합니다. .NET Protector를 사용할 수 있습니다. NetWinProtector

Intellilock은 난독 화 및 라이센스 측면에서 우리의 목적을 잘 수행했습니다. 그러나 지원이 마크에 달려 있지 않기 때문에 제품을 추천하지 않을 것입니다. 우리는 우리가 직면 한 문제에 대한 정시에 답장을받지 못했습니다. 우리는 자체적으로 검색하고 연구하거나 심지어 목표를 달성하기 위해 비즈니스 요구 사항을 변경해야했습니다.

이 답변을 통해 나는 소프트웨어를 홍보하거나 강등하려는 것이 아니라 사람들이 우리가 사용하고있는 제품에 대해 인식하여 현명한 결정을 내릴 수 있도록하기를 원합니다.

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