Registro de alterações

6.0.9 2026-07-25

Correção de falha para aplicativos criptografados que exibem NullPointerException

  • Corrigida uma falha da JVM que podia ocorrer quando um método protegido lançava uma NullPointerException implícita e o aplicativo lia sua mensagem ou imprimia seu rastreamento de pilha. O recurso de "detalhe útil de NPE" do runtime tentava reconstruir o texto "because ... is null" a partir do bytecode criptografado do método, acessava memória inválida e travava a VM (observado em aplicativos JavaFX FXML). Os métodos protegidos agora ignoram a mensagem detalhada e recorrem a uma NullPointerException padrão; o tipo da exceção, o rastreamento de pilha e qualquer mensagem fornecida pelo aplicativo não são afetados.
  • Os runtimes para JDK 17, 21 e 25 são reconstruídos para VLX 1.0.16 com esta correção. O JDK 11 não é afetado porque o recurso de NPE útil não existe antes do JDK 14 e permanece em VLX 1.0.15; o JDK 8 permanece em VLX 1.0.11.

6.0.8 2026-07-24

Runtimes do Tomcat baixados sob demanda e padrões seguros para produção

  • Foi corrigida a falha do codificador autoprotegido publicado ao empacotar WARs do Tomcat, pois as classes do Tomcat dentro de app.p4jx deixaram de ser visíveis como um JAR físico do classpath. O Tomcat 9.0.107 e o 10.1.53 agora são artefatos R2/COS imutáveis e versionados, selecionados de acordo com o namespace de Servlet, baixados no primeiro uso, armazenados no cache local e verificados por um SHA-256 exato e pelo manifesto dos JARs. Caches adulterados são descartados e baixados novamente.
  • Os JARs públicos de WEB-INF/lib agora são disponibilizados como recursos Web físicos, isolados por aplicação e vinculados por hash. Isso evita a leitura e a verificação repetidas do arquivo aninhado para cada classe durante a inicialização do Spring.
  • As novas compilações agora usam por padrão o endpoint de licença de produção https://protector4j.com. O endpoint interno http://10.10.10.16:16002 só é usado quando P4JX_LICENSE_MODE=dev ou -PlicenseMode=dev é selecionado explicitamente.

6.0.7 2026-07-24

Dependências aninhadas do Tomcat e classes dinâmicas confiáveis

  • Foram corrigidas as falhas de WARs protegidos do Tomcat ao carregar classes ou serviços de WEB-INF/lib/*.jar. O Protector4J agora sela em app.p4jx os metadados SHA-256 exatos dos JARs e das classes aninhados; dependências desconhecidas, substituídas ou adulteradas continuam sendo rejeitadas.
  • Foram corrigidas as falhas do Spring CGLIB e do Hibernate Byte Buddy no JDK 11 causadas pelo marcador de origem específico do JDK 11 usado por MethodHandles.Lookup#defineClass. A confiança dinâmica ainda exige a proveniência da classe chamadora ou do carregador verificada pela VM; strings de marcador, nomes de classe, caminhos, pacotes e CodeSource não concedem confiança.
  • Foram publicados runtimes VLX 1.0.15 para JDK 11, 17, 21 e 25 em 24 combinações de plataformas compatíveis. Todos passaram pelos controles rigorosos L1-L5, incluindo FXML real, Swing/AWT, carregamento de dependências aninhadas do Tomcat e casos negativos de proveniência e adulteração. O JDK 8 permanece no VLX 1.0.11.

6.0.6 2026-07-22

Proveniência confiável da definição de classes

  • Foram corrigidas as falhas de inicialização de aplicações JavaFX FXML protegidas: MethodUtil define o helper Trampoline, cuja proveniência foi verificada pela VM, por meio de defineClass(byte[]). A confiança agora só se propaga a partir da proveniência de classe ou carregador verificada pela VM, não de nomes de classe, caminhos, pacotes ou strings CodeSource.
  • Foi adicionada cobertura FXML real com fx:controller, elementos de propriedade, injeção de Controller e inicialização do WebView, além de regressões para definições dinâmicas confiáveis, propagação em dois níveis, fontes desconhecidas, JARs não autorizados e substituição de nomes protected class.
  • Foram publicados runtimes VLX 1.0.14 para JDK 11, 17, 21 e 25. O JDK 8 permanece em VLX 1.0.11.

6.0.5 2026-07-21

Integridade do ambiente de execução nativo do JavaFX

  • Foram corrigidas as falhas de inicialização do JavaFX WebView no Windows (Graphics Device initialization failed / No toolkit found) colocando as DLLs empacotadas do JavaFX em vlxjre/bin e ajustando a busca por bibliotecas nativas do iniciador.
  • A lista de permissões criptografada de app.p4jx foi ampliada para incluir bibliotecas nativas externas. Os arquivos nativos do JavaFX devem corresponder exatamente aos valores SHA-256, independentemente do caminho, e o Glass revalida o arquivo realmente carregado; arquivos não reconhecidos ou adulterados são rejeitados.
  • Foram publicados ambientes de execução Protector4J atualizados para JDK 11, 17, 21 e 25. As combinações de plataformas JavaFX compatíveis passaram pelo L5.1-L5.4, que cobre a inicialização do WebView e a rejeição de módulos JAR, jdk.jsobject e bibliotecas nativas do Glass adulterados.

6.0.4 2026-07-21

Integridade de módulos externos e compatibilidade do runtime JavaFX

  • Foi removida a confiança baseada em caminho para módulos externos. Agora, cada JAR de módulo externo deve corresponder exatamente a uma entrada SHA-256 da lista de permissões incorporada em app.p4jx; arquivos não reconhecidos ou adulterados são rejeitados independentemente da localização.
  • Foi adicionada a detecção automática do fechamento de dependências a partir de JavaFX module-info.class e a admissão controlada de módulos JavaFX e JDK fixados, incluindo javafx.media e jdk.jsobject.
  • Foram corrigidos os problemas de inicialização do JavaFX WebView e os erros E818 / ClassFormatError após a camada de inicialização nas versões de JDK e plataformas compatíveis com os novos runtimes P4JX.

6.0.3 2026-07-20

Compatibilidade do módulo JavaFX WebView

  • Corrigida a resolução do módulo opcional jdk.jsobject para runtimes P4JX compatíveis reconstruídos a partir da mesma versão de JDK/VLX. Um runtime compatível não é mais rejeitado apenas porque a imagem completa lib/modules contém bytes diferentes.
  • Permanecem a seleção de artefatos por linha do JDK e plataforma, a validação exata do SHA-256 e do nome do módulo e a nova verificação do fechamento das dependências após a instalação.

6.0.2 2026-07-20

Compatibilidade com JavaFX WebView

  • Corrigidas as falhas de inicialização do JavaFX WebView ao empacotar javafx.media junto com javafx.web e resolver automaticamente o módulo jdk.jsobject que corresponde exatamente ao P4JX quando ele não está presente em um runtime reduzido.
  • Adicionados downloads de módulos opcionais fixados por SHA-256 e vinculados à versão, plataforma e runtime por meio do serviço público regional. Runtimes que já contêm o módulo ignoram o download.

6.0.1 2026-07-20

Compatibilidade com JavaFX

  • Foram corrigidas as falhas de inicialização de fat JARs que incorporam classes do runtime JavaFX. A aplicação automática de compatibilidade agora mantém sem criptografia os namespaces da API, da implementação e da ponte JNI do JavaFX incorporado, evitando a atribuição duplicada com os módulos JavaFX empacotados.
  • Foram aprimorados os diagnósticos de compatibilidade e as orientações multilíngues para aplicações com runtimes JavaFX incorporados.

6.0.0 2026-07-20

O Protector4J 6.0 é uma versão principal baseada em uma arquitetura de proteção totalmente reformulada, e não uma atualização incremental comum da série 5.x.

Arquitetura e proteção

  • Reformulação da arquitetura fundamental do Protector4J e introdução do novo mecanismo de proteção P4JX.
  • Adição de quase 100 medidas de proteção na geração de arquivos, no carregamento de classes, na execução, na proteção contra depuração e na integridade dos artefatos.
  • Aumento significativo da barreira contra engenharia reversa. A nova arquitetura foi projetada para tornar a quebra em curto prazo extremamente difícil, mesmo com ferramentas avançadas de análise assistida por IA.
  • Reforço das solicitações de licença, dos downloads de runtimes, da verificação de artefatos e da segurança dos instaladores multiplataforma.

Experiência do produto

  • Suporte para JDK 8, 11, 17, 21 e 25, com fluxos gráficos de empacotamento para aplicações Java, JavaFX, Spring Boot e Tomcat.
  • Adição de verificação de compatibilidade, criptografia seletiva de classes, proteção de JARs de dependências, importação/exportação de tarefas YAML e compilações em lote para várias plataformas de destino.
  • Reformulação da interface para desktop, agora com suporte a 11 idiomas e preferência de idioma persistente.

Notas de migração

O uso do Protector4J 6.0 difere significativamente das versões anteriores. Antes de utilizá-lo, releia a documentação mais recente e recompile e migre suas aplicações criptografadas para a versão 6.0 assim que possível, a fim de aproveitar a proteção mais robusta.

Baixar o Protector4J 6.0

Versões anteriores

Registro de Alterações

5.7.0 2026-03-07

  • Adicionado suporte para JDK25

5.6.2 2026-01-03

  • Corrigido problema de download do jre
  • Corrigido problema do pidkiller

5.6.1 2025-08-13

  • Problema de execução

5.6.0 2025-08-09

  • Corrigido problema de recurso GraphQL

5.5.1 2025-06-01

  • Corrigido problema de download de recursos

5.5.0 2025-04-19

  • Corrigidos problemas sobre o decoder

5.4.1 2025-04-17

  • Compilado pidchecker com a versão mais recente do Go

5.4.0 2025-04-08

  • Atualizado JDK17 para 17.0.14

5.3.5 2025-03-26

  • Atualizado o wrapper executável

5.3.4 2025-03-08

  • Corrigido o problema de não poder executar em alguns sistemas Windows

5.3.3 2025-02-20

  • Corrigido o problema de não executar em alguns sistemas Windows

5.3.2 2025-02-04

  • Corrigido o problema de META-INF incorreto introduzido pela criptografia de biblioteca JAVA

5.3.1 2025-01-28

  • Corrigido o problema de não poder executar em CPUs de versão inferior

5.3.0 2025-01-25

  • Adicionado módulo jdk.naming.dns

5.2.0 2025-01-19

  • Novo decoder

5.1.0 2025-01-12

  • Corrigido o problema de falso positivo do decoder no Windows.

5.0.0 2024-12-28

  • Adicionado suporte para criptografia de biblioteca Java isolada (Preview), permitindo que a aplicação execute com jre normal

4.8.1 2024-12-08

  • Corrigido o problema de não verificar tipos de arquivo ao processar tarefas Tomcat.

4.8.0 2024-11-30

  • Corrigido o problema de não poder executar no Windows 7
  • Corrigido o problema do módulo jdk.net não ser importado

4.7.1 2024-09-19

  • Corrigido o problema em que o aplicativo Linux gerado não executa corretamente

4.7.0 2024-09-08

  • Corrigido o problema em que o programa gerado não consegue executar no macOS
  • Corrigido o problema sobre falso positivo de software de segurança

4.6.2 2024-07-21

  • Adicionada opção para remover o arquivo application.properties das bibliotecas para aplicações SpringBoot
  • Adicionada uma barra de rolagem para resolver o problema em que os elementos na janela não são totalmente exibidos quando a janela é muito pequena.

4.6.1 2024-05-25

  • Corrigido o problema de downloads repetidos de vlxjre8 no Mac.
  • Corrigido o problema de falta de opções JVM ao carregar TaskInfo.

4.6.0 2024-04-30

  • Atualizado jdk para resolver o problema do módulo de login ausente
  • Atualizado add-permission-script.sh

4.5.3 2024-03-16

  • Adicionado tomcat 10.1.19

4.5.2 2024-03-02

  • Corrigido o problema do wrapper no Windows

4.5.1 2024-03-01

  • Corrigido o problema de assinatura sobre Java 21

4.5.0 2024-02-25

  • Corrigido o problema em que virtual thread não funciona

4.4.0 2024-02-24

  • Corrigido problema sobre decoder

4.3.0 2024-02-06

  • Atualizado Tomcat para 9.0.85

4.2.2 2024-01-31

  • Removido o arquivo wrapper.json desnecessário

4.2.1 2024-01-25

  • Corrigido o problema do script de permissão

4.2.0 2024-01-23

  • Corrigido o problema em que broken pipe causa a saída do aplicativo
  • Corrigido o problema em que a limpeza automática da pasta /tmp causa a saída do aplicativo
  • Corrigido o problema em que Java 8 não consegue encontrar libfreetype no macOS
  • Corrigido o problema em que conflitos existem quando múltiplos application.properties existem

4.1.0 2023-10-30

  • Corrigido um problema com JDK8
  • Corrigido um problema de broken pipe no Linux e macOS.
  • Usuários chineses agora podem selecionar o servidor como https://protector4j.cn

4.0.1 2023-10-24

  • Atualizado decoder

4.0.0 2023-10-17

  • Adicionado suporte para Java 21
  • Melhorias de segurança para proteções mais fortes

3.3.0 2023-09-29

  • Corrigido um problema em que projetos Tomcat não iniciam corretamente.
  • Avisa quando classes duplicadas existem em um projeto

3.2.0 2023-08-24

  • Corrigido um problema com codificação do Windows em ambientes multilíngues

3.1.1 2023-08-02

  • Corrigido código ilegível em caminhos que não são em inglês

3.1.0 2023-07-22

  • Corrigidos problemas relacionados ao ZipInputStream.
  • Corrigidos problemas relacionados ao ZipFileSystem
  • Corrigidos outros problemas

3.0.2 2023-05-29

  • Corrigidos problemas de decodificação no Windows

3.0.1 2023-05-25

  • Corrigidos problemas de inicialização com a versão mac-aarch64

3.0.0 2023-05-20

  • Novo sistema de inicialização de aplicação
  • Novo sistema de decodificação
  • Java 8 agora pode executar programas com o comando -jar

2.12.5 2023-05-12

  • Corrigido jdk8 não encontrando freetype no macOS

2.12.4 2023-02-28

  • Atualizado backend