변경 이력
6.0.9 2026-07-25
암호화된 앱이 NullPointerException을 출력할 때의 크래시 수정
- 보호된 메서드가 암시적
NullPointerException을 던지고 애플리케이션이 해당 메시지를 읽거나 스택 트레이스를 출력할 때 발생할 수 있던 JVM 크래시를 수정했습니다. 런타임의 "도움이 되는 NPE 상세 정보" 기능이 메서드의 암호화된 바이트코드에서 "because ... is null" 텍스트를 복원하려다 잘못된 메모리를 참조하여 VM이 크래시되었습니다(JavaFX FXML 애플리케이션에서 확인됨). 이제 보호된 메서드에서는 상세 메시지를 건너뛰고 표준NullPointerException으로 대체합니다. 예외 유형, 스택 트레이스, 애플리케이션이 제공한 메시지에는 영향을 주지 않습니다. - JDK 17, 21, 25 런타임을 이 수정과 함께 VLX 1.0.16으로 다시 빌드했습니다. "도움이 되는 NPE 상세 정보" 기능은 JDK 14 이전에는 존재하지 않으므로 JDK 11은 영향을 받지 않고 VLX 1.0.15를 유지합니다. JDK 8은 VLX 1.0.11을 유지합니다.
6.0.8 2026-07-24
필요할 때 다운로드하는 Tomcat 런타임과 프로덕션 안전 기본값
app.p4jx내부의 Tomcat 클래스가 더 이상 물리적 클래스패스 JAR로 보이지 않아 배포된 자체 보호 인코더가 Tomcat WAR를 패키징하지 못하던 문제를 수정했습니다. Tomcat 9.0.107과 10.1.53은 이제 Servlet 네임스페이스에 따라 선택되는 변경 불가능한 버전 지정 R2/COS 아티팩트입니다. 처음 사용할 때 다운로드하여 로컬에 캐시하고 정확한 SHA-256과 JAR 목록을 검증합니다. 변조된 캐시는 폐기한 뒤 다시 다운로드합니다.- 공개
WEB-INF/libJAR는 이제 애플리케이션별로 격리되고 해시에 바인딩된 물리적 Web 리소스로 배치되어, Spring 시작 시 클래스마다 중첩 아카이브를 반복해서 읽고 검증하는 작업을 피합니다. - 새 빌드는 이제 프로덕션 라이선스 엔드포인트
https://protector4j.com을 기본값으로 사용합니다. 내부 엔드포인트http://10.10.10.16:16002는P4JX_LICENSE_MODE=dev또는-PlicenseMode=dev를 명시적으로 선택한 경우에만 사용됩니다.
6.0.7 2026-07-24
Tomcat 중첩 종속성과 신뢰된 동적 클래스
- 보호된 Tomcat WAR가
WEB-INF/lib/*.jar에서 클래스 또는 서비스를 로드할 때 발생하던 실패를 수정했습니다. Protector4J는 이제 중첩 JAR와 클래스의 정확한 SHA-256 메타데이터를app.p4jx에 봉인하며, 알 수 없거나 교체되거나 변조된 종속성은 계속 거부됩니다. - JDK 11의
MethodHandles.Lookup#defineClass가 JDK 11 전용 소스 마커를 사용하여 발생하던 Spring CGLIB 및 Hibernate Byte Buddy 실패를 수정했습니다. 동적 신뢰에는 여전히 VM이 검증한 호출 클래스 또는 로더 출처가 필요하며, 마커 문자열, 클래스 이름, 경로, 패키지명 및CodeSource는 신뢰를 부여하지 않습니다. - JDK 11, 17, 21, 25용 VLX 1.0.15 런타임을 지원되는 24개 플랫폼 조합에 배포했습니다. 실제 FXML, Swing/AWT, Tomcat 중첩 종속성 로드, 출처 및 변조 부정 사례를 포함한 엄격한 L1-L5 게이트를 모두 통과했습니다. JDK 8은 VLX 1.0.11을 유지합니다.
6.0.6 2026-07-22
신뢰된 클래스 정의 출처 전파
- 보호된 JavaFX FXML 애플리케이션의 시작 실패를 수정했습니다.
MethodUtil은 VM이 출처를 검증한Trampoline헬퍼를defineClass(byte[])로 정의합니다. 신뢰는 이제 클래스 이름, 경로, 패키지명,CodeSource문자열이 아니라 VM이 검증한 클래스 또는 로더 출처에서만 전파됩니다. fx:controller, 속성 요소, Controller 주입, WebView 시작을 포함하는 실제 FXML 커버리지를 추가했으며, 신뢰된 동적 정의, 2단계 전파, 알 수 없는 출처, 승인되지 않은 JAR, protected class 이름 교체에 대한 회귀 테스트도 추가했습니다.- JDK 11, 17, 21, 25용 VLX 1.0.14 런타임을 배포했습니다. JDK 8은 VLX 1.0.11을 유지합니다.
6.0.5 2026-07-21
JavaFX 네이티브 런타임 무결성
- 패키지화된 JavaFX DLL을
vlxjre/bin에 배치하고 런처의 네이티브 라이브러리 검색 경로를 조정하여 Windows에서 발생하던 JavaFX WebView 시작 실패(Graphics Device initialization failed/No toolkit found)를 해결했습니다. - 암호화된
app.p4jx허용 목록을 외부 네이티브 라이브러리까지 확장했습니다. JavaFX 네이티브 파일은 경로와 관계없이 정확한 SHA-256 값과 일치해야 하며, Glass가 실제로 로드된 파일을 다시 검증합니다. 인식되지 않거나 변조된 파일은 거부됩니다. - JDK 11, 17, 21, 25용으로 업데이트된 Protector4J 런타임을 배포했습니다. 지원되는 JavaFX 플랫폼 조합은 L5.1-L5.4를 통과했으며, WebView 시작과 모듈 JAR,
jdk.jsobject, Glass 네이티브 라이브러리의 변조 거부를 검증했습니다.
6.0.4 2026-07-21
외부 모듈 무결성 및 JavaFX 런타임 호환성
- 외부 모듈에 대한 경로 기반 신뢰 방식을 제거했습니다. 이제 모든 외부 모듈 JAR은
app.p4jx에 내장된 정확한 SHA-256 허용 목록 항목과 일치해야 하며, 위치와 관계없이 인식되지 않거나 변조된 파일은 거부됩니다. - JavaFX
module-info.class를 통한 종속성 폐쇄 자동 감지와javafx.media및jdk.jsobject를 포함한 고정된 JavaFX / JDK 모듈의 제어된 허용 기능을 추가했습니다. - 새롭게 출시된 P4JX 런타임을 통해 지원되는 JDK 버전 및 플랫폼 전반에서 JavaFX WebView 시작 문제와 부트 레이어 구성 후의 E818 /
ClassFormatError오류를 수정했습니다.
6.0.3 2026-07-20
JavaFX WebView 모듈 호환성
- 동일한 JDK/VLX 버전으로 다시 빌드된 지원 P4JX 런타임에서 선택적
jdk.jsobject모듈을 확인하지 못하던 문제를 수정했습니다. 이제 전체lib/modules이미지의 바이트가 다르다는 이유만으로 호환 런타임을 거부하지 않습니다. - JDK 계열 및 플랫폼별 아티팩트 선택, 정확한 모듈 SHA-256 및 모듈 이름 검증, 설치 후 의존성 폐쇄 재검증은 그대로 유지됩니다.
6.0.2 2026-07-20
JavaFX WebView 호환성
javafx.media를javafx.web과 함께 패키징하고, 축소된 런타임에 모듈이 없을 때 P4JX와 정확히 일치하는jdk.jsobject를 자동으로 확인하여 JavaFX WebView 시작 실패를 수정했습니다.- SHA-256으로 고정되고 버전, 플랫폼, 런타임에 연결된 선택적 모듈을 지역별 공개 다운로드 서비스에서 가져오는 기능을 추가했습니다. 모듈이 이미 포함된 런타임은 다운로드를 건너뜁니다.
6.0.1 2026-07-20
JavaFX 호환성
- JavaFX 런타임 클래스가 포함된 fat JAR의 시작 실패 문제를 수정했습니다. 호환성 규칙 자동 적용은 이제 포함된 JavaFX API, 구현체 및 JNI 브리지 네임스페이스를 암호화하지 않고 유지하여 패키지에 포함된 JavaFX 모듈과의 클래스 소유권 중복을 방지합니다.
- JavaFX 런타임을 셰이딩한 애플리케이션의 호환성 진단 및 다국어 안내를 개선했습니다.
6.0.0 2026-07-20
Protector4J 6.0은 5.x 시리즈의 일반적인 점진적 업데이트가 아니라 보호 아키텍처를 전면 재설계한 메이저 릴리스입니다.
아키텍처 및 보호
- Protector4J의 기반 아키텍처를 재설계하고 새로운 P4JX 보호 엔진을 도입했습니다.
- 아카이브 생성, 클래스 로딩, 런타임 실행, 디버깅 방지, 아티팩트 무결성 등 각 계층에 약 100개의 보호 조치를 추가했습니다.
- 리버스 엔지니어링의 장벽을 크게 높였습니다. 새로운 아키텍처는 고급 AI 지원 분석 도구를 사용하더라도 단기간 내 크래킹을 매우 어렵게 만드는 것을 목표로 설계되었습니다.
- 라이선스 요청, 런타임 다운로드, 아티팩트 검증, 크로스 플랫폼 설치 프로그램의 보안을 강화했습니다.
제품 경험
- JDK 8, 11, 17, 21, 25를 지원하며 Java, JavaFX, Spring Boot, Tomcat 애플리케이션을 위한 그래픽 패키징 워크플로를 제공합니다.
- 호환성 검사, 선택적 클래스 암호화, 종속 JAR 보호, YAML 작업 가져오기/내보내기, 여러 대상 플랫폼의 일괄 빌드를 추가했습니다.
- 데스크톱 인터페이스를 재설계하고 11개 언어 및 영구 언어 설정을 지원합니다.
마이그레이션 안내
Protector4J 6.0은 이전 버전과 사용 방법이 크게 다릅니다. 사용하기 전에 최신 문서를 다시 읽고, 더 강력한 보호를 적용할 수 있도록 기존 암호화 애플리케이션을 가능한 한 빨리 6.0으로 다시 빌드하고 마이그레이션하십시오.
이전 릴리스
변경 이력
5.7.0 2026-03-07
- JDK25 지원 추가
5.6.2 2026-01-03
- JRE 다운로드 문제 수정
- pidkiller 문제 수정
5.6.1 2025-08-13
- 실행 문제 수정
5.6.0 2025-08-09
- GraphQL 리소스 문제 수정
5.5.1 2025-06-01
- 리소스 다운로드 문제 수정
5.5.0 2025-04-19
- 디코더 관련 문제 수정
5.4.1 2025-04-17
- 최신 Go 버전으로 pidchecker 빌드
5.4.0 2025-04-08
- JDK17을 17.0.14로 업데이트
5.3.5 2025-03-26
- 실행 파일 래퍼 업데이트
5.3.4 2025-03-08
- 일부 Windows 시스템에서 실행할 수 없는 문제 수정
5.3.3 2025-02-20
- 일부 Windows 시스템에서 실행되지 않는 문제 수정
5.3.2 2025-02-04
- Java 라이브러리 암호화로 인한 잘못된 META-INF 문제 수정
5.3.1 2025-01-28
- 하위 버전 CPU에서 실행할 수 없는 문제 수정
5.3.0 2025-01-25
- jdk.naming.dns 모듈 추가
5.2.0 2025-01-19
- 새로운 디코더
5.1.0 2025-01-12
- Windows에서 디코더의 오탐지 문제 수정
5.0.0 2024-12-28
- 암호화된 Java 라이브러리 단독 지원 추가(미리보기), 일반 JRE로 애플리케이션 실행 가능
4.8.1 2024-12-08
- Tomcat 작업 처리 시 파일 유형을 확인하지 않는 문제 수정
4.8.0 2024-11-30
- Windows 7에서 실행할 수 없는 문제 수정
- jdk.net 모듈이 가져오지 않는 문제 수정
4.7.1 2024-09-19
- 생성된 Linux 앱이 제대로 실행되지 않는 문제 수정
4.7.0 2024-09-08
- 생성된 프로그램이 macOS에서 실행할 수 없는 문제 수정
- 보안 소프트웨어 오탐지 문제 수정
4.6.2 2024-07-21
- Spring Boot 애플리케이션의 라이브러리에서 application.properties 파일 제거 옵션 추가
- 창이 너무 작을 때 요소가 완전히 표시되지 않는 문제를 해결하기 위한 스크롤바 추가
4.6.1 2024-05-25
- Mac에서 vlxjre8 반복 다운로드 문제 수정
- TaskInfo 로드 시 JVM 옵션 누락 문제 수정
4.6.0 2024-04-30
- 로그인 모듈 누락 문제 해결을 위해 JDK 업데이트
- add-permission-script.sh 업데이트
4.5.3 2024-03-16
- Tomcat 10.1.19 추가
4.5.2 2024-03-02
- Windows에서 래퍼 문제 수정
4.5.1 2024-03-01
- Java 21의 서명 문제 수정
4.5.0 2024-02-25
- 가상 스레드가 작동하지 않는 문제 수정
4.4.0 2024-02-24
- 디코더 관련 문제 수정
4.3.0 2024-02-06
- Tomcat을 9.0.85로 업데이트
4.2.2 2024-01-31
- 불필요한 wrapper.json 파일 제거
4.2.1 2024-01-25
- 권한 스크립트 문제 수정
4.2.0 2024-01-23
- 파이프 끊김으로 앱이 종료되는 문제 수정
- /tmp 폴더 자동 정리로 앱이 종료되는 문제 수정
- macOS에서 Java 8이 libfreetype을 찾지 못하는 문제 수정
- 여러 application.properties가 존재할 때 충돌 문제 수정
4.1.0 2023-10-30
- JDK8 관련 문제 수정
- Linux 및 macOS에서 파이프 끊김 문제 수정
- 중국 사용자가 이제 서버를 https://protector4j.cn 으로 선택 가능
4.0.1 2023-10-24
- 디코더 업그레이드
4.0.0 2023-10-17
- Java 21 지원 추가
- 더 강력한 보호를 위한 보안 강화
3.3.0 2023-09-29
- Tomcat 프로젝트가 제대로 시작되지 않는 문제 수정
- 프로젝트에 중복 클래스가 존재할 때 경고
3.2.0 2023-08-24
- 다국어 환경에서 Windows 인코딩 문제 수정
3.1.1 2023-08-02
- 영어가 아닌 경로에서 깨진 문자 수정
3.1.0 2023-07-22
- ZipInputStream 관련 문제 수정
- ZipFileSystem 관련 문제 수정
- 기타 문제 수정
3.0.2 2023-05-29
- Windows에서 디코딩 문제 수정
3.0.1 2023-05-25
- mac-aarch64 버전 시작 문제 수정
3.0.0 2023-05-20
- 새로운 애플리케이션 시작 시스템
- 새로운 디코딩 시스템
- Java 8이 이제 -jar 명령으로 프로그램 실행 가능
2.12.5 2023-05-12
- macOS에서 jdk8이 freetype을 찾지 못하는 문제 수정
2.12.4 2023-02-28
- 백엔드 업데이트