2012-03-09 2 views
9

자바를 사용하여 응용 프로그램을 개발하고 있지만 코드를 공개하지는 않을 것입니다. 문제는 이러한 jar 디 컴파일러 중 하나를 테스트 한 결과 내 jar 파일에서 코드를 거의 완벽하게 얻을 수 있었다는 것입니다. 제 질문은 내 코드를 추출하지 않고 jar 파일을 어떻게 배포 할 수 있습니까?Jar 파일이 디 컴파일되지 않도록 보호하려면 어떻게해야합니까?

+0

나는 중복이 실제로 내 질문에 답을한다는 것을 알았습니다. 지시에 감사드립니다. – Pouya

답변

8

Java는 컴파일하는 동안 (동적로드 및 반영을 허용하는) 대부분의 "메타 데이터"를 보존하므로 컴파일 된 클래스 파일을 역 컴파일 (역 분해) 할 수 있습니다. 그래서 복구 된 코드는 원본과 매우 유사합니다.

완벽하지는 않지만 아마도 유일한 예는 ProGuard과 같은 난독 화기를 사용하는 것입니다.

6

수 없습니다. 최소한 JVM은 코드를 실행하기 위해 코드를 가져와야 할 것입니다. JVM에서 코드를 가져올 수 있다면 누구나 할 수 있습니다.

코드를 난독 화하는 것이 가장 좋지만, 스택 추적을 따르기가 어렵 기 때문에 프로덕션 버그 추적이 매우 어려워 지므로 권장하지는 않습니다.

+1

(좋은) 난독 화 도구는 실행 파일의 스택 출력을 원래 클래스와 코드 행으로 변환하는 데 사용할 수있는 테이블을 제공한다는 것을 알고 있습니다. 그러나 일반적으로 코드를 보호하는 것보다 코드를 압축하는 것이 더 효과적입니다. –

2

분해로부터 코드를 보호 할 가능성은 없습니다. 'proguard'와 같은 난독 화 도구를 사용할 수 있습니다. 디 컴파일 후에도 코드를 이해하는 것은 거의 불가능합니다.

1

시장에서 일부 obfuscator를 사용하여 코드를 난독 처리하십시오. Obfuscator는 클래스 이름과 메서드를 이상한 이름으로 변경하여 사람들이 코드를 이해하기 어렵게 만듭니다. 사람들이 여전히 코드를 디 컴파일 할 수는 있지만 뒤죽박죽 된 이름 때문에 코드를 이해하는 것이 어려울뿐입니다.

단점은 스택 추적에서 클래스와 메소드 이름이 뒤죽박죽이되므로 고객이 어떤 문제에 직면했을 때 난독 화 코드를 디버그하고 지원하기가 어렵다는 것입니다.

1

자바에서 리버스 엔지니어링하는 것은 결코 불가능합니다. 하지만 Proguard가 최고라고 생각합니다. IDE (예 : NetBeans)와 통합 할 수도 있습니다. 및 개미에 대한 ygard

관련 문제