Friday 27 October 2017

Objdump Disassemble Arm Binary Options


GNU Binutils GNU Binutils es una colección de herramientas binarias. Los principales son: Pero también incluyen: addr2line - Convierte las direcciones en nombres de archivos y números de línea. Ar - Utilidad para crear, modificar y extraer archivos. Cfilt - Filtro para desmembrar los símbolos C codificados. Dlltool - Crea archivos para crear y usar DLL. Gold - Un nuevo, más rápido, ELF sólo vinculador, aún en la prueba beta. Gprof: muestra la información de creación de perfiles. Nlmconv - Convierte el código de objeto en un NLM. Nm - Muestra los símbolos de los archivos de objetos. Objcopy - Copia y traduce archivos de objetos. Objdump - Muestra información de los archivos de objetos. Ranlib - Genera un índice para el contenido de un archivo. Readelf - Muestra información de cualquier archivo de objeto de formato ELF. Size - Enumera los tamaños de sección de un objeto o archivo de archivo. Strings - Lista las cadenas imprimibles de los archivos. Strip - Descarta los símbolos. Windmc - Un compilador de mensajes compatible con Windows. Windres - Un compilador para archivos de recursos de Windows. La mayoría de estos programas utilizan BFD. La biblioteca de descriptores de archivos binarios, para realizar una manipulación de bajo nivel. Muchos de ellos también utilizan la biblioteca opcodes para montar y desmontar las instrucciones de la máquina. Los binutils han sido portados a la mayoría de las variantes de Unix, así como a los sistemas Wintel, y su razón principal de existencia es dar al sistema GNU (y GNU / Linux) la facilidad para compilar y enlazar programas. Obtención de binutils La última versión de GNU binutils es 2.27. Los distintos archivos NEWS (binutils, gas y ld) tienen detalles de lo que ha cambiado en esta versión. Consulte la página SOFTWARE para obtener información sobre la obtención de versiones de GNU binutils y otro software GNU. La versión actual se puede descargar desde ftp. gnu. org/gnu/binutils Si planea realizar trabajos activos en GNU binutils, puede acceder al árbol de origen de desarrollo mediante git anónimo: También puede utilizar la interfaz gitweb. O las instantáneas de origen, disponibles como archivos bzipped tar a través de FTP anónimo desde ftp://sourceware. org/pub/binutils/snapshots. Informes de error Lista de correo Existen tres listas de correo de binutils: bug-binutilsgnu. org (archivos) Para informar errores. Binutilssourceware. org (archivos) Para discutir los problemas de binutils. Binutils-cvs (archivos) Una lista de correo de solo lectura que contiene las notas de checkins al repositorio git de binutils. Puede utilizar este formulario para suscribirse a las listas de correo binutilssourceware. org o binutils-cvssourceware. org: Para suscribirse a la lista de correo bug-binutilsgnu. org, consulte el bug-binutils Página de información. Es posible que desee examinar los archivos de correo antiguos de las listas de correo gas2 y bfd. Estas fueron las listas de discusión para binutils hasta mayo de 1999. Por favor, no envíes el correo a ellos por más tiempo. Documentación Se ha aportado una guía para transferir los binutils a un nuevo destino. Envíe por favor las preguntas del amplificador de FSF amp GNU a gnugnu. org. También hay otras formas de contactar a la FSF. Envíe comentarios sobre estas páginas web a binutilssourceware. org. Envíe otras preguntas a gnugnu. org. La copia literal y la distribución de este artículo entero está permitida en cualquier medio, siempre y cuando se mantenga esta notificación. Copyright © 1998-2004 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301. Me desmontar un archivo binario plano usando objdump Estoy familiarizado con el desmontaje de un ejecutable binario estructurado como un archivo ELF usando: Pero si tengo un archivo binario plano que sé es Se supone cargarse en, por ejemplo, Address 0xabcd1000, puedo pedir objdump para desmontarlo intenté proveer opciones tales como --start-address0xabcd1000 pero objdump apenas indica que no reconoce el formato. Tengo otras ideas sobre cómo desmontar el archivo, pero quería saber si objdump podría proporcionar una solución simple. Preguntó Jan 12 13 at 6:21 starblue y hlovdal ambos tienen partes de la respuesta canónica. Si desea desmontar el código raw de i8086, por lo general quiere la sintaxis de Intel, no la sintaxis de ATampT, también, así que use: Si su código es ELF (o a. out (o E) COFF), puede usar la forma corta: Para el código de 32 bits o 64 bits, omita el 8086 el encabezado ELF ya incluye esta información. Ndisasm. Como sugiere jameslin. Es también una buena opción, pero objdump generalmente viene con el sistema operativo y puede manejar todas las arquitecturas soportadas por GNU binutils (superconjunto de aquellas soportadas por GCC), y su salida suele ser alimentada en GNU como (ndisasms normalmente se pueden alimentar a nasm Aunque, por supuesto). Peter Cordes sugiere que Agner Fogs objconv es muy agradable. Pone etiquetas en los objetivos de la rama, haciéndolo mucho más fácil de averiguar qué hace el código. Puede desmontarse en sintaxis de NASM, YASM, MASM o ATampT (GNU). Multimedia Mike ya se enteró de --adjust-vma el equivalente ndisasm es la opción - o. Para desmontar, por ejemplo, el código sh4 (usé un binario de Debian para probarlo), utilice esto con GNU binutils (casi todos los otros desensambladores están limitados a una plataforma, como x86 con ndisasm y objconv): The - m es la máquina, Y - EL significa Little Endian (para el uso sh4eb - EB en su lugar), que es relevante para las arquitecturas que existen en cualquiera de las endianness. Respondió el 22 de diciembre a las 20: 484. Objdump objdump muestra información sobre uno o más archivos de objeto. Las opciones controlan qué información específica mostrar. Esta información es sobre todo útil para los programadores que están trabajando en las herramientas de compilación, a diferencia de los programadores que sólo quieren que su programa para compilar y trabajar. Objfile Son los archivos objeto a ser examinados. Cuando especifica archivos, objdump muestra información sobre cada uno de los archivos de objeto miembro. Las formas largas y cortas de opciones, mostradas aquí como alternativas, son equivalentes. Al menos una opción de la lista - a, - d, - D, - f, - g, - G, - h, - H, - p, - r, - R, - S, - t, - T, V, - x debe ser dado. - a --archive-header Si alguno de los archivos objfile son archivos, muestre la información del encabezado del archivo (en un formato similar a ls - l). Además de la información que podría listar con ar tv. Objdump - a muestra el formato de archivo de objeto de cada miembro del archivo. --adjust-vma offset Al descartar la información, primero agregue el desplazamiento a todas las direcciones de sección. Esto es útil si las direcciones de la sección no corresponden a la tabla de símbolos, lo que puede suceder cuando se introducen secciones en direcciones particulares cuando se utiliza un formato que no puede representar direcciones de sección, como a. out. - b bfdname --target bfdname Especifica que el formato de código de objeto para los archivos de objeto es bfdname. Esta opción puede no ser necesaria. Objdump puede reconocer automáticamente muchos formatos. Muestra información resumida de los encabezados de sección (-h) de fu. o. Que se identifica explícitamente (-m) como un archivo de objeto VAX en el formato producido por los compiladores de Oasys. Puede listar los formatos disponibles con la opción - i. Consulte la sección 15.1 Selección de objetivos. para más información. - C --demangle style Decode (desmanche) nombres de símbolo de bajo nivel en nombres de nivel de usuario. Además de eliminar cualquier subrayado inicial prefijado por el sistema, esto hace que los nombres de las funciones C sean legibles. Diferentes compiladores tienen diferentes estilos de manipulación. El argumento opcional de estilo de demambulación se puede utilizar para elegir un estilo de desmembración apropiado para su compilador. Véase la sección 9. cfilt. Para más información sobre demangling. - G --debugging Muestra la información de depuración. Esto intenta analizar la información de depuración almacenada en el archivo e imprimirla usando una sintaxis similar a C. Sólo se han implementado ciertos tipos de información de depuración. - d --disassemble Muestra los mnemónicos del ensamblador para las instrucciones de máquina de objfile. Esta opción sólo desmonta las secciones que se espera que contengan instrucciones. - D - desensamble-todos Como - d. Pero desmontar el contenido de todas las secciones, no sólo las que se espera que contenga instrucciones. --prefix-addresses Al desmontar, imprima la dirección completa en cada línea. Este es el formato de desensamblado más antiguo. --desarmar-ceros Normalmente, la salida del desensamblaje saltará los bloques de ceros. Esta opción indica al desensamblador que desensamble esos bloques, al igual que cualquier otro dato. - EB - EL --endian Especifica la endianidad de los archivos de objeto. Esto sólo afecta al desmontaje. Esto puede ser útil cuando se desmonta un formato de archivo que no describe la información de endianness, como S-records. - f --file-header Muestra información resumida del encabezado general de cada uno de los archivos objfile. --file-start-context Especifique que al mostrar el código fuente / desensamblado intercomunicado (asume - S) de un archivo que aún no se ha mostrado, amplíe el contexto al inicio del archivo. - h --section-header --header Muestra información de resumen de los encabezados de sección del archivo de objeto. Los segmentos de archivo pueden ser reubicados en direcciones no estándar, por ejemplo utilizando el texto. - Tdata. O - Tob opciones a ld. Sin embargo, algunos formatos de archivo de objeto, como a. out, no almacenan la dirección de inicio de los segmentos de archivo. En esas situaciones, aunque ld vuelve a colocar las secciones correctamente, usar objdump - h para listar los encabezados de sección de archivo no puede mostrar las direcciones correctas. En su lugar, muestra las direcciones habituales, que están implícitas para el destino. --help Imprime un resumen de las opciones para objdump y exit. - i --info Muestra una lista que muestra todas las arquitecturas y formatos de objeto disponibles para la especificación con - b o - m. - j nombre --sección nombre Mostrar información sólo para el nombre de la sección. - l --line-numbers Etiquetar la pantalla (utilizando la información de depuración) con los números de línea del nombre de archivo y fuente correspondientes al código de objeto o relocales mostrados. Sólo es útil con - d. - RE. O - r. - m machine --architecture machine Especifique la arquitectura que se utilizará al desmontar los archivos de objeto. Esto puede ser útil al desmontar archivos de objetos que no describen información de arquitectura, como registros S. Puede listar las arquitecturas disponibles con la opción - i. - M options --disassembler-options options Pasar información específica de destino al desensamblador. Sólo se admite en algunos objetivos. Si el objetivo es una arquitectura ARM, este conmutador puede utilizarse para seleccionar qué conjunto de nombres de registro se utiliza durante el desensamblaje. Especificar - M reg-name-std (el valor predeterminado) seleccionará los nombres de registro como se usan en la documentación del conjunto de instrucciones ARMs, pero con el registro 13 llamado sp, el registro 14 llamado lr y el registro 15 llamado pc. Especificando - M reg-names-apcs seleccionará el conjunto de nombres utilizado por el ARM Procedure Call Standard, mientras que especificando - M reg-names-raw solo utilizará r seguido por el número de registro. También hay dos variantes en el esquema de nomenclatura de registros APCS habilitado por - M reg-names-atpcs y - M reg-names-special-atpcs que utilizan las convenciones de nomenclatura ARM / Thumb Procedure Call Standard. (Con el nombre de registro normal o los nombres de registro especiales). Esta opción también se puede usar para arquitecturas ARM para obligar al desensamblador a interpretar todas las instrucciones como instrucciones de Thumb utilizando el interruptor --disassembler-optionsforce-thumb. Esto puede ser útil al intentar desensamblar el código del pulgar producido por otros compiladores. Para el x86, algunas de las opciones duplican las funciones del modificador - m, pero permiten un control de grano más fino. Se pueden especificar varias selecciones de las siguientes como una cadena separada por comas. X86-64. I386 e i8086 seleccionan el desensamblaje para la arquitectura dada. Intel y att seleccionan entre modo de sintaxis de Intel y modo de sintaxis de AT38T. Addr32. Addr16. Data32 y data16 especifican el tamaño de dirección y el tamaño de operando predeterminados. Estas cuatro opciones se anularán si x86-64. I386 o i8086 aparecen más adelante en la cadena de opciones. Por último, sufijo. Cuando se encuentra en el modo AT38T, indica al disassembler que imprima un sufijo mnemónico incluso cuando el sufijo pueda ser inferido por los operandos. Para PPC, booke. Booke32 y booke64 seleccionan el desensamblado de las instrucciones BookE. 32 y 64 seleccionan PowerPC y PowerPC64 desmontaje, respectivamente. - p --private-headers Imprime información que es específica para el formato de archivo de objeto. La información exacta impresa depende del formato del archivo de objeto. Para algunos formatos de archivo de objeto, no se imprime ninguna información adicional. - r --reloc Imprime las entradas de reubicación del archivo. Si se utiliza con - d o - D. Las reubicaciones se imprimen entremezcladas con el desmontaje. - R --dynamic-reloc Imprime las entradas dinámicas de reubicación del archivo. Esto sólo tiene sentido para objetos dinámicos, como ciertos tipos de bibliotecas compartidas. - s --full-contents Muestra el contenido completo de las secciones solicitadas. - S - fuente Muestra el código fuente entremezclado con el desmontaje, si es posible. Implica - d. --show-raw-insn Al desmontar las instrucciones, imprima la instrucción en hexadecimal, así como en forma simbólica. Este es el valor predeterminado excepto cuando se utiliza --prefix-addresses. --no-show-raw-insn Al desmontar las instrucciones, no imprima los bytes de instrucción. Este es el valor predeterminado cuando se utiliza --prefix-addresses. - G - stabs Muestra el contenido completo de las secciones solicitadas. Muestra el contenido de las secciones. stab y. stab. index y. stab. excl de un archivo ELF. Esto sólo es útil en sistemas (como Solaris 2.0) en el que las entradas de tablas de símbolos de depuración de depuración se transportan en una sección ELF. En la mayoría de los otros formatos de archivo, las entradas de la tabla de símbolos de depuración se entrelazan con símbolos de vinculación y son visibles en la salida --syms. Para obtener más información sobre los símbolos de puntadas, consulte la sección Información general de las estacas en el formato de depuración de las punterías. --start-address address Comienza a mostrar datos en la dirección especificada. Esto afecta a la salida del - d. - r y - s opciones. --stop-address address Dejar de mostrar datos en la dirección especificada. Esto afecta a la salida del - d. - r y - s opciones. - t --syms Imprime las entradas de la tabla de símbolos del archivo. Esto es similar a la información proporcionada por el programa nm. - T --dynamic-syms Imprime las entradas de la tabla de símbolos dinámicos del archivo. Esto sólo tiene sentido para objetos dinámicos, como ciertos tipos de bibliotecas compartidas. Esto es similar a la información proporcionada por el programa nm cuando se le da la opción - D (- dinámica). --version Imprime el número de versión de objdump y sale. - x --all-header Muestra toda la información de cabecera disponible, incluida la tabla de símbolos y las entradas de reubicación. Usar - x es equivalente a especificar todo - a - f - h - r - t. - w --wide Formato de algunas líneas para dispositivos de salida que tienen más de 80 columnas. Tampoco trunca nombres de símbolos cuando se muestran.

No comments:

Post a Comment