2017-04-08 5 views
1

나는 C#으로 작성된 라이브러리를 가지고 있습니다. DLL로 배포하려고합니다. 그러나 .NET은 쉽게 컴파일을 해줄 수 있으므로 알고리즘을 쉽게 도난 당할 수 있습니다.DLL의 소스 코드 보호

C++로 다시 작성할 수 있지만 .NET을 처음 사용합니다. 그래서, 주요 문제는 C#에 인터페이스를 작성하는 것입니다. 라이브러리가 너무 크지 않고 스레드, 네트워크 및 일부 수학을 사용합니다.

역 어셈블 만 할 수있는 DLL을 빌드하는 방법이 있습니까? 아니면 C++로 모든 것을 작성하고 C#에 인터페이스를 제공해야합니다. C++보다 C++을 디 컴파일하는 것이 훨씬 더 어렵습니까?

+1

당신은'obfuscator '를 찾고 있습니다. – cubrr

+0

@cubrr은 C#으로 작성된 라이브러리를 보호하기에 충분합니까? C++과 그러한 'obfuscator'도구가 더 좋을까요? – Leonid

+1

Obfuscator는 클래스 메소드, 변수, 필드 등의 이름을 wierd 이름으로 바꿉니다. 따라서 리버스 엔지니어링이 어려울 수 있습니다. 나는 당신이 당신의 코드를 특허해야하고 또한 클라우드에서 호스팅해야한다고 생각한다. 물론 당신은 흐릿한 DLL을 클라우드에 호스팅 할 수 있습니다. –

답변

1

알고리즘의 지적 재산권에 대해 정말로 걱정한다면 몇 가지 옵션이 있습니다.

1) 알고리즘 특허. 나는 그 울부 짖음을들을 수 있지만 그것이 법적인 방식으로 지적 재산을 보호하는 방법입니다.

2) 알고리즘에 DLL을 사용자에게 제공하지 마십시오. 클라우드에서 알고리즘을 호스팅하고 고객이 그런 식으로 액세스 할 수있게하십시오.

나머지 중 일부는 이해하지 못합니다. C++을 작성할 수 있다고했지만 C#에 인터페이스를 작성하는 방법을 모르십니까? COM을 사용하십시오. C#은 COM 라이브러리를 사용할 수 있습니다. 또는 C++로 함수를 내보내고 PInvoke를 사용하여 C++ DLL을 호출하는 .NET interop 라이브러리를 작성하십시오.

2

최종 사용자에게 배포 된 모든 내용은 리버스 엔지니어링 할 수 있습니다. 필요한 노력을 늘릴 수는 있지만 항상 가능합니다. 귀하의 알고리즘이 정말로 중요하고 독점적이며 귀중한 것이며 귀하가 여전히 응용 프로그램 설계를하고 있고 귀하의 알고리즘 결과가 성능에 치명적이지 않거나 청크가 될 수 있다면 ... 웹 서비스 접근법을 고려할 수 있습니다. 그런 다음 계산에 액세스하기 위해 가장 강력한 업계 표준 보호 기능을 사용할 수 있습니다.

+0

"최종 사용자에게 배포 된 모든 내용을 리버스 엔지니어링 할 수 있습니다"- 예, 이해합니다. 그러나 C++로 라이브러리를 다시 작성할 가치가 있습니까? – Leonid

+1

@ 레오니다 우리는 그 질문을 돕기에 충분한 정보를 우리에게주지 않았습니다. 일반적으로 컴파일 된 C++ 코드는 난독 화 된 C#보다 이해하기가 어려울 수 있지만 C++로 코드를 다시 작성하는 것은 사용하는 코드 기능, C++로 인한 편안함 및 알고리즘 코드의 크기와 요구 사항에 따라 사소하거나 거의 불가능할 수 있습니다. – wllmsaccnt

+0

사실 저는 C++에 훨씬 익숙하지만 .NET에 익숙하지 않습니다. 그래서, 주요 문제는 C#에 인터페이스를 작성하는 것입니다. 라이브러리는 너무 크지 않으며 스레드, 네트워크 및 일부 수학을 사용합니다. – Leonid