jhsdb (hotspot 디버거)를 사용하여 암호화된 Java 애플리케이션 해독하기

Java 코드 보호를 위한 한 가지 솔루션은 클래스 파일 암호화 또는 jar 파일 암호화입니다. 이러한 유형의 솔루션은 자체 정의된 로더를 통해 암호화된 클래스 파일 또는 jar 파일을 로드합니다. 이는 JVM의 연결 메커니즘으로 인해 쓸모가 없으며 JDK와 함께 제공되는 도구를 사용하여 쉽게 크랙할 수 있습니다.

샘플 애플리케이션

다음은 간단한 스윙 창과 버튼이 있는 샘플 애플리케이션입니다. https://github.com/3-keys/test-swing-app

img

애플리케이션 암호화

Eclipse를 사용하여 실행 가능한 jar 파일을 내보내고 암호화 도구를 사용하여 jar 파일을 암호화합니다. 암호화 후 jar 파일의 구조는 다음과 같습니다.

img

test-swing-app.jar은 암호화된 jar 파일 데이터이고, Launcher 클래스는 이 도구의 사용자 정의 로딩 클래스이며, 암호화된 jar 패키지는 여전히 표준 java -jar 명령을 통해 실행됩니다.

암호화된 애플리케이션을 해독하다

먼저 암호화된 jar 파일을 실행한 후 JDK의 bin 디렉터리를 찾으면 jshdb 파일을 찾을 수 있습니다.

1_nsxbwNJrGJB4mpzsQv55VA

jhsdb hsdb를 실행하고 HotSpot 디버거를 엽니다. Windows에서는 관리자 권한으로 실행해야 할 수도 있습니다. 파일을 클릭하여 HotSpot 프로세스에 연결을 선택합니다...

img

ps aux | Linux 시스템에서 grep java 명령을 실행하고 Windows 시스템의 작업 관리자를 통해 프로세스 pid를 찾습니다. 아래 대화 상자에 프로세스 pid를 입력하세요.

img

성공적으로 첨부한 후에는 도구->클래스 브라우저를 클릭하십시오.

img

Browser 클래스에는 로드된 모든 클래스에 대한 정보가 포함되어 있습니다. com.example을 검색하면 com.example에서 모든 클래스를 볼 수 있습니다.

img

com.example.TestWindow @0x0000…을 클릭하세요. 그런 다음 ".class 파일 만들기"를 클릭하세요.

img

jhsdb 명령이 실행된 디렉토리로 이동하면 생성된 클래스 파일을 볼 수 있습니다.

img

사용하다루이텐 또는jadx클래스 파일을 열고 디컴파일된 코드를 볼 수 있습니다.

img