2012-07-11 2 views
0

저는 귀중한 지적 재산으로 생각하는 자바 라이브러리를 개발했습니다. 나는 그것을 허용되지 않는 소프트웨어에 의해 사용되는 것으로부터 보호하고 싶다.다른 프로젝트에서 자바 라이브러리를 사용하지 못하도록 보호하는 방법은 무엇입니까?

내 라이브러리에는 깨끗한 API가 있으며 라이브러리를 사용하지 않는 프로젝트의 소스 코드를 고객에게 배포해야합니다.

나는 내 회사의 프로젝트에서만 제대로 작동한다는 것을 라이브러리에서 바꾸고 싶지만 다른 프로젝트에서는 아무도 사용할 수 없다는 뜻입니다.

라이브러리를 보호하는 가장 좋은 해결책은 무엇입니까?

필자는 라이브러리를 난독화할 수 있다고 덧붙여 야합니다 (고객의 응용 프로그램은 제외).

+0

추천 난독를 들어

? 그렇다면 어떤 소스 코드를 제공하고 있습니까? – Wires77

+0

라이브러리를 사용하는 응용 프로그램의 소스. –

답변

1

이 가능성 : 당신은 당신의 응용 프로그램의 소스 코드를 게시하고 고객이 스스로 컴파일 할 수 있도록 소스를 수정하려는

  • ; 이 경우 언어를 막론하고 라이브러리를 보호하는 것은 기술적으로 불가능합니다.
  • 정보를 소스로 제공하기 때문에 소스를 컴파일하거나 수정하지 않아도됩니다. 이 경우에는 내가 보안의 최소 2 개 수준을 구현할 수 있습니다 참조 : 당신은

    1. 컴파일하고 라이브러리의 소스와 응용 프로그램 를 당황하게. 그렇게하면 모든 공개 API가 난독 화되어 거의 사용할 수 없게됩니다 (누군가가 정말로 그것을 해독하고 싶지 않으면 행운을 빌어 요 ...). 클래스를 재 패키징 할 수도 있습니다. 모든 라이브러리 클래스는 앱과 동일한 패키지에 있으므로 라이브러리에 포함 된 파일과 수행중인 작업을 파악하는 것은 매우 어려울 것입니다.
    2. 컴파일시 앱 항아리의 해시를 계산하고 런타임에 앱이 실제로 앱인지 확인하기 위해 라이브러리 소스 코드를 수정하는 메커니즘을 구현합니다.

는 그 난독이 충분하다 생각합니다. 누군가가 당신의 난독 화 된 코드를 이해하는데 성공한다면, 그는 해결책 2를 아주 쉽게 깨뜨릴 것입니다.

제외하면 아무 것도 할 수 없으며 그 메커니즘이 없습니다. 그래서 당신은, 올바른 라이브러리의 소스 코드를 포기하지 않을거야 난 강력하게 Proguard

+0

제 2의 솔루션과 같은 메커니즘을 생각했습니다. yGuard를 최고의 '이름 스키마'전략과 함께 사용했습니다. 해시를 찾는 대신 클래스 패스에서 여러 클래스의 존재를 확인했습니다. –

+0

두 경우 모두 위의 경우 쉽게 깨지기 쉽지만 어려운 부분은 난독 화 때문에 확인이 수행 된 부분을 찾는 것입니다. 그건 분명히 누군가가 당신의 라이브러리를 사용하는 것을 막을 메커니즘은 아니지만 확실히 난독 화입니다. – tibo

+0

클라이언트 응용 프로그램이 라이브러리가 제대로 작동하는지 여부를 쉽게 판단 할 수 없도록 방법을 생각하고 있습니다. –

관련 문제