fbpx

Comandos Linux – Comando strip

Comando strip do Linux

comando strip

Em sistemas operacionais do tipo Unix, o comando strip descarta símbolos de arquivos de objetos compilados .

Este documento descreve a versão Linux do strip .

Descrição

strip é um utilitário GNU para “retirar” símbolos de arquivos de objetos. Isso é útil para minimizar o tamanho do arquivo , simplificando-os para distribuição. Também pode ser útil para dificultar a engenharia reversa do código compilado .

A lista de arquivos de objetos fornecidos para remover pode incluir arquivos e pelo menos um arquivo de objeto deve ser fornecido. Os próprios arquivos de objeto são modificados por faixa ; novos arquivos não são criados .

Sintaxe

strip [ opções ] objfile [...]

Opções

-F bfdname , –target = bfdnameTrate o original objfile como um arquivo com o formato de código objeto nomedab , e reescrevê-lo no mesmo formato.
–SocorroMostre um resumo das opções para remover e sair.
–infoExiba uma lista mostrando todas as arquiteturas e formatos de objeto disponíveis.
-I bfdname , –input -target = bfdnameTrate o original objfile como um arquivo com o formato de código objeto nomedab .
-O bfdname , –output-target = bfdnameSubstitua objfile por um arquivo no formato de saída bfdname .
-R nome da seção , –remove-section = sectionnameRemova qualquer seção chamada sectionname do arquivo de saída. Esta opção pode ser dada mais de uma vez. Observe que o uso inadequado dessa opção pode tornar o arquivo de saída inutilizável.
-s , –strip-allRemova todos os símbolos.
-g , -S , -d , –strip-debugRemova apenas os símbolos de depuração.
–strip-dwoRemova o conteúdo de todas as seções DWARF .dwo , deixando as seções de depuração restantes e todos os símbolos intactos.
– sem necessidade de tiraRemova todos os símbolos que não são necessários para o processamento de realocação.
-K symbolname , –keep-symbol = symbolnameAo retirar símbolos, mantenha o símbolo symbolname, mesmo que normalmente seja retirado. Esta opção pode ser dada mais de uma vez.
-N symbolname , –strip-symbol = symbolnameRemova o símbolo nome do símbolo do arquivo de origem. Esta opção pode ser dada mais de uma vez e pode ser combinada com outras opções de faixa, exceto -K .
-o arquivoColoque a saída removida no arquivo, em vez de substituir o arquivo existente. Quando esse argumento é usado, apenas um argumento de objfile pode ser especificado.
-p , –preserve-datasPreserve as datas de acesso e modificação do arquivo.
-D , –enable-deterministic-archivesOpere no modo determinístico. Ao copiar membros do arquivo morto e escrever o índice do arquivo morto, use zero para UIDs, GIDs, carimbos de data e hora e use modos de arquivo consistentes para todos os arquivos.
-w , –wildcardPermitir expressões regulares em nomes de símbolos usados ​​em outras opções de linha de comando . Os operadores de ponto de interrogação ( ? ), Asterisco ( * ), barra invertida ( \ ) e colchetes ( [] ) podem ser usados ​​em qualquer lugar do nome do símbolo. Se o primeiro caractere do nome do símbolo for o ponto de exclamação ( ! ), O sentido da chave será revertido para esse símbolo. Por exemplo:

-w -K! Foo -K fo *

faria com que a tira mantivesse apenas símbolos que começam com as letras ” fo “, mas descartasse o símbolo ” foo “.

-x , –discard-allRemova símbolos não globais.
-X , –discard-localsRemova os símbolos locais gerados pelo compilador. (Geralmente, começam com ` L ‘ou` . ‘.)
–keep-file-symbolsAo remover um arquivo, talvez com –strip-debug ou –strip-desnecessário , mantenha todos os símbolos que especifiquem os nomes dos arquivos de origem, que de outra forma seriam removidos.
–only-keep-debugRetire um arquivo, removendo o conteúdo de qualquer seção que não seria removida por –strip-debug e deixando as seções de depuração intactas. Nos arquivos ELF, isso preserva todas as seções de notas na saída.

A intenção é que esta opção seja usada em conjunto com –add-gnu-debuglink para criar um executável em duas partes. Um binário despojado que ocupará menos espaço na RAM e em uma distribuição e o segundo um arquivo de informações de depuração, necessário apenas se as habilidades de depuração forem necessárias. O procedimento sugerido para criar esses arquivos é o seguinte:

  1. Vincule o executável normalmente. Supondo que é chamado foo então …
  2. Execute objcopy –only-keep-debug foo foo.dbg para criar um arquivo contendo as informações de depuração.
  3. Execute objcopy –strip-debug foo para criar um executável despojado.
  4. Execute objcopy –add-gnu-debuglink = foo.dbg foo para adicionar um link às informações de depuração no executável removido.

Nota – a escolha de .dbg como uma extensão para o arquivo de informações de depuração é arbitrária; pode ser qualquer coisa. Além disso, a etapa –only-keep-debug é opcional. Você poderia fazer o seguinte:

  1. Vincule o executável normalmente.
  2. Copie foo para foo.full
  3. Executar strip –strip-debug foo
  4. Execute objcopy –add-gnu-debuglink = foo.full foo

Em outras palavras, o arquivo apontado pelo –add-gnu-debuglink pode ser o executável completo. Ele não precisa ser um arquivo criado pela opção –only-keep-debug .

Nota – essa opção deve ser usada apenas em arquivos totalmente vinculados. Não faz sentido usá-lo em arquivos de objetos em que as informações de depuração podem estar incompletas. O gnu_debuglink recurso atualmente suporta apenas a presença de um nome do arquivo que contém informações de depuração, e não vários nomes de arquivo em uma base one-per-objeto-arquivo.

-V , –versionMostra o número da versão da faixa.
-v , –verboseSaída detalhada : lista todos os arquivos de objeto modificados. No caso de arquivos, ` strip -v ‘lista todos os membros do arquivo.

Exemplos

strip -s a.out

O exemplo acima retira a tabela de símbolos do arquivo executável a.out .

22 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

[email protected]

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900
[email protected]

Copyright © Linux Force Security  - Desde 2011.