Java 라이브러리 보호하기

GUI 도구로 Java 라이브러리 보호하기

Protector4J 폴더로 이동하여 **p4j-ui[.exe]**를 실행하면 다음과 같은 사용자 인터페이스가 표시됩니다.

image-20241222183944773

macOS 사용자의 경우, 일반적인 Mac 애플리케이션처럼 Protector4J.app을 더블 클릭하면 됩니다.

로그인

이미 라이선스를 구매한 경우, 오른쪽 상단의 로그인 버튼을 클릭하고 사용자 정보를 입력하세요. 라이선스가 없어도 이 도구를 체험할 수 있습니다.

Java 라이브러리 보호 기능은 Enterprise 에디션이 필요합니다.

애플리케이션 유형 선택

애플리케이션 유형 페이지에서 "Java Library" 버튼을 클릭하세요.

암호화할 jar/war 파일 선택

암호화할 jar/war 파일을 선택합니다. 하나 또는 여러 파일을 선택할 수 있습니다.

암호화할 메서드 지정

이 페이지에서 암호화할 메서드를 선택할 수 있습니다.

image-20241222111100288

오른쪽의 구조 디렉토리에서 보호가 필요한 클래스와 메서드를 선택하거나, 다음 형식으로 보호가 필요한 항목을 수동으로 입력할 수 있습니다.

# Protect a method
# Class name.method name&method signature
Hello.hello&()V
# Protect all methods under the class
# Directly input the class name
Hello

동일한 형식을 사용하여 제외할 항목을 입력할 수 있습니다.

CLI 도구로 Java 라이브러리 보호하기

구성 파일

CLI 도구는 작업 파일을 매개변수로 지정해야 합니다.

protector4j/task-templates 폴더로 이동하여 java-lib-task.yml을 찾아 복사하고 수정합니다.

# The jar files that need to be encrypted
jarFiles: []

# Protect a method: MethodName&MethodSignature, like io.test.Hello.hello&()V
# Protect all methods in a Class: ClassName, like io.test.Hello
itemsToProtect: []

# Exclude items that are not encrypted in the same format as itemsToProtect.
itemsToExclude: []


# The output folder
outputFolder: ''

# Create a new and unique folder for the application, the folder name is like p4j-<taskId>
createNewFolder: true

암호화 작업 실행

Protector4J 폴더로 이동하여 다음 명령을 실행합니다.

Linux 또는 macOS

macOS 사용자의 경우, /Applictions/Protector4J.app/Contents/protector4j-mac에서 CLI 도구를 찾을 수 있습니다.

./p4j -t java-lib -f path-of-task-file -u email -p password

Windows

p4j -t java-lib -f path-of-task-file -u email -p password

p4j --help를 실행하여 자세한 매개변수를 확인할 수 있습니다.

암호화 결과

Java 애플리케이션의 전체 암호화와 달리, Java 라이브러리 암호화는 특정 메서드를 대상으로 합니다. 암호화가 완료되면 선택한 메서드가 네이티브 코드로 변환되며, 표준 JRE와 함께 사용할 수 있습니다. 사용자가 크랙하려면 바이트코드 수준이 아닌 바이너리 수준에서 수행해야 하므로 크래킹 난이도가 크게 증가합니다.

암호화 전

image-20250204115631030

암호화 후

image-20250204115731661

암호화가 완료된 후, Main 메서드가 네이티브 메서드로 변환됩니다.

제한사항

  1. try-catch 코드 블록을 지원하지 않습니다.
  2. Spring Boot 패키징된 jar 파일을 지원하지 않습니다.
  3. war 파일을 지원하지 않습니다.

데모 애플리케이션

현재 Java 라이브러리 암호화 기능은 무료 사용자 체험을 지원하지 않습니다. 이 데모 애플리케이션을 다운로드하여 Java 라이브러리 암호화의 효과를 확인할 수 있습니다. 이것은 swing 앱 프로그램이며, java -jar swingapp.jar를 사용하여 실행할 수 있고, 메인 기능이 네이티브 메서드로 변환되어 있으며, 디컴파일러 도구를 사용하여 확인할 수 있습니다!

암호화되지 않은 애플리케이션

swing-plain.jar

암호화된 애플리케이션

swing-encrypted.jar