중간 트랜잭션 http://www.aliyun.com/zixun/aggregation/6858.html "> seo 진단 Taobao 게스트 stationmaster 구매 클라우드 호스트 기술 홀
보안: 효과적으로 엿보는 것에서 자바 프로그램 소스를 방지
자바 프로그램 소스 코드 보기, 역 컴파일러는 만큼 다른 사람에 대 한 매우 쉽습니다, 그리고 누구 든 지 다른 사람들의 코드를 분석할 수 있습니다. 이 문서에는 원래의 프로그램을 수정 하지 않고 기술을 암호화 하 여 소스 코드를 보호 하는 방법을 설명 합니다.
나는 왜 그것을 암호화 해야?
코드 베이스 www.xk15.cn에 더 많은 콘텐츠
전통적인 C 등의 언어에 대 한 + + 또는 C + +, 그것은 웹에서 소스 코드를 보호 하기 위해 쉽게으로 게시 되지 않습니다. 불행히도, 자바 프로그램 소스 코드는 다른 보기에 대 한 매우 쉽습니다. 역 컴파일러는, 누구 든 지 다른 사람들의 코드를 분석할 수 있습니다. 자바의 유연성을 쉽게 소스 코드를 훔치는, 하지만 동시에 그것은 상대적으로 하 게 암호화를 통해 코드를 보호 하 고 우리가 알 필요가 있는 유일한 것은 자바 클래스 로더 개체. 물론, 지식 자바 암호화 확장 기능 (JCE)의는 암호화 과정에 필수적 이다.
수 있는 "흐림" Java 클래스 파일을 만들기 훨씬 덜 효과적인 카운터 컴파일러 프로세스 클래스 파일에 있는 몇 가지 기술이 있다. 그러나, 그것은 그래서 그것은 소스 코드를 보호 하기 위해 퍼지 기술에 의존 하기 쉬운 이러한 난독 처리 된 클래스 파일을 처리할 수 있도록 카운터 컴파일러를 수정 어렵다.
우리는 인기 있는 암호화 도구 (꽤) PGP 같은 응용 프로그램을 암호화를 또는 GPG (GNU 프라이버시 가드)를 사용할 수 있습니다. 이 시점에서, 최종 사용자는 응용 프로그램을 실행 하기 전에 해독 해야 합니다. 그러나, 해독 후 최종 사용자 다른 이전 암호화 암호화 클래스 파일이 있다.
자바 바이트 코드에 패션을 암시적으로 실행의 메커니즘을 바이트 코드를 수정할 수 있습니다 의미 합니다. JVM 클래스 파일을 로드할 때마다 실행 중인 JVM에 로드 하는 새 클래스에 대 한 책임은 로더로, 라는 개체가 필요 합니다. JVM 클래스 로더 Java.lang.Object, 같은 로드할 클래스의 이름을 포함 하는 문자열을 제공 하 고는 클래스 로더는 클래스 파일을 찾는 원시 데이터를 로드 하 고 클래스 개체로 변환에 대 한 책임.
우리는 클래스 로더를 사용자 지정 하 여 클래스 파일을 실행 하기 전에 그것을 수정할 수 있습니다. 이 기술의 응용은 매우 광범위 한. 여기 목적은 그것 로드 될 때 즉각적인 암호 해독 장치로 볼 수 있도록 클래스 파일을 해독 하는 것입니다. 해독 된 바이트 코드 파일은 파일 시스템에 저장 하지 않음, 이후 해독된 코드를 스파이 대 한 더 어렵습니다.
때문에 클래스 객체에 원시 바이트 코드를 변환 하는 과정은 전적으로 시스템 관련, 먼저, 원래 데이터와 사용자 지정 클래스 로더 개체를 만드는 데 어렵지 않다 모든 변환을 포함 하는 암호 해독.
자바 2 어느 정도 사용자 지정 클래스 로더 구조를 단순화합니다. 자바 2, LoadClass의 기본 구현은 여전히 모든 필요한 단계에 대 한 책임 이지만 프로세스를 로드 하는 다양 한 사용자 지정 클래스를 고려해 새로운 Findclass 메서드 호출.
이 혼 전을 감소 하는 사용자 지정 클래스 로더를 작성 우리에 대 한 바로 가기를 제공: 단순히 findclass 덮어쓰기, loadclass 덮어쓰지. 이 방법은 공개 로더 모두 수행 해야 합니다 그것은 loadclass의 책임 때문에 단계를 반복 하는 필요를 피 한다.
그러나,이 방법은이 문서의 사용자 지정 클래스 로더에 사용 되지 않습니다. 이유는 간단 하다. 기본적으로 클래스 로더가 클래스 파일을 찾을 수, 하지만 클래스 파일은 암호화 되어 있기 때문에 클래스 파일을 승인 하지 것입니다 로드 프로세스가 실패 합니다. 따라서, 우리 자신, loadclass를 구현 해야 좀 더 많은 작업.
Ii. 사용자 정의 클래스 로더
코드 베이스 www.xk15.cn에 더 많은 콘텐츠
각 실행 중인 JVM는 이미 한 클래스 로더를 있다. 이 기본 클래스 로더 CLASSPATH 환경 변수 값에 따라 로컬 파일 시스템에서 적절 한 바이트 코드 파일을 찾습니다.
사용자 지정 클래스 로더를 적용 과정의 깊은 이해를 요구 한다. 우리는 먼저 사용자 지정 클래스 로더가 클래스의 인스턴스를 만들고 다음 명시적으로 다른 클래스를 로드 하도록 요청 해야 합니다. 이렇게 하면 사용자 지정 클래스 로더를 필요로 하는 모든 클래스는 클래스 연관 JVM. 목록 1에서는 사용자 지정 클래스 로더는 클래스 파일을 로드 하는 방법을 보여 줍니다.