Tuesday 7 November 2017

Objdump disassemble arm binary options


GNU Binutils O GNU Binutils é uma coleção de ferramentas binárias. Os principais são: Mas eles também incluem: addr2line - Converte endereços em nomes de arquivos e números de linha. Ar - Um utilitário para criação, modificação e extração de arquivos. Cfilt - Filtro para desmembrar símbolos C codificados. Dlltool - Cria arquivos para construir e usar DLLs. Gold - Um novo, mais rápido, ELF apenas vinculador, ainda em teste beta. Gprof - Exibe informações de perfil. Nlmconv - Converte o código do objeto em um NLM. Nm - Lista símbolos de arquivos de objetos. Objcopy - Copia e converte arquivos de objetos. Objdump - Exibe informações de arquivos de objetos. Ranlib - Gera um índice para o conteúdo de um arquivo. Readelf - Exibe informações de qualquer arquivo de objeto de formato ELF. Size - Lista os tamanhos de seção de um objeto ou arquivo de arquivo. Strings - Lista cadeias imprimíveis de arquivos. Strip - Descarte símbolos. Windmc - Um compilador de mensagem compatível com Windows. Windres - Um compilador para arquivos de recursos do Windows. A maioria destes programas usa BFD. A biblioteca de descritores de arquivos binários, para fazer manipulação de baixo nível. Muitos deles também usam a biblioteca opcodes para montar e desmontar as instruções da máquina. Os binutils foram portados para a maioria das principais variantes do Unix, bem como para os sistemas Wintel, e sua principal razão para a existência é dar ao sistema GNU (e GNU / Linux) a facilidade para compilar e vincular programas. Obtendo o binutils A versão mais recente do GNU binutils é 2.27. Os vários arquivos NEWS (binutils, gas e ld) têm detalhes sobre o que mudou nesta versão. Consulte a página SOFTWARE para obter informações sobre como obter lançamentos de GNU binutils e outro software GNU. A versão atual pode ser baixada de ftp. gnu. org/gnu/binutils Se você planeja fazer trabalho ativo em GNU binutils, você pode acessar a árvore de origem de desenvolvimento por git anônimo: Como alternativa, você pode usar a interface gitweb. Ou os snapshots de origem, disponíveis como arquivos bzip tar através de FTP anônimo de ftp://sourceware. org/pub/binutils/snapshots. Relatórios de erros Listas de discussão Existem três listas de discussão de binutils: bug-binutilsgnu. org (archives) Para relatar bugs. Binutilssourceware. org (archives) Para discutir problemas do binutils. Binutils-cvs (archives) Uma lista de discussão somente leitura contendo as notas de checkins para o repositório git binutils. (Esta lista tem um nome estranho por razões históricas.) Você pode usar este formulário para se inscrever nas listas de discussão binutilssourceware. org ou binutils-cvssourceware. org: Para se inscrever na lista de discussão bug-binutilsgnu. org, veja o bug-binutils Página de informações. Você pode procurar os arquivos de correio velhos das listas de discussão gas2 e bfd. Estas foram as listas de discussão para binutils até maio de 1999. Por favor, não envie correio para eles por mais tempo. Documentação Um guia para portar o binutils para um novo destino foi contribuído. Por favor, envie FSF amp GNU perguntas amp perguntas para gnugnu. org. Há também outras formas de entrar em contato com a FSF. Envie comentários sobre estas páginas da Web para binutilssourceware. org. Envie outras perguntas para gnugnu. org. Direitos Autorais (C) 1998, 2000-2017 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, EUA A cópia e distribuição verbais deste artigo completo é permitida em qualquer meio, desde que este aviso seja preservado. Eu desmonto um arquivo binário plano usando objdump Estou familiarizado com a desmontagem de um executável binário estruturado, como um arquivo ELF usando: Mas se eu tiver um arquivo binário plano que eu sei é Supostamente carregado em, por exemplo Endereço 0xabcd1000, posso pedir objdump para desmontá-lo Eu tentei fornecer opções como --start-address0xabcd1000 mas objdump apenas afirma que ele não reconhece o formato. Eu tenho outras idéias sobre como desmontar o arquivo, mas eu queria saber se objdump poderia fornecer uma solução simples. Perguntou Jan 12 13 at 6:21 starblue e hlovdal ambos têm partes da resposta canônica. Se você quiser desmontar o código i8086, você geralmente quer a sintaxe da Intel, não a sintaxe ATampT, também, então use: Se o código for ELF (ou a. out (ou E) COFF), você pode usar o formulário curto: Para código de 32 bits ou 64 bits, omita o 8086, o cabeçalho ELF já inclui essas informações. Ndisasm. Como sugerido por jameslin. É também uma boa escolha, mas objdump geralmente vem com o sistema operacional e pode lidar com todas as arquiteturas suportadas pelo GNU binutils (superconjunto daqueles suportados pelo GCC), e sua saída geralmente pode ser alimentado em GNU como (ndisasms geralmente pode ser alimentado nasm Embora, claro). Peter Cordes sugere que Agner Fogs objconv é muito agradável. Ele coloca rótulos em alvos de ramo, tornando muito mais fácil descobrir o que o código faz. Ele pode desmontar NASM, YASM, MASM ou ATampT (GNU) sintaxe. Multimídia Mike já descobriu sobre --adjust-vma o ndisasm equivalente é a opção - o. Para desmontar, digamos, o código sh4 (eu usei um binário do Debian para testar), use isto com GNU binutils (quase todos os outros desassembladores são limitados a uma plataforma, como x86 com ndisasm e objconv): The - m é a máquina, E - EL significa Little Endian (para sh4eb usar - EB em vez), o que é relevante para arquiteturas que existem em qualquer endianness. Respondeu 22 dezembro às 20: 484. Objdump objdump exibe informações sobre um ou mais arquivos de objeto. As opções controlam as informações específicas a serem exibidas. Esta informação é útil principalmente para programadores que estão trabalhando nas ferramentas de compilação, ao contrário de programadores que apenas querem seu programa para compilar e trabalhar. Objfile. São os arquivos de objeto a serem examinados. Quando você especifica arquivos, objdump mostra informações sobre cada um dos arquivos objeto membro. As formas longas e curtas de opções, mostradas aqui como alternativas, são equivalentes. Pelo menos uma opção da lista - a, - d, - D, - f, - g, - G, - h, - H, - p, - r, - R, - S, - t, - T, V, - x deve ser dado. - a --archive-header Se algum dos arquivos objfile forem arquivos, exiba as informações do cabeçalho do arquivo (em um formato semelhante ao ls - l). Além da informação que você poderia alistar com ar tv. Objdump - a mostra o formato do arquivo objeto de cada membro do arquivo. --adjust-vma offset Ao despejar informações, primeiro adicione o deslocamento a todos os endereços de seção. Isso é útil se os endereços de seção não correspondem à tabela de símbolos, o que pode acontecer ao colocar seções em endereços particulares ao usar um formato que não pode representar endereços de seção, como a. out. - b bfdname --target bfdname Especifique se o formato de código de objeto dos arquivos de objeto é bfdname. Esta opção pode não ser necessária objdump pode reconhecer automaticamente muitos formatos. Exibe informações resumidas dos cabeçalhos de seção (-h) de fu. o. Que é explicitamente identificado (-m) como um arquivo de objeto VAX no formato produzido por compiladores Oasys. Você pode listar os formatos disponíveis com a opção - i. Consulte a Seção 15.1 Seleção do alvo. Para maiores informações. - C --demangle style Decode (demangle) nomes de símbolo de nível inferior em nomes de nível de usuário. Além de remover qualquer sublinhado inicial prepended pelo sistema, isso torna os nomes das funções C legíveis. Diferentes compiladores têm diferentes estilos de transformação. O argumento opcional de estilo de desmembramento pode ser usado para escolher um estilo de demarcação apropriado para o seu compilador. Consulte a seção 9. cfilt. Para obter mais informações sobre desmembramento. - G --debugging Exibe informações de depuração. Isso tenta analisar informações de depuração armazenadas no arquivo e imprimi-lo usando um C como sintaxe. Apenas alguns tipos de informações de depuração foram implementados. - d --disassemble Exibe os mnemônicos do montador para as instruções da máquina de objfile. Esta opção só desmonta as seções que devem conter instruções. - D - desassemble-all Como - d. Mas desmontar o conteúdo de todas as seções, não apenas aqueles esperados para conter instruções. --prefix-addresses Ao desmontar, imprima o endereço completo em cada linha. Este é o formato de desmontagem mais antigo. - desmontar-zeros Normalmente a saída de desmontagem saltará blocos de zeros. Esta opção direciona o desassemblador para desmontar esses blocos, assim como qualquer outro dado. - EB - EL --endian Especifique o endianness dos arquivos de objeto. Isso afeta somente a desmontagem. Isso pode ser útil ao desmontar um formato de arquivo que não descreva informações de endianness, como S-records. - f --file-header Exibe informações de resumo do cabeçalho geral de cada um dos arquivos objfile. --file-start-context Especifique que ao exibir o código fonte / desmontagem interligado (assume - S) de um arquivo que ainda não foi exibido, estenda o contexto para o início do arquivo. - h --section-headerheadheader Exibe informações de resumo dos cabeçalhos de seção do arquivo de objeto. Os segmentos de arquivo podem ser realocados para endereços não padronizados, por exemplo, usando o - Ttext. - Tdata. Ou - Tbss opções para ld. No entanto, alguns formatos de arquivo de objeto, como a. out, não armazenam o endereço inicial dos segmentos de arquivo. Nessas situações, embora ld realoca as seções corretamente, usando objdump - h para listar os cabeçalhos de seção de arquivo não pode mostrar os endereços corretos. Em vez disso, ele mostra os endereços habituais, que estão implícitos para o destino. --help Imprime um resumo das opções para objdump e exit. - i --info Exibe uma lista mostrando todas as arquiteturas e formatos de objeto disponíveis para especificação com - b ou - m. - j name --section name Exibe informações somente para o nome da seção. - l --line-numbers Rótulo da exibição (usando informações de depuração) com o nome do arquivo e os números de linha de origem correspondentes ao código objeto ou Relocs mostrado. Útil somente com - d. - D. Ou - r. - m machine --architecture Especifica a arquitetura a ser usada ao desmontar arquivos de objeto. Isso pode ser útil ao desmontar arquivos de objeto que não descrevem informações de arquitetura, como registros S. Você pode listar as arquiteturas disponíveis com a opção - i. - M opções --disassembler-opções opções Passar informações específicas do alvo para o desmontador. Apenas suportado em alguns alvos. Se o alvo for uma arquitetura ARM, este parâmetro pode ser usado para selecionar qual conjunto de nomes de registro é usado durante o desmon - selador. Especificando - M reg-name-std (o padrão) irá selecionar os nomes de registro como usado na documentação do conjunto de instruções ARMs, mas com o registro 13 chamado sp, o registrador 14 chamado lr e o registrador 15 chamado pc. Especificando - M reg-names-apcs irá selecionar o conjunto de nomes usados ​​pelo ARM Procedure Call Standard, enquanto especificando - M reg-names-raw usará apenas r seguido do número de registro. Existem também duas variantes no esquema de nomenclatura de registro APCS habilitado por - M reg-names-atpcs e - M reg-names-special-at que usam as convenções de nomenclatura ARM / Thumb Procedure Call Standard. (Ou com o nome de registro normal ou os nomes de registro especial). Esta opção também pode ser usada para arquiteturas ARM para forçar o desmontador a interpretar todas as instruções como instruções Thumb usando o switch --disassembler-optionsforce-thumb. Isso pode ser útil ao tentar desmontar o código do polegar produzido por outros compiladores. Para o x86, algumas das funções duplicação de opções da opção - m, mas permitem controle de granulação mais fino. Várias seleções do seguinte podem ser especificadas como uma seqüência de caracteres separados por vírgula. X86-64. I386 e i8086 selecionam a desmontagem para a arquitetura fornecida. Intel e att selecionam entre modo de sintaxe de intel e modo de sintaxe de AT38T. Addr32. Addr16. Data32 e data16 especificam o tamanho de endereço e o tamanho de operando padrão. Essas quatro opções serão substituídas se x86-64. I386 ou i8086 aparecem mais tarde na cadeia de opção. Por fim, sufixo. Quando no modo AT38T, instrui o dissassembler a imprimir um sufixo mnemônico mesmo quando o sufixo pode ser inferido pelos operandos. Para PPC, booke. Booke32 e booke64 selecionam a desmontagem das instruções BookE. 32 e 64 selecionam PowerPC e PowerPC64 desmontagem, respectivamente. - p --private-headers Imprime informações que são específicas para o formato de arquivo do objeto. As informações exatas impressas dependem do formato do arquivo do objeto. Para alguns formatos de arquivo de objeto, nenhuma informação adicional é impressa. - r --reloc Imprime as entradas de realocação do arquivo. Se usado com - d ou - D. As relocações são impressas intercaladas com a desmontagem. - R --dynamic-reloc Imprime as entradas de realocação dinâmica do arquivo. Isso é apenas significativo para objetos dinâmicos, como certos tipos de bibliotecas compartilhadas. - s --full-contents Exibe o conteúdo completo de qualquer seção solicitada. - S - fonte Exibe código-fonte misturado com desmontagem, se possível. Implica - d. --show-raw-insn Ao desmontar instruções, imprima a instrução em hexadecimal, bem como em forma simbólica. Este é o padrão, exceto quando - prefixo-endereços é usado. --no-show-raw-insn Ao desmontar instruções, não imprima os bytes de instrução. Este é o padrão quando - prefixo-endereços é usado. - G - stabs Exibe o conteúdo completo de qualquer seção solicitada. Exibir o conteúdo das seções. stab e. stab. index e. stab. excl de um arquivo ELF. Isso só é útil em sistemas (como o Solaris 2.0) no qual as entradas da tabela de símbolos de depuração do. stab são transportadas em uma seção ELF. Na maioria dos outros formatos de arquivo, as entradas da tabela de símbolos de depuração são intercaladas com símbolos de vinculação e são visíveis na saída --syms. Para obter mais informações sobre símbolos de stabs, consulte a seção Stabs Overview no formato de depuração de stabs. --start-address address Inicia a exibição de dados no endereço especificado. Isso afeta a saída do - d. - r e - s opções. --stop-address address Parar de exibir dados no endereço especificado. Isso afeta a saída do - d. - r e - s opções. - t --syms Imprime as entradas da tabela de símbolos do arquivo. Isso é semelhante às informações fornecidas pelo programa nm. - T --dynamic-syms Imprime as entradas da tabela de símbolos dinâmicos do arquivo. Isso é apenas significativo para objetos dinâmicos, como certos tipos de bibliotecas compartilhadas. Isso é semelhante à informação fornecida pelo programa nm quando é dada a opção - D (--dinâmica). --version Imprime o número da versão de objdump e sai. - x --all-header Exibe todas as informações de cabeçalho disponíveis, incluindo a tabela de símbolos e as entradas de realocação. Usando - x é equivalente a especificar tudo de - a - f - h - r - t. - w --wide Formato de algumas linhas para dispositivos de saída que tenham mais de 80 colunas. Também não truncar nomes símbolo quando eles são exibidos.

No comments:

Post a Comment