ELI5: Qual é o objetivo da conversão de bibliotecas de C runtime para o formato PE (Portable Executable) no Wine?

ELI5 = Explain Like I’m Five

Sempre vejo isso sendo comentado nas atualizações do Wine, mas não sei muito bem o que isso significa. Qual é a vantagem do PE sobre as bibliotecas de C runtime?

Aparentemente torna a simulação do Windows mais realista para os programas dentro delas (especialmente os que ficam doidos checando integridade de DLLs como anticheats) e ajuda a escrever código mais fácil de ler:

PE até onde eu sei é o formato dos executáveis do Windows. Pelo que eu entendi, por muito tempo as “DLLs” embutidas no Wine eram .so (formato do Unix/Linux) com extensão renomeada.

Eu invoco @EsdrasTarsis para conferir a qualidade desse post ou mesmo dar o ELI5 dele.

2 Curtidas

Obrigado, gostei muito da sua resposta, mas vamos ver se mais alguém traz mais alguma informação.

PE = Portable Executable, a idéia do PE é bem simples, ser um formato que seja portável entre versões e arquiteturas do Windows, sem o PE (ou mesmo o ELF), pra cada um você precisaria de um tipo de executável diferente e cada um deles só poderia ser linkado com bibliotecas do mesmo tipo, em outras palavras, um saco…

Segundo a Team do Wine:

  • Isso ajuda burlar vários esquemas de proteção contra cópia que verificam que o conteúdo do disco e da memória dos módulos do sistema são
    idêntico.

  • Isso faz o prefixo pareça mais com uma verdadeira instalação do Windows

  • Módulos que foram convertidos para PE podem usar Wide-char C padrão
    funções, isso torna o código mais fácil de ler.

2 Curtidas

Eu gostei que a TAG “Iniciantes” está sendo levada a um outro nível!

2 Curtidas

Exatamente, sem as strings usando literais wide-chars era terrível de ler aquele código C ANSI

1 Curtida