Bảo vệ thư viện Java
Mã hóa thư viện tương ứng với lệnh cấp thấp encode. Nó chỉ tạo kho lưu trữ đã bảo vệ: không sao chép môi trường chạy và không tạo tập lệnh khởi chạy.
1. Thao tác trên giao diện đồ họa
-
Ở trang loại ứng dụng, chọn Mã hóa thư viện. Nếu bạn cần một gói chạy được ngay, hãy chọn Ứng dụng Java, Spring Boot hoặc Tomcat WAR.

-
Chọn tệp JAR đầu vào, phiên bản Java khớp với môi trường sẽ nạp nó, và các nền tảng mục tiêu, rồi chọn chế độ đơn giản hoặc nâng cao. Đầu ra của thư viện không kèm
vlxjre, nhưng các lựa chọn này vẫn quyết định danh tính môi trường chạy gắn với kho lưu trữ; vì vậy đừng trộn lẫn đầu ra của các nền tảng khác nhau chỉ để giảm số lượng sản phẩm.
-
Chế độ đơn giản quét tệp JAR đầu vào rồi áp dụng các khuyến nghị về lớp phủ ZIP cho trình quét và hậu tố kho lưu trữ mà mã hóa thư viện hỗ trợ. Mọi mục
.classtrong JAR vẫn được mã hóa, các tài nguyên khác giữ nguyên. -
Chế độ nâng cao cho phép thiết lập:
- Tắt JIT cho các phương thức được bảo vệ: phương thức được bảo vệ chỉ chạy trong trình thông dịch;
- Thêm lớp phủ ZIP cho trình quét: cung cấp tài nguyên công khai và phần khung siêu dữ liệu cho các công cụ đọc thẳng thư mục trung tâm của ZIP;
- Quét tương thích...: kiểm tra các rủi ro như truy cập ZIP, giả định về hậu tố, dùng lớp JNI và lớp gốc, đọc bytecode lúc chạy.
-
Ở trang đầu ra, nhập đầy đủ tên tệp kết quả, thường kèm hậu tố
.p4jx. Chỉ dùng.jarkhi một bên tích hợp bắt buộc như vậy. Thiết lập Hậu tố kho lưu trữ ở trang nâng cao, hoặc khuyến nghị từ lượt quét, sẽ đổi tên tệp đã chọn giữa.p4jxvà.jar. Kiểm tra lại phiên bản Java, nền tảng mục tiêu, thiết lập JIT và lớp phủ cho trình quét, rồi bấm Chạy bảo vệ.Tác vụ một nền tảng ghi đúng vào đường dẫn tệp bạn đã chọn. Khi chọn nhiều nền tảng mục tiêu, giao diện tạo thư mục con cho từng nền tảng ngay cạnh tệp đó và ghi kho lưu trữ tương ứng vào mỗi thư mục.
2. Khi nào dùng
- Bảo vệ các JAR của riêng bạn nằm trong một ứng dụng P4JX khác do bạn kiểm soát;
- nạp kho lưu trữ P4JX từ một trình khởi chạy sẵn có;
- các trường hợp tích hợp nâng cao mà bạn tự quản lý toàn bộ thư mục bàn giao.
Nếu bạn đang dựng một ứng dụng chạy được thông thường, một ứng dụng Spring Boot hay một bản triển khai Tomcat, hãy dùng lệnh đóng gói tương ứng.
3. Lệnh cơ bản
p4j encode library.jar library.p4jx
Dạng rút gọn cũng dùng được:
p4j library.jar library.p4jx
encode ghi đúng tên tệp đầu ra bạn đưa vào, nên cả hai lệnh sau đều tạo ra kho lưu trữ P4JX:
p4j encode library.jar library.p4jx
p4j encode library.jar library.jar
4. Lớp phủ ZIP
p4j encode library.jar library.p4jx \
--zip-overlay scanner
Lớp phủ chỉ chứa tài nguyên công khai, thư mục và phần khung siêu dữ liệu, để những công cụ đọc thẳng thư mục trung tâm của ZIP vẫn hoạt động. Nó không để lộ phương thức được bảo vệ thật và cũng không biến kho lưu trữ P4JX thành JAR thông thường.
5. Yêu cầu về môi trường chạy
Lệnh encode cấp thấp không tạo vlxjre, nên bạn phải tự cung cấp môi trường chạy VLX khớp với danh tính đã dùng khi mã hóa. Đừng:
- nạp kho lưu trữ bằng OpenJDK hoặc Oracle JDK thông thường;
- sao chép
lib/moduleshay thư viện gốc từ gói đầu ra của phiên bản khác; - ghép kho lưu trữ với môi trường chạy thuộc nền tảng mục tiêu khác, nhánh JDK khác hoặc lượt mã hóa khác.
Với các dự án bàn giao thông thường, nên dùng lệnh đóng gói ở cấp cao hơn — chúng tự duy trì những mối tương ứng này giúp bạn.
6. Giấy phép
Việc tạo kho lưu trữ đòi hỏi một giấy phép do máy chủ cấp và giấy phép đó được nhúng vào kết quả. Tài khoản có giấy phép và chế độ dùng thử đều đi qua cùng một quy trình xác minh kho lưu trữ. Trong môi trường tự động, tuyệt đối đừng ghi cứng mật khẩu vào tập lệnh tác vụ đã xuất.