jhsdb(HotSpot 디버거)를 사용한 암호화된 Java 애플리케이션 크래킹
Java 코드 보호의 한 가지 솔루션은 클래스 파일 암호화 또는 jar 파일 암호화입니다. 이러한 유형의 솔루션은 자체 정의된 로더를 통해 암호화된 클래스 파일 또는 jar 파일을 로드합니다. JVM의 Attach 메커니즘의 존재로 인해 이 방식은 무용지물이며, JDK에 포함된 도구로 쉽게 크래킹할 수 있습니다.
샘플 애플리케이션
아래는 간단한 swing 창과 버튼이 있는 샘플 애플리케이션입니다. https://github.com/3-keys/test-swing-app

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

test-swing-app.jar는 암호화된 jar 파일 데이터이고, Launcher 클래스는 이 도구의 커스텀 로딩 클래스이며, 암호화된 jar 패키지는 여전히 표준 java -jar 명령을 통해 실행됩니다.
암호화된 애플리케이션 크래킹
먼저 암호화된 jar 파일을 실행한 다음, JDK의 bin 디렉토리를 찾으면 jhsdb 파일을 찾을 수 있습니다.

jhsdb hsdb를 실행하고 HotSpot Debugger를 열면, Windows에서는 관리자 권한으로 실행해야 할 수 있습니다. File을 클릭하여 Attach to HotSpot process…를 선택합니다.

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

성공적으로 어태치한 후 Tools->Class Browser를 클릭합니다.

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

com.example.TestWindow @0x0000….을 클릭한 다음 "Create .class File"을 클릭합니다.

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

Luyten 또는 jadx를 사용하여 클래스 파일을 열면 디컴파일된 코드를 볼 수 있습니다.
