Java 라이브러리 보호하기
GUI 도구로 Java 라이브러리 보호하기
Protector4J 폴더로 이동하여 **p4j-ui[.exe]**를 실행하면 다음과 같은 사용자 인터페이스가 표시됩니다.

macOS 사용자의 경우, 일반적인 Mac 애플리케이션처럼 Protector4J.app을 더블 클릭하면 됩니다.
로그인
이미 라이선스를 구매한 경우, 오른쪽 상단의 로그인 버튼을 클릭하고 사용자 정보를 입력하세요. 라이선스가 없어도 이 도구를 체험할 수 있습니다.
Java 라이브러리 보호 기능은 Enterprise 에디션이 필요합니다.

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

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

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

오른쪽의 구조 디렉토리에서 보호가 필요한 클래스와 메서드를 선택하거나, 다음 형식으로 보호가 필요한 항목을 수동으로 입력할 수 있습니다.
# 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와 함께 사용할 수 있습니다. 사용자가 크랙하려면 바이트코드 수준이 아닌 바이너리 수준에서 수행해야 하므로 크래킹 난이도가 크게 증가합니다.
암호화 전

암호화 후

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