2010-03-29 4 views
86

보안 소프트웨어를 개발 중이며 내 Java 코드를 이해하기 어려워 엔지니어를 리버스 할 수 없게됩니다. 가장 신뢰할 수있는 Java obfuscator는 무엇입니까?최고의 Java obfuscator?

+10

@Xinus "리버스 엔지니어링을 불가능하게"를 - 거의 최선을 시도하고 실패 했음 – ant

+163

나는 약간의 혼란스러운 코드를 작성한 몇몇 동료가 있었다. 그러나 그것은 그들의 의도가 아니 었습니다. –

+4

'타자기에 무한한 양의 원숭이가 있고 무한한 시간이 있다면, 그들은 셰익스피어의 모든 위대한 작품을 쓸 것입니다. '- Dilbert – ant

답변

81

먼저 리버스 엔지니어링을 수행 할 수 없다는 점을 염두에 두어야합니다. 절대입니다. 모든 것이 해킹 가능합니다. 똑똑한 IDE를 사용하는 똑똑한 개발자는 이미 충분히 얻을 수 있습니다.

음, here 목록을 찾을 수 있습니다. ProGuard는 꽤 좋습니다. 나는 그것을 직접 사용해 왔지만 Java 코드를 "축소"하기 위해서만 사용했습니다.

+1

@BalusC : 자바 코드를 혼란스럽게하기 위해 어떤 도구를 사용합니까? 당신은 당신의 자바 코드를 혼란스럽게합니까? – Thinhbk

+0

@Thinhbk 난독 화 (Obfuscation)는 유용한 스택 추적을 얻는 것을 어렵게 만듭니다. –

+0

@ ThorbjørnRavnAndersen : 동의하십시오. IMO, 난독 화는 스택 추적을 거의 쓸모 없게 만듭니다.이 경우 로그 메시지와 함께 몇 가지 트릭을 사용하고 있습니다. – Thinhbk

10

나는 Proguard가 최고라고 생각합니다. IDE (예 : NetBeans)와 통합 할 수도 있습니다. 그러나 코드를 난독 처리하면 로그에있는 문제를 추적하기가 어려울 수 있습니다.

+6

+1 "코드를 흐리게 처리하면 로그의 문제를 추적하기가 어려울 수 있습니다." 디버깅이 어렵다고 생각한 바로 그 때 ... –

+7

이름과 줄 번호 정보를 변경하는 좋은 obfuscator는 프로세스를 되돌릴 로그를 만들어야합니다. 이 방법은 적어도 스택 추적은 난독 화 된 바이너리에 유용합니다. –

+3

ProGuard는 디버깅을 위해 이러한 역 파일을 생성합니다. :-) – Malax

4

이전 회사에서 Klassmaster으로 작업 했었는데 실제로 잘 작동하고 빌드 시스템 (maven 지원은 우수합니다). 그러나 그것은 자유롭지 않다.

20

컴퓨터에서 실행할 수있는 경우 적절하게 동기를 부여받은 사람이이를 역 엔지니어링 할 수 있습니다.

+0

얼마나 많은 사람들이 난독 화 코드를 읽고 논리를 이해할 수 있습니까? 나는 많은 엔지니어 친구가 있고 그들은 그것을 할 수 없다. 오직 John Nash만이 할 수있다;) – kodmanyagha

+2

@kodmanyagha 그들이 충분히 동기 부여를 받으면 배우게된다. 그것은 어렵지 않습니다. –

4

우리는 난독 처리보다는 병을 암호화하는 것이 훨씬 나았습니다. 우리는 Classguard을 사용합니다.

+6

Vladimir Roubtsov가 "Cracking Java byte-code encryption"(http://www.javaworld.com/javaworld/javaqa/2003-05/01-qa-0509-jcrypt.html)을 읽지 않았다면, 지금 그렇게해라. –

25

체크 아웃 내 앱에 리버스 엔지니어링은 더 비싼 만드는 세 가지 다른 방법 대 난독의 토론에 대한 기사 Protect Your Java Code - Through Obfuscators And Beyond 및 도구 및 추가 읽기 자료에 대한 링크 모음.

+1

이것이 실제로 필요한 것입니다. 내 프로젝트를 위해 PHP obfuscator를 작성하고 싶다. 논리는 모든 곳에서 동일합니다. 감사합니다 ... – kodmanyagha

+1

Java 난독 화 및 소프트웨어 수집에 대한 포괄적이고 포괄적 인 기사입니다. – erm3nda

4

아무도 그것을 도용 할 수 없도록 순서대로 집을 보호 할 수없는 것처럼 일부 코드를 항상 리버스 엔지니어링 할 수 있다는 것은 사실입니다. 그렇다고해서 내가 문을 잠그지 못하게합니다. 사실, 나는 자바 세계에 있지 않다. 나는 .net에 BitHelmet을 사용한다. 이 솔루션은 안전한지

+6

+1을 클릭하면 net 0으로 되돌아갑니다.이 답변은 도움이되지 않습니다. – HaloWebMaster

4

내가 확실히 모르겠지만 ClassGuard 솔루션에 대해,이 기사와의 코멘트를 읽을 흥미 롭다 : http://www.javaworld.com/community/?q=node/1604#comment-12296

+0

그리고 대신 defineClass는 네이티브 코드를 사용하는 다른 대안은 [JarCrypt] (http://www.componio.com/products/jinstaller/jarcryp/) – Renato

+0

기사 교육 [ClassGuard] (HTTP를 해킹하는 방법 : // zenofx .com/classguard /) : http://setrst.blogspot.com/2010/04/classguard-unguarded.html. 나는 이것이 아직도 최신 버전에서 작동하는지 모르겠습니다. – Renato

관련 문제