Pergunta

Sempre fiquei perplexo com a forma como os fornecedores de software podem enviar seus aplicativos ou jogos e, posteriormente, fornecer um conjunto diferente de executáveis ​​​​que alteram o comportamento da versão anterior.Como isso é feito?O aplicativo original e o patch precisam seguir algum tipo de regra?Ou o patch rasteja para o executável original e altera suas informações de montagem?Isso exigiria conhecimento do arquivo binário no nível de byte?

Foi útil?

Solução

Existem dois métodos principais que vi.Muitos programas são compostos de uma série de partes menores que são carregadas dinamicamente em tempo de execução; muitas vezes, esses arquivos são simplesmente substituídos por versões mais recentes.Como as atualizações geralmente afetam apenas um número relativamente pequeno desses arquivos, o patch pode ser um pequeno subconjunto de todo o aplicativo.O outro método, que vi ser usado em aplicativos monolíticos maiores, é alterar o código executável usando uma espécie de "diferença binária".Uma das desvantagens dessa abordagem é que é mais difícil oferecer suporte à atualização para uma nova versão a partir de uma versão com várias revisões anteriores, sem a necessidade de realizar cada atualização incremental.

Outras dicas

Suspeito que na maioria das vezes os "patches" sejam apenas alguns arquivos de substituição.

Contudo, é possível comparar dois arquivos binários, determinar suas diferenças e criar um conjunto de comandos de edição que transformarão um no outro.O utilitário Unix "diff" pode fazer isso para arquivos de texto, por exemplo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top