Wednesday 9 August 2017

0x35 Binary Options


Remendar um arquivo significa modificá-lo, com a conotação de que a modificação é geralmente pequena. O uso vem do uso inglês geral onde um remendo é uma modificação pequena (a um pedaço de pano, por exemplo). Quando se trata de arquivos, um patch não é sempre um reparo. Um patch é uma série de instruções que descrevem como modificar um arquivo ou um conjunto de arquivos. No mundo Unix, um patch é geralmente a saída do comando diff, descrevendo as alterações em um arquivo de texto. Um patch neste sentido descreve as modificações em termos de adicionar, remover ou modificar linhas nos arquivos. O utilitário de correção aplica essas instruções para modificar um arquivo ou conjunto de arquivos. Ele tenta ser inteligente sobre a aplicação de vários patches para o mesmo arquivo, como o primeiro patch poderia causar alterações que impedem a segunda de ser aplica porque o arquivo não está mais no estado esperado. Como diff e patch baseiam fortemente sua operação em linhas, eles não são adequados para arquivos binários. Xxd é um utilitário genérico para trabalhar com arquivos binários. Uma de suas capacidades é fazer modificações em um arquivo. Por exemplo, o comando xxd - r - xxd.1 significa aplicar as modificações descritas na entrada padrão. O patch de exemplo (ou seja, as instruções de modificação) 0000037: 3574 68 significa: começando no deslocamento 0x37 (isso é 55 em decimal), substituir os próximos três bytes por 0x35, 0x74 e 0x68 (ou seja, os três caracteres 5). Quando você aplica um patch a um arquivo, você está substituindo parte dele com dados atualizados (um patch também pode adicionar dados adicionais até o final). Você pode corrigir qualquer tipo de arquivo, seja seu texto, binário, ou o que seja, porque todos os arquivos são streams de bytes quando se trata de baixo para ele. As partes dele que devem ser substituídas são especificadas no arquivo de correção. Se uma correção de software envolve a atualização de um arquivo, um patch pode modificar o arquivo para ser o mesmo que uma versão completa de um arquivo atualizado. Como os patches não são o arquivo completo, mas apenas as diferenças, os patches serão menores, consomem menos espaço em disco e consomem menos largura de banda quando baixados. A edição direta de um arquivo binário em um editor hexadecimal (como hexer) às vezes é chamada de remendo manual. Eu não estou familiarizado com xxd. Mas parece que da pesquisa preliminar que xxd pode gerar um dump ou listagem hexadecimal de dados binários, e também pode converter tal listagem de volta em binário reto. Assim você pode despejar o hex com xxd. Edite-o com vim ou outro editor de texto, e escreva as alterações de volta com um xxd - r. Você também pode canalizar uma string usando echo no formato xxd hexdump. (Outras opções permitem que você execute alterações no arquivo binário. Parece xxd tem um monte de opções que permitem que você especificar onde começar e parar de sobrescrever ou patching.) O primeiro comando no exemplo é basicamente dizer xxd para alterar os bytes em Arquivo xxd.1 começando no deslocamento 0x0000037 a 0x35 0x74 0x68 (ASCII para 5º). Xxd pode ler seu próprio formato hexdump e é isso que o comando echo está fornecendo para xxd. O segundo comando no exemplo está despejando uma contagem (-c) de 13 bytes no arquivo que começa nesse mesmo deslocamento. O comando patch faz uma coisa semelhante, mas ele quer arquivos em um formato diff. Você pode criar um arquivo diff salvando a saída do comando diff, que irá comparar dois arquivos e expressar as diferenças no referido formato diff. Da leitura da página de man parece que patch significa mais para alterar arquivos de texto do que binário direto. Resposta Em microcontroladores, às vezes você tem programas, que alteram a memória do programa, ou seja, o programa em si. Você poderia dizer que o programa muda quando ele é executado. Esta é apenas uma explicação para alterar aplicações binárias. Na verdade, você usa o patch binário bastante freqüentemente em programas de microcontrolador. Desde que seu programa é o código da máquina, e mais frequentemente do que não, você está programando no assembler, o código montado da máquina é completamente uma representação direta de o youve que programa. Assim, uma vez que seu código é montado você simplesmente fornecer patches para alguns ou todos da memória do programa microcontrolador. Respondeu Jul 28 11 at 21:34 Sua resposta 2016 Stack Exchange, Inc

No comments:

Post a Comment