현재 위치 - 법률 상담 무료 플랫폼 - 특허 조회 - Java 소스 코드 숨김
Java 소스 코드 숨김
네가 원하는 함수는 사실 자바 코드가 혼란스럽다. Java 를 exe 로 컴파일하는 방법을 알고 싶으면' 참고 자료' 를 볼 수 있다.

다음 단락은' 자바 휴대폰/Java 프로그래밍 입문' 이라는 책에서 발췌한 것으로, 혼동기의 성능에 대한 개요로 사용할 수 있다.

나는 DashO 를 사용해 본 적이 없어서 개인적인 평가를 할 수 없다. 그래서 나는 지금 내가 사용한 제품만 설명하고 있다. 저자의 개인적 관점에서 볼 때, ZKM 은 최고이고, JAX 는 중심에 있고, RetroGuard 와 ProGuard 는 최악이며, 한 푼의 물건은 영원한 진리이다. ZKM 과 JAX 가 기능적으로는 좋지만 JAX 는 IBM 이 개발한 제품이기 때문에 대부분의 IBM 제품의 가장 큰 특징, 즉' 슈퍼기능, 하지만 잘 쓰이지 않는다' 는 점도 물려받았다. (윌리엄 셰익스피어, Northern Exposure (미국 TV 드라마), 기능명언) JAX 의 구성 파일만 읽는 것은 큰 문제일 수 있습니다.

다음은 몇 가지 대표적인 혼동기를 소개하고 제품 성능을 비교합니다. 서로 다른 난독기를 사용하여 동일한 Java 코드를 혼동하고, 혼동 후 코드 디컴파일의 결과를 각각 나열하며, 몇 가지 직접적인 사용 경험을 제공합니다.

원시 Java 코드:

공용 클래스 SimpleBean 구현 Serializable {

Private String[] name = {"name0 ","name 1 ","name2 ","name3 "};

개인 배포 목록 myList = null

Public void SimpleBean() {

Mylist = newarraylist (4);

}

Public void init_public() {

Mylist.add ("이름");

For (int I =1; 나<4; I++){

Init _ private (I);

}

}

Private void init_private(int j) {

Mylist.add (이름 [j]);

}

개인 void writeobject (java.io.object output streamout)

Ioexception 발생 {

}

}

1. ProGuard 4.5. 1

ProGuard 는 무료 Java 클래스 파일 압축 프로그램, 최적화 프로그램 및 혼동기입니다. 불필요한 클래스, 필드, 메서드 및 속성을 찾아 삭제할 수 있습니다. 또한 바이트 코드를 최적화하고 불필요한 명령을 제거할 수 있습니다. 마지막으로, 그것은 간단하고 의미 없는 이름으로 너의 클래스 이름, 필드 이름, 방법 이름을 바꾸었다. 이러한 작업을 통해 jar 파일이 작아지고 리버스 엔지니어링이 어려워집니다. Eclipse 는 Proguard 와 통합되어 있습니다. 스크립트 제어, GUI 인터페이스, 암호화되지 않은 문자열 및 J2ME 를 지원합니다.

비슷한 기능을 가진 오픈 소스 난독기:

역수비 이과드 (역수비의 업그레이드판) JODE

Jad 디컴파일혼동클래스에서 얻은 코드:

공용 클래스 SimpleBean

직렬화 가능 구현

{

공용 SimpleBean ()

{

A _ Java _ util _ List _ fld = null

}

Public void SimpleBean ()

{

A _ Java _ util _ list _ fld = newarraylist (4);

}

Public void init_public ()

{

A _ Java _ util _ list _ fld.add ("name");

For (int I =1; 나<4; I++)

{

Intj = I;

SimpleBean simplebean = this

A _ Java _ util _ list _ fld.add (simplebean.a _ Java _ lang _ string _ array/kloc-;

}

}

개인 문자열 a _ Java _ lang _ string _ array1d _ fld [] = {

"이름 0", "이름 1", "이름 2", "이름 3"

}

개인 목록 a _ Java _ util _ List _ fld

}

이점:

1, 내부 사설 메서드 호출 인라인을 호출하지만 기본적으로 혼동 효과를 얻을 수 없습니다.

2. 문서 사용 상세 정보, 옵션 프로파일을 혼동하는 많은 예가 있습니다.

3. 혼동 옵션의 세분성은 매우 세밀하며 GUI 인터페이스를 사용하여 로컬 방법의 보호를 지원할 수 있습니다.

4. J2ME 지원, Eclipse 에 통합 가능; 을 눌러 섹션을 인쇄할 수도 있습니다

5. 오픈 소스.

단점:

1, 기호 혼동 이름은 힌트가 있고, 문자열은 암호화되지 않으며, 다른 혼동 조치는 없습니다.

2. 혼동은 주로 Xlet, Midlet 등의 애플리케이션에 적용되며 라이브러리 파일이 혼동될 때 프로필이 복잡해질 수 있습니다.

둘째, 익살스럽다

JOCky 는 김나비 미들웨어 (이전의 Joc) 기술 책임자인 원홍강 씨의 개인작품이다. Apusic 앱 서버 개발이 편리했는데 지금은 무료로 이용하실 수 있습니다. Jocky 난독 화 컴파일러는 Sun JDK 에서 제공하는 Java 컴파일러 (javac) 를 기반으로 합니다. 코드 생성 프로세스를 수정하고 컴파일러에서 생성된 중간 코드를 혼동한 다음 클래스 파일을 생성하여 컴파일 및 혼동을 한 단계로 수행합니다. 즉, 소스 코드에서 직접 글을 쓰는 것은 Jocky 와 다른 혼란스러운 컴파일러의 가장 큰 차이점입니다. 또한 소스 프로그램에 기호 보존 명령을 삽입하여 유지해야 할 기호를 제어할 수 있으며, 별도의 혼동 옵션 구성 파일 없이 개발 프로세스와 통합할 수 있습니다. Jocky 의 이러한 특징은 Java 클래스 라이브러리의 혼란에 더 적합하다.

Jad 디컴파일혼동클래스에서 얻은 코드:

공용 클래스 SimpleBean

직렬화 가능 구현

{

공용 SimpleBean ()

{

이것;

Stringas [] = new string [4];

As;

As [0] = "이름 0";

As;

JVM INSTR 교환 :

1;

"name1";

JVM INSTR aastore

JVM 명령 dup

JVM INSTR 교환 :

2;

"이름 2";

JVM INSTR aastore

JVM 명령 dup

JVM INSTR 교환 :

3;

"이름 3";

JVM INSTR aastore

_$2;

_ $1= null;

반환;

}

Public void SimpleBean ()

{

이것;

JVM INSTR new # 9< 클래스 배열 목록>;;

JVM 명령 dup

JVM INSTR 교환 :

4;

Arraylist ();

_$ 1;

}

Public void init_public ()

{

_ $1.add ("name");

For (int I =1; 나<4; I++)

_ $1(I);

}

개인 void _$ 1(int I)

{

_ $1.add (_ $2 [I]);

}

개인 void writeobject (object output stream object output stream)

IOException 을 던지다

{

}

개인 문자열 _ $2 [];

개인 편지 목록 _ $1;

}

이점:

1, 기호 난독 화 외에도 데이터 난독 화 (문자 배열 초기화) 가 추가되었습니다.

일부 명령문은 디컴파일을 통해서만 바이트 코드 명령을 얻을 수 있습니다.

3. 손JDK 에서 제공하는 Java 컴파일러 (javac) 를 기초로 한 번 컴파일하고 혼동하면 클래스 파일을 생성하여 혼동할 필요가 없습니다.

4. Eclipse 에서 직접 Jocky 를 사용할 수 있는 Eclipse 플러그인을 제공합니다.

단점:

1, 혼동 옵션이 세분화되어 있어 특정 코드에 @preserve 디렉티브를 추가해야 할 수 있으며 작업량이 많습니다.

제어 흐름 혼동은 없습니다.

셋. 알라토리 3. 1 _ 데모

아라토리는 2 세대 혼동기에 속하며, 전방위적으로 너의 지적 재산권을 보호할 수 있다. Allatori 는 명명 난독 화, 스트림 난독 화, 디버그 정보 난독 화, 문자열 인코딩 및 워터 마킹 기술을 보호합니다. 이 혼란기는 무료 교육 및 비상업적 프로젝트입니다. 버전 2. 1 war 및 ear 파일 형식을 지원하며 잘못된 코드가 필요한 응용 프로그램에 유효 날짜를 추가할 수 있습니다.

Jad 디컴파일혼동클래스에서 얻은 코드:

공용 클래스 SimpleBean

직렬화 가능 구현

{

Public void init_public ()

{

D.add (c.k ("{u {0"));

Int I =1;

Goto _L 1

_L3:

H (a);

++I;

_L 1:

4;

Jvm instr icmplt21;

L2 L3 로 이동

_L2:

}

Public void SimpleBean ()

{

D = 새 배열 목록 (4);

}

개인 void H(int a)

{

D. add (c [a]);

}

공용 SimpleBean ()

{

D = 비어 있음 :

}

개인 void h (object output stream object output stream)

IOException 을 던지다

{

}

개인 문자열 c[] = {

C.k("\ 177q\ 177te "), c.k ("\177q \/

}

개인 목록 d;

}

참고: c.k 는 C 클래스의 정적 메서드로 문자열 암호화를 위해 추가로 생성됩니다.

이점:

1, 설계는 라이브러리 파일 혼동을 고려한 사용 시나리오를 고려합니다.

2. 문서 사용 상세 정보, 옵션 프로파일을 혼동하는 많은 예가 있습니다.

3. 기호 난독 화 외에도 제어 난독 화 (순환 재작성) 와 문자열 암호화 (문자열 배열 초기화) 의 두 가지 고급 난독 화 방법이 사용됩니다.

4. 난독 화 옵션의 세분성은 매우 세밀하며 지역 방법의 보호를 지원합니다.

5. 혼동해야 하는 코드에 유효일을 추가할 수 있도록 워터마크 기술을 지원합니다.

J2me; 지원

단점:

1, 상용 소프트웨어 (가격 첨부), 교육 및 비상업용 무료 (웹 사이트 링크는 /price.html 임).

첨부: 가격 상황

단일 개발자 라이센스

1 라이센스 290 달러

2 ~ 5 개 라이센스 260 달러

6- 10 라이센스 230 달러

1 1+ 라이센스 200 달러

사이트 라이센스 3750 달러

영업허가증 4850 달러

연간 지원 갱신 45 달러

넷째, zelix clasmaster (ZKM)

Zelix KlassMaster 는 Zelix Pty Ltd 의 비즈니스 혼동자로 공식 문서에는 혼동 기능이 거의 설명되어 있지 않습니다. 보호 기능이 매우 강력하여 기호 혼동과 제어 혼동을 수행할 수 있으며 문자열, 스택 혼동, 비정상적인 재구성, 증분 난독 화 및 J2ME 의 복잡한 암호화 보호를 지원합니다. Zelix KlassMaster 는 다음과 같은 평가판을 제공합니다.

동사 (verb 의 약자) DashO Pro

DashO Pro 는 Preemptive Solutions 에서 개발한 비즈니스 혼동기입니다. 무료 평가판을 다운로드할 수 있습니다. DashO Pro 코드 보호는 강력하고 사용하기 쉽고 유연합니다 (상용 소프트웨어, 오픈 소스 아님). 이 자바 난독기는 Sun 의 선택이다. 엔터프라이즈 응용 프로그램의 경우 Sun Microsystems 는 Java 개발 패키지의 일부로 DashO Pro 를 사용하여 암호화 라이브러리를 혼동합니다. Dashoporo 는 ID 이름을 의미 없는 문자로 바꿀 수 있습니다. 혼란스러운 메타데이터 제어 흐름 등을 변경하십시오. , 이러한 모든 작업은 자바 코드를 혼란스럽게 만듭니다. 제품 기능은 다음과 같습니다.

선도적 인 자바 소스 코드 보호 메커니즘;

특허를 획득한 오버로드 유도 기술을 사용하여 패키지/클래스/메서드/도메인의 이름을 변경합니다.

고급 프로세스 제어 난독 화 메커니즘;

문자열 암호화 기술

안티 컴파일러가 유용한 출력을 생성하지 못하게하십시오.

워터마크 소프트웨어

자바 소스 코드의 효율성을 향상시킵니다.

클래스/메소드/도메인 없이 상수 저장소를 완전히 제거합니다.

JIT 효과를 높이기 위해 클래스/메서드 수준에서 최적화

감지된 클래스를 동적으로 로드합니다.

포괄적이고 효율적인 Java 소스 코드 확장 및 배포

1.5 를 포함한 모든 JDK 버전 (JSE, J2EE, J2ME 등) 을 지원합니다.

자동 스택 추적 변환

경로에서 패키지 또는 javajars 를 지정합니다

패키지화된 모든 Java 컨텐츠 (프로그램, 라이브러리, 작은 애플리케이션, 작은 서버 프로그램, EJB 등) 를 지원합니다. MIDP 및 I appli 를 포함한 J2ME CLDC 아키텍처 지원 :

CLDC 프리플라이트 라이브러리 지원 클래스;

지정된 경로, Zip 압축 패키지 또는 jars 에서 추출할 수 있습니다.

100% 순수 Java 내보내기 지원 및 인증 제공

명령줄 인터페이스는 구축 환경에 통합하는 데 적합합니다.

XML 기반 구성 파일, 사용하기 쉽습니다.

종합적이고 정확한 PDF 형식 사용 설명서.