Monday 9 October 2017

Objdump Demontere Arm Binære Alternativer


Kan jeg demontere en flat binær fil ved hjelp av objdump. Jeg er kjent med demontering av en strukturert binær kjørbar, for eksempel en ELF-fil ved bruk. Men hvis jeg har en flat binærfil som jeg vet skal lastes på, f. eks. Adresse 0xabcd1000, kan jeg spør objdump å demontere det jeg prøvde å levere alternativer som - start-adresse 0xabcd1000 men objdump sier bare at det ikke gjenkjenner formatet. Jeg har andre ideer om hvordan å demontere filen, men jeg ønsket å vite om objdump kunne gi en enkel solution. asked Jan 12 13 på 6 21.starblue og hlovdal har begge deler av det kanoniske svaret Hvis du vil demontere rå i8086-kode, vil du vanligvis ha Intel-syntaks, ikke AT T-syntaks, så bruk. Hvis koden din er ELF eller eller E COFF, kan du bruke det korte skjemaet. For 32-biters eller 64-biters kode, utelat, 8086 inneholder ELF-headeren allerede denne informasjonen. ndisasm som foreslått av jameslin er også et godt valg, men objdump leveres vanligvis med operativsystemet og kan håndtere alle arkitekturer støttet av GN U binutils superset av de som støttes av GCC, og dens produksjon kan vanligvis mates inn i GNU da ndisasm s vanligvis kan bli matet inn i nasm selv, selvfølgelig. Peter Cordes antyder at Agner Fog s objconv er veldig hyggelig. Det setter etiketter på grenmål, gjør det mye enklere å finne ut hva koden gjør Det kan demontere i NASM, YASM, MASM eller AT T GNU syntaks. Multimedia Mike har allerede funnet ut om --just-vma ndisasm-ekvivalenten er - o-alternativet. For å demontere, si, sh4 kode Jeg brukte en binær fra Debian for å teste, bruk dette med GNU binutils. Nesten alle andre demontere er begrenset til en plattform, for eksempel x86 med ndisasm og objconv. - M er maskinen, og - EL betyr Little Endian for sh4eb bruk - EB i stedet, noe som er relevant for arkitekturer som eksisterer i enten endianness. answered 22. desember kl. 20 48.objdump viser informasjon om en eller flere objektfiler. Alternativene kontrollerer hvilken bestemt informasjon som skal vises. Denne informasjonen er mest nyttig for programmerere som er wo rking på kompileringsverktøyene, i motsetning til programmerere som bare vil at deres program skal kompilere og work. objfile, er objektfilene som skal undersøkes. Når du angir arkiver, viser objdump informasjon om hvert av objektobjektfilene. De lange og korte former for Alternativer, vist her som alternativer, er ekvivalente. Minst ett alternativ fra listen - a, - d, - D, - e, - f, - g, - G, - h, - H, - p, - r, - R, - S, - S, - T, - T, - V, - x må gis - a - archive-header Hvis noen av objfile-filene er arkiver, viser arkivhovedinformasjonen i et format som ls - l I tillegg til informasjonen du kan liste med ar tv, objdump - a viser objektfilformatet til hvert arkivmedlem --justere-vma-offset. Når du fyller informasjon, må du først legge til offset til alle seksjonsadressene. Dette er nyttig hvis deladressene ikke gjør det svarer til symboltabellen, som kan skje når du legger seksjoner til bestemte adresser når du bruker et format som ikke kan representere seksjonsadresser, for eksempel - b bfdname --target bfdname Sp bekreft at objektkodeformatet for objektfilene er bfdname Dette alternativet kan ikke være nødvendig objdump kan automatisk gjenkjenne mange formater. viser sammendragsinformasjon fra seksjonsoverskriftene - h av fu o som er eksplisitt identifisert - m som en VAX-objektfil i formatet som er produsert av Oasys-kompilatorer Du kan liste formatene som er tilgjengelige med - i-alternativet Se Målvalg for mer informasjon - C - demonter stil Dekode demangle lavnivåsymbolnavn til brukernavn. I tillegg til å fjerne eventuelle underskrifter som er prepended av systemet , dette gjør at C-navn kan leses. Ulike kompilatorer har forskjellige manglende stiler. Den valgfrie demangling stil argumentet kan brukes til å velge en passende demangling stil for kompilatoren. Se c filt for mer informasjon om demangling - g - debugging. Feilsøkingsinformasjon for informasjon Dette forsøker å analysere feilsøkingsinformasjon lagret i filen og skrive ut den med en C-lignende syntaks Bare visse typer feilsøkingsinformasjon har vært jeg mplemented Noen andre typer støttes av readelf - w Se readelf - e --debugging-tags Som - g, men informasjonen er generert i et format som er kompatibelt med ctags tool - d - disassemble Vis monteringsmnemonikkene for maskininstruksjonene fra objfile This alternativet bare demonterer de seksjonene som forventes å inneholde instruksjoner - D - disassemble-all Like - d, men demonter innholdet i alle seksjoner, ikke bare de som forventes å inneholde instruksjoner - prefix-adresser Når du demonterer, skriv ut den komplette adressen på hver linje Dette er det eldre demonteringsformatet - EB - EL - endian Angi endiviteten til objektfilene Dette påvirker bare demontering Dette kan være nyttig når du demonterer et filformat som ikke beskriver endianhetsinformasjon, for eksempel S-records - f - filoverskrifter Vis sammendragsinformasjon fra den overordnede overskriften til hver av objfile-filene - fil-start-kontekst Angi at når visning av interotert kildekode demontering antar - S fra et fil e som ennå ikke har blitt vist, utvide konteksten til starten av filen - h - seksjonshodene - headers Skjermoppsummeringsinformasjon fra seksjonsoverskriftene i objektfilen. Filsegmenter kan flyttes til ikke-standardadresser, for eksempel Ved å bruke alternativene - Ttext - Tdata eller - Tbss til ld Men enkelte objektfilformater, for eksempel lagre ikke startadressen til filsegmentene I disse situasjonene, selv om ld flyttes delene riktig, bruker objdump - h for å liste opp fil seksjonsoverskrifter kan ikke vise de riktige adressene i stedet viser de vanlige adressene, som er implisitte for målet - H --hjelp Skriv ut et sammendrag av alternativene til objdump og exit - i - info Vis en liste som viser alle arkitekturer og objekt formater tilgjengelig for spesifikasjon med - b eller - m - j navn - seksjonsnavn Vis kun informasjon for delenavn - l - linjene Nummerer skjermen ved hjelp av feilsøkingsinformasjon med filnavn og kilde-linjenummer som svarer til objektkoden eller relocs vist Kun nyttig med - d - D eller - r - m maskin - arkitektur maskin Angi arkitekturen som skal brukes når du demonterer objektfiler Dette kan være nyttig når du demonterer objektfiler som ikke beskriver arkitekturinformasjon, for eksempel S-poster You kan liste de tilgjengelige arkitekturene med alternativet - i - M alternativer - alternativ til alternativ for alternativet alternativt alternativ til disassembler Bare støttes på enkelte mål Hvis det er nødvendig å spesifisere mer enn ett demonteringsalternativ, kan flere - M-alternativer brukes eller kan plasseres sammen i en kommaseparert liste. Hvis målet er en ARM-arkitektur, kan denne bryteren brukes til å velge hvilket registernavn som skal brukes under disassembler. Angi - M reg-names-std som standard vil velge regneavnene som brukes i ARM s instruksjonsoppsett dokumentasjon, men med register 13 kalt sp, register 14 kalt lr og register 15 kalt pc Spesifiserer - M reg-names-apcs vil velge navnet settet brukt av ARM P roeping Call Standard, mens du spesifiserer - M reg-names-raw vil bare bruke r etterfulgt av registretummer. Det er også to varianter på APCS-registrerings navngivningssystemet aktivert av - M reg-names-atpcs og - M reg-names - special-atpcs som bruker ARM Thumb Procedure Call Standard navnekonvensjoner Enten med de normale registernavnene eller de spesielle registernavnene. Dette alternativet kan også brukes til ARM-arkitekturer for å tvinge demontereren til å tolke alle instruksjoner som Thumb-instruksjoner ved å bruke bryteren - - disassembler-options force-thumb Dette kan være nyttig når du prøver å demontere tommelkoden produsert av andre kompilatorer. For x86, kan noen av alternativene duplisere funksjoner av - m-bryteren, men tillater finere kornstyring Flere valg fra følgende kan være spesifisert som en kommaseparert streng x86-64 i386 og i8086 velg demontering for den angitte arkitekturen intel og å velge mellom intel syntaksmodus og AT T syntaksmodus addr32 addr16 data32 og data16 spesifisert y standard adressestørrelsen og operandstørrelsen Disse fire alternativene blir overskredet hvis x86-64 i386 eller i8086 vises senere i alternativstrengen Til slutt, suffiks når den er i AT T-modus, instruerer demontereren til å skrive ut et mnemonisk suffiks selv når suffikset kan være avledet av operandene. For PPC, booke booke32 og booke64 velg demontering av BookE-instruksjoner 32 og 64 velg PowerPC og PowerPC64-demontering, henholdsvis e300 velger demontering for e300-familien. For MIPS styrer dette alternativet utskrift av instruksjonsmneumoniske navn og registrer navn i demonterte instruksjoner Flere valg fra følgende kan angis som en kommaseparert streng, og ugyldige alternativer ignoreres ikke-aliaser Skriv ut rå instruksjon mneumonisk i stedet for noen pseudo instruksjon mneumonic IE print daddu eller eller i stedet for å flytte, sll istedenfor nop, etc gpr-navn ABI Print GPR generell registreringsnavn som passer for spesifisert ABI Som standard velges GPR navn accordi ng til ABI for binæret er demontert fpr-navn ABI Print FPR flytende punktregistreringsnavn som passer for spesifisert ABI Som standard skrives FPR-numre i stedet for navn cp0-navn ARCH Print CP0 systemstyring coprocessor coprocessor 0 registernavn som egnet for CPU eller arkitektur spesifisert av ARCH Som standard velges CP0-registernavn i henhold til arkitekturen og CPUen til binæret som er demontert hwr-navn ARCH Print HWR-maskinvareregister, brukt av rdhwr-instruksjonsnavnene som passer for CPU eller arkitektur spesifisert av ARCH Som standard velges HWR-navn i henhold til arkitekturen og CPUen til binæret som er demontert regnavnet ABI Print GPR og FPR navnene som passer for de valgte ABI reg-navnene ARCH Print CPU-spesifikke registernavn CP0 register og HWR navnene som er aktuelle for den valgte CPUen eller arkitekturen. For noen av alternativene som er oppført ovenfor, kan ABI eller ARCH angis som numerisk for å ha nummer trykt r ather enn navn, for de valgte typene registre Du kan oppgi de tilgjengelige verdiene for ABI og ARCH ved hjelp av --hjelp-alternativet. For VAX kan du angi funksjonsoppføringsadresser med - M oppføring 0xf00ba Du kan bruke dette flere ganger til å demontere ordentlig VAX binære filer som ikke inneholder symboltabeller som ROM-dumper. I disse tilfellene vil funksjonsmeldingsmasken ellers bli dekodet som VAX-instruksjoner, noe som sannsynligvis vil føre til at resten av funksjonen er feilmontert - p - private-headers Skriv ut informasjon som er spesifikk for objektfilformatet. Den eksakte informasjonen som skrives ut, avhenger av objektfilformatet. For noen objektfilformater skrives ingen tilleggsinformasjon til - r - reloc. Skriv ut flyttingsoppføringene til filen. Hvis den brukes med - d eller - D flyttinger flyttes ut med demontering - R - dynamisk-relok Skriv ut dynamiske flyttingsoppføringer av filen Dette er bare meningsfylt for dynamiske objekter, for eksempel bestemte typer delte biblioteker - s - fullstendig innhold Vis hele innholdet i alle seksjoner som er forespurt Som standard vises alle ikke-tomme seksjoner - S - kilden Vis kildekoden blandet med demontering, om mulig Impliserer - d - viser-rå-innsnøring Ved demontering av instruksjoner, skriv instruksjonene i heks og symbolsk form. Dette er standard unntatt når - prefix-adresser er brukt - ikke-show-raw-insn Når du demonterer instruksjonene, må du ikke skrive ut instruksjonsbyten. Dette er standard når - prefix-adresser er brukt - W - dwarf Viser innholdet i DWARF-feilsøkingsseksjonene i filen, hvis noen er til stede - G - staber Vis hele innholdet i alle seksjoner som er forespurt. Vis innholdet i og og delene fra en ELF fil Dette er bare nyttig på systemer som Solaris 2 0 der debugging symbol-tabelloppføringer er båret i en ELF-seksjon I de fleste andre filformater, er feilsøkings symbol-tabelloppføringer sammenflettet med koblingssymboler, og er synlige i - symbolene output For mer informasjon om stabs symboler, se Stabs - startadresse adresse Start visning av data ved den angitte adressen Dette påvirker utgangen av alternativene - d - r og - s - stoppadresseadresse Stopp visning av data ved den angitte adressen Dette påvirker utgangen av - d - r og - s alternativer - t - symer Skriv ut symboltabelloppføringene i filen Dette ligner på informasjonen fra nm-programmet - T - dynamisk-syms Skriv ut de dynamiske symboltabelloppføringene i filen Dette er bare meningsfylt for dynamiske objekter, for eksempel bestemte typer delte biblioteker. Dette ligner informasjonen som er gitt av nm-programmet når den får den - D-dynamiske opsjonen - spesielle-symer. Når du viser symboler, inkluderer de som målet vurderer å være spesiell på en eller annen måte, og som normalt ikke ville være av interesse for brukeren - V - versjon Skriv ut versjonsnummeret for objdump og exit - x --all-headers Vis all tilgjengelig headerinformasjon, inkludert symboltabell og flyttingsoppføringer Bruke - x er ekvivalent med å spesifisere ing alle - a - f - h - p - r - t - w - wideformat Formater noen linjer for utdataenheter som har mer enn 80 kolonner. Ikke trunker symbolnavn når de vises - z - disassemble-nuller Normalt demonteringsutgangen hopper over nullblokker Dette alternativet styrer demonteringen for å demontere disse blokkene, akkurat som alle andre data. objdump viser informasjon om en eller flere objektfiler. Alternativene styrer hvilken bestemt informasjon som skal vises. Denne informasjonen er mest nyttig for programmerere som er arbeider med kompileringsverktøyene, i motsetning til programmerere som bare vil at deres program skal kompilere og work. objfile, er objektfilene som skal undersøkes. Når du angir arkiver, viser objdump informasjon om hvert av objektobjektfilene. De lange og korte former for Alternativer, vist her som alternativer, er ekvivalente. Minst ett alternativ fra listen - a, - d, - D, - f, - g, - G, - h, - H, - p, - r, - R, - S, - t, - T, - V, - x må gis.-a - arkiv-header Hvis noen av objfile-filene er arkiver, vises arkivhovedinformasjonen i et format som ls - l. I tillegg til informasjonen du kan liste med ar tv objdump - a viser objektfilformatet til hvert arkivmedlem .-- juster-vma-offset Når du fyller informasjon, må du først legge opp mot alle seksjonsadresser Dette er nyttig hvis seksjonsadressene ikke samsvarer med symboltabellen, noe som kan skje når du plasserer seksjoner på bestemte adresser når du bruker et format som ikke kan representere seksjonsadresser, for eksempel. - b bfdname --target bfdname Angi at objektkodeformat for objektfilene er bfdname Dette alternativet kan ikke være nødvendig objdump kan automatisk gjenkjenne mange formater. viser sammendragsinformasjon fra seksjonsoverskriftene - h av fu o som er eksplisitt identifisert - m som en VAX-objektfil i formatet som er produsert av Oasys-kompilatorer Du kan vise formatene som er tilgjengelige med - i-alternativet Se seksjon 15 1 Målvalg for mer informasjon.-C - Demonstringsstil Dekode demangle lavnivåsymbolnavn til bruker-lev el navn I tillegg til å fjerne noen initial understreking prepended av systemet, dette gjør C-funksjonen lesbare. Ulike kompilatorer har forskjellige mangling stiler. Den valgfrie demangling stil argumentet kan brukes til å velge en passende demangling stil for kompilatoren Se avsnitt 9 c filt for mer informasjon om demangling.-G - debugging Feilsøkingsinformasjon for informasjon Dette forsøker å analysere feilsøkingsinformasjon som er lagret i filen og skrive ut den ved hjelp av en C-lignende syntaks. Bare visse typer feilsøkingsinformasjon er implementert. - d - disassemble Vis assembler-mnemonikken for maskininstruksjoner fra objfile Dette alternativet demonterer bare de seksjonene som forventes å inneholde instruksjoner. - D - disassemble-all Like - d, men demonter innholdet i alle seksjoner, ikke bare de som forventes å inneholde instruksjoner .-- prefix-adresser Når demontering , skriv ut den komplette adressen på hver linje Dette er det eldre demonteringsformatet .-- Demonter nuller Normalt disasene Sembly-output vil hoppe over nullblokker Dette alternativet styrer demonteringen for å demontere disse blokkene, akkurat som alle andre data.-EB - EL - dansk Angi endianiteten til objektfilene Dette påvirker bare demontering Dette kan være nyttig når du demonterer et filformat som ikke beskriver endianness-informasjon, for eksempel S-records.-f - file-header Vis sammendragsinformasjon fra den overordnede overskriften til hver av objfile-filene .-- filstart-kontekst Angi at når visning av interotert kildekode demontering antar - S fra en fil som ennå ikke har blitt vist, utvide konteksten til starten av filen. - h --section-header --header Vis sammendragsinformasjon fra seksjonsoverskriftene til objektfilen. Filsegmenter kan flyttes til ikke-standard adresser, for eksempel ved å bruke alternativene - Ttext - Tdata eller - Tbss til ld Men enkelte objektfilformater, for eksempel lagre ikke startadressen til filsegmentene I disse situasjonene, selv om ld flyttes seksjonene med rett, ved å bruke objdump - h for å oppgi overskriftene på seksjonen, kan ikke de riktige adressene vises. I stedet viser de vanlige adressene, som er implisitte for målet. - hjelp Skriv ut et sammendrag av alternativene for å objdump og exit.-i - info Vis en liste som viser alle arkitekturer og objektformater som er tilgjengelige for spesifikasjon med - b eller - m.-j navn - seksjonsnavn Bare vis informasjon for delenavn. - l-linjenumre Merker skjermen ved hjelp av feilsøkingsinformasjon med filnavnet og kildelinjenummer som svarer til objektkoden eller reloklene som vises. Bare nyttig med - d - D eller - r.-m maskin - arkitekturmaskin Spesifiser arkitekturen som skal brukes når du demonterer objektfiler Dette kan være nyttig når du demonterer objektfiler som ikke beskrive arkitekturinformasjon, for eksempel S-poster Du kan liste de tilgjengelige arkitekturene med alternativet - i. - M - alternativer for alternativet alternativt opsjon Passer målrettet informasjon til demonteringen Kun støttes på enkelte mål. Hvis målet er en ARM-arkitektur, så kan denne bryteren brukes til å velge hvilket registernavn som skal brukes under demonteringen. Spesifisere - M reg-name-std standard vil velge registernavnene som brukes i ARMs instruksjonssettingsdokumentasjon, men med register 13 kalt sp , registrer 14 kalt lr og registrer 15 kalt pc. Spesifiserer - M reg-names-apcs vil velge navnet settet som brukes av ARM Prosedyre Call Standard, mens du spesifiserer - M reg-names-raw vil bare bruke r etterfulgt av registernummeret. Det er også to varianter på APCS-register-navngivningssystemet aktivert av - M regne-navne-atpcs og - M reg-names-special-atpcs som bruker ARM Thumb Procedure Call Standard navngivningskonvensjonene Enten med det normale registernavnet eller det spesielle registeret navn. Dette alternativet kan også brukes til ARM-arkitekturer for å tvinge demonteringen til å tolke alle instruksjoner som Thumb-instruksjoner ved å bruke bryteren --disassembler-options force-thumb Dette kan være nyttig når du forsøker å demontere tommelkodproduksjon ed av andre kompilatorer. For x86, kan noen av alternativene duplisere funksjoner av - m-bryteren, men tillater finere kornet kontroll Flere valg fra følgende kan angis som en kommaseparert streng x86-64 i386 og i8086 velg demontering for gitt arkitektur intel og å velge mellom intel syntax modus og AT T syntax modus addr32 addr16 data32 og data16 angi standard adressestørrelse og operand størrelse Disse fire alternativene vil bli overskredet hvis x86-64 i386 eller i8086 vises senere i alternativstrengen Til slutt, suffiks når i AT T-modus instruerer dissassembleren å skrive ut et mnemonisk suffiks, selv når suffikset kan utledes av operandene. For PPC, booke booke32 og booke64 velg demontering av BookE-instruksjoner 32 og 64 velg PowerPC og PowerPC64 demontering henholdsvis. - p - - private-headers Skriv ut informasjon som er spesifikk for objektfilformatet. Den eksakte informasjonen som skrives ut, avhenger av objektfilformatet. For noen objektfilformater, ingen tillegg informasjon skrives ut. - r - reloc Skriv ut flyttingsinngangene til filen Hvis den brukes med - d eller - D, blir flyttingene utskrevet med demontering. - R - dynamisk-relok Skriv ut de dynamiske flyttingsinngangene til filen. Dette er bare meningsfylt for dynamiske objekter, for eksempel bestemte typer delte biblioteker.-s-full-innhold Vis hele innholdet i alle seksjoner som er forespurt. - S - kilde Vis kildekode blandet med demontering, hvis mulig. Indikerer - d .-- show-raw-insn Når du demonterer instruksjonene, skriv ut instruksjonene både i heks og i symbolsk form. Dette er standard unntatt når - prefix-adresser er brukt .-- ikke-vis-rå-innsnøring Når du demonterer instruksjonene, må du ikke skrive ut instruksjonsbyte Dette er standard når --prefix-adresser er brukt. - G-stabler Vis hele innholdet i alle seksjoner som er forespurt. Vis innholdet i og og delene fra en ELF-fil. Dette er bare nyttig på systemer som Solaris 2 0 der debugging symbol-tabelloppføringer blir båret i en ELF-seksjon I de fleste andre filformater er feilsøkingstabelloppføringer interleaved med koblingssymboler, og er synlige i - syms-utgangen. For mer informasjon om stabs-symboler, se avsnitt Stabs-oversikt i The stabs-feilsøkingsformat .-- start adresseadresse Start visning av data ved den angitte adressen Dette påvirker utgangen av alternativene - d - r og - s .-- Stoppadresseadress Stopp visning av data ved den angitte adressen Dette påvirker utgangen av - d - r og - s-alternativer. - t - symboler Skriv ut symboltabelloppføringene til filen. Dette ligner på informasjonen fra nm-programmet. - T - dynamisk-syms Skriv ut de dynamiske symboltabelloppføringene i filen. Dette er bare meningsfullt for dynamisk objekter, for eksempel bestemte typer delte biblioteker Dette ligner på informasjonen gitt av nm-programmet når den er gitt - D-dynamisk alternativ .-- versjon Skriv ut versjonsnummeret for objdump og exit.-x --all-header Display all tilgjengelig headerinformasjon, inkludert symboltabellen og Flyttingsoppføringer Bruk - x tilsvarer å spesifisere alle - a - f - h - r - t.-w --wide Formater noen linjer for utdataenheter som har mer enn 80 kolonner. Ikke trunker symbolnavn når de vises. objdump viser informasjon om en eller flere objektfiler. Alternativene kontrollerer hvilken bestemt informasjon som skal vises. Denne informasjonen er mest nyttig for programmerere som jobber med kompileringsverktøyene, i motsetning til programmerere som bare vil at programmet skal kompilere og work. objfile er objektet filer som skal undersøkes Når du angir arkiver, viser objdump informasjon om hver av objektobjektfilene. De lange og korte alternativene, som vises her som alternativer, er ekvivalente. Minst ett alternativ fra listen - a, - d, - D , - E, - f, - g, - G, - h, - H, - p, - P, - r, - R, - s, - S, - t, - T, - V, - x må være gitt - a - arkiv-header Hvis noen av objfile-filene er arkiver, viser arkivhovedinformasjonen i et format som ls - l. I tillegg til informasjonen du kan liste med ar tv, ob jdump - a viser objektfilformatet til hvert arkivmedlem --justere-vma-offset Når du fyller informasjon, må du først legge til offset til alle seksjonadressene. Dette er nyttig hvis seksjonsadressene ikke samsvarer med symboltabellen, noe som kan skje når du setter seksjoner ved bestemte adresser når du bruker et format som ikke kan representere seksjonsadresser, for eksempel - b bfdname --target bfdname Angi at objektkodeformatet for objektfilene er bfdname Dette alternativet kan ikke være nødvendig objdump kan automatisk gjenkjenne mange formater. viser sammendragsinformasjon fra seksjonsoverskriftene - h av fu o som er eksplisitt identifisert - m som en VAX-objektfil i formatet produsert av Oasys-kompilatorer Du kan liste formatene som er tilgjengelige med - i-alternativet Se Målvalg for mer informasjon - C - - demangle style Dekode demangle lavnivåsymbolnavn til brukernavn. I tillegg til å fjerne noen initial understreking prepended av systemet, gjør dette C-funksjonen lesbare. Ulike compi Lers har forskjellige manglende stiler. Den valgfrie demangling stil argumentet kan brukes til å velge en passende demangling stil for kompilatoren Se c filt for mer informasjon om demangling - g --debugging Informasjon om feilsøking Dette forsøker å analysere STABS og IEEE feilsøkingsformatinformasjon lagret i filen og skriv den ut med en C-lignende syntaks Hvis ingen av disse formatene er funnet, faller dette alternativet tilbake på - W-alternativet for å skrive ut noen DWARF-informasjon i filen - e - debugging-tagger som - g, men informasjonen genereres i et format som er kompatibelt med ctags tool - d - disassemble Vis montering av montering for maskininstruksjonene fra objfile Dette alternativet demonterer bare de seksjonene som forventes å inneholde instruksjoner - D - disassemble-all Like - d, men demonterer innholdet av alle seksjoner, ikke bare de som forventes å inneholde instruksjoner. Dette alternativet har også en subtil effekt på demontering av instruksjoner i kodeseksjoner. Når alternativet - d er i effe ct objdump vil anta at noen symboler som er tilstede i en kodeseksjon, forekommer på grensen mellom instruksjoner og det vil nekte å demontere over en slik grense. Når alternativet - D er i virkeligheten, er denne antagelsen imidlertid undertrykt. Dette betyr at det er mulig for utgangen av - d og - D for å avvike om data lagres i kodeseksjoner. Hvis målet er en ARM-arkitektur, vil denne bryteren også føre til å tvinge disassembleren til å dekode dataene som finnes i kodeseksjoner som om de var instruksjoner --prefix-adresser Når du demonterer, skriv ut hele adressen på hver linje. Dette er det eldre demonteringsformatet - EB - EL - dansk. Angi endianiteten til objektfilene. Dette påvirker bare demontering. Dette kan være nyttig når du demonterer et filformat som gjør ikke beskrive endianness informasjon, for eksempel S-records - f - fil-headers Vis sammendragsinformasjon fra den overordnede overskriften til hver av objfile-filene - F - fil-offsets Når demontering av seksjoner, wheneve ra-symbolet vises, viser også filforskyvningen av dataområdet som skal dumpes. Hvis nuller blir hoppet over, så når demontering gjenopptas, fortell brukeren hvor mange nuller som er hoppet over, og filen offset av plasseringen derfra demontering gjenopptas Når du viser dumpingeksempler, viser du filforskyvningen av stedet der dumpingen starter - fil-start-kontekst Angi at når visning av interotert kildekode demontering antar - S fra en fil som ennå ikke er vist, utvide konteksten til Starten av filen - h - seksjon-overskrifter - headers Vis sammendragsinformasjon fra seksjonsoverskriftene til objektfilen. Filsegmenter kan flyttes til ikke-standardadresser, for eksempel ved å bruke alternativene - Ttext - Tdata eller - Tbss til ld Imidlertid kan noen objektfilformater, for eksempel ikke lagre startadressen til filsegmentene. I disse situasjonene, selv om ld flyttes delene riktig, bruker objdump - h for å liste filseksjonene kan ikke sho w de riktige adressene I stedet viser det de vanlige adressene, som er implisitte for målet. Merk, i noen tilfeller er det mulig for en seksjon å ha både READONLY og NOREAD attributter sett. I slike tilfeller har NOREAD-attributten forrang, men objdump vil rapportere begge siden den nøyaktige innstillingen av flaggbitene kan være viktig - H --hjelp Skriv ut et sammendrag av alternativene til objdump og exit - i - info Vis en liste som viser alle arkitekturer og objektformater tilgjengelig for spesifikasjon med - b eller - m - j navn - seksjonsnavn Vis kun informasjon om delenavn - l - linjene Nummer skjermbildet ved hjelp av feilsøkingsinformasjon med filnavn og kildelinjenummer som svarer til objektkoden eller reloklene som vises. Bare nyttig med - d - D eller - r - m maskin - arkitektur maskin Angi arkitekturen som skal brukes når du demonterer objektfiler Dette kan være nyttig når du demonterer objektfiler som ikke beskriver arkitekturinformasjon, for eksempel S-poster Du kan liste av ailable-arkitekturer med - i-alternativet. Hvis målet er en ARM-arkitektur, har denne bryteren en ekstra effekt. Det begrenser demontering til bare de instruksjonene som støttes av den arkitekturen som er spesifisert av maskinen. Hvis det er nødvendig å bruke denne bryteren fordi inngangsfilen gjør ikke inneholde noen arkitekturinformasjon, men det er også ønskelig å demontere alle instruksjonene. bruk - marm - M alternativer - disassembler-opsjonsalternativer Pass målrettet informasjon til demonteringen Kun støttes på enkelte mål Hvis det er nødvendig å spesifisere mer enn en demonterer alternativet kan flere - M-alternativer brukes eller kan plasseres sammen i en kommaseparert liste. For ARC styrer dsp utskrift av DSP-instruksjoner, spfp velger utskrift av FPX-enkeltpresisjon FP-instruksjoner, dpfp velger utskrift av FPX dobbel presisjon FP-instruksjoner, quarkseem velger utskrift av spesielle QuarkSE-EM instruksjoner, fpuda velger utskrift av dobbeltsynthetsassistent inst rupturer, velger fpus utskrift av FPU-ensartede FP-instruksjoner, mens fpud velger utskrift av FPU souble-presisjon FP-instruksjoner. Hvis målet er en ARM-arkitektur, kan denne bryteren brukes til å velge hvilket registernavn som skal brukes under demonteringen. Angi - M regne navn-std standard vil velge registernavnene som brukes i ARM s instruksjonsoppsett dokumentasjon, men med register 13 kalt sp, register 14 kalt lr og register 15 kalt pc Spesifiserer - M reg-navn-apcs vil velge navnet sett brukt av ARM Procedure Call Standard, mens du spesifiserer - M reg-names-raw vil bare bruke r etterfulgt av registretummer. Det er også to varianter på APCS-register navngivningssystemet aktivert av - M reg-names-atpcs og - M regne-navne-spesifikke atpcs som bruker ARM Thumb Procedure Call Standard navngivningskonvensjonene Enten med de normale registernavnene eller de spesielle registernavnene. Dette alternativet kan også brukes til ARM-arkitekturer for å tvinge demonteringen til å interpere ret alle instruksjonene som tommelfinger instruksjoner ved å bruke bryteren --disassembler-options force-thumb Dette kan være nyttig når du prøver å demontere tommelfingerkoden produsert av andre kompilatorer. For x86, vil noen av alternativene duplisere funksjonene til - m-bryteren, men tillate finere kornet kontroll Flere valg fra følgende kan angis som en kommaseparert streng x86-64 i386 i8086 Velg demontering for den angitte arkitekturen intel til Velg mellom intel syntaksmodus og AT T syntaksmodus amd64 intel64 Velg mellom AMD64 ISA og Intel64 ISA intel - mnemonic att-mnemonic Select between intel mnemonic mode and AT T mnemonic mode Note intel-mnemonic implies intel and att-mnemonic implies att addr64 addr32 addr16 data32 data16 Specify the default address size and operand size These four options will be overridden if x86-64 i386 or i8086 appear later in the option string suffix When in AT T mode, instructs the disassembler to print a mnemonic suffix even when the suffix could be inf erred by the operands. For PowerPC, booke controls the disassembly of BookE instructions 32 and 64 select PowerPC and PowerPC64 disassembly, respectively e300 selects disassembly for the e300 family 440 selects disassembly for the PowerPC 440 ppcps selects disassembly for the paired single instructions of the PPC750CL. For MIPS, this option controls the printing of instruction mnemonic names and register names in disassembled instructions Multiple selections from the following may be specified as a comma separated string, and invalid options are ignored no-aliases Print the raw instruction mnemonic instead of some pseudo instruction mnemonic I e print daddu or or instead of move , sll instead of nop , etc msa Disassemble MSA instructions virt Disassemble the virtualization ASE instructions xpa Disassemble the eXtended Physical Address XPA ASE instructions gpr-names ABI Print GPR general-purpose register names as appropriate for the specified ABI By default, GPR names are selected accordi ng to the ABI of the binary being disassembled fpr-names ABI Print FPR floating-point register names as appropriate for the specified ABI By default, FPR numbers are printed rather than names cp0-names ARCH Print CP0 system control coprocessor coprocessor 0 register names as appropriate for the CPU or architecture specified by ARCH By default, CP0 register names are selected according to the architecture and CPU of the binary being disassembled hwr-names ARCH Print HWR hardware register, used by the rdhwr instruction names as appropriate for the CPU or architecture specified by ARCH By default, HWR names are selected according to the architecture and CPU of the binary being disassembled reg-names ABI Print GPR and FPR names as appropriate for the selected ABI reg-names ARCH Print CPU-specific register names CP0 register and HWR names as appropriate for the selected CPU or architecture. For any of the options listed above, ABI or ARCH may be specified as numeric to have numbers printed r ather than names, for the selected types of registers You can list the available values of ABI and ARCH using the --help option. For VAX, you can specify function entry addresses with - M entry 0xf00ba You can use this multiple times to properly disassemble VAX binary files that don t contain symbol tables like ROM dumps In these cases, the function entry mask would otherwise be decoded as VAX instructions, which would probably lead the rest of the function being wrongly disassembled - p --private-headers Print information that is specific to the object file format The exact information printed depends upon the object file format For some object file formats, no additional information is printed - P options --private options Print information that is specific to the object file format The argument options is a comma separated list that depends on the format the lists of options is displayed with the help. For XCOFF, the available options are header aout sections syms relocs lineno, loader e xcept typchk traceback toc ldinfo. Not all object formats support this option In particular the ELF format does not use it - r --reloc Print the relocation entries of the file If used with - d or - D the relocations are printed interspersed with the disassembly - R --dynamic-reloc Print the dynamic relocation entries of the file This is only meaningful for dynamic objects, such as certain types of shared libraries As for - r if used with - d or - D the relocations are printed interspersed with the disassembly - s --full-contents Display the full contents of any sections requested By default all non-empty sections are displayed - S --source Display source code intermixed with disassembly, if possible Implies - d --prefix prefix Specify prefix to add to the absolute paths when used with - S --prefix-strip level Indicate how many initial directory names to strip off the hardwired absolute paths It has no effect without --prefix prefix --show-raw-insn When disassembling instructions, print the instruc tion in hex as well as in symbolic form This is the default except when --prefix-addresses is used --no-show-raw-insn When disassembling instructions, do not print the instruction bytes This is the default when --prefix-addresses is used --insn-width width Display width bytes on a single line when disassembling instructions - W lLiaprmfFsoRt --dwarf rawline, decodedline, info, abbrev, pubnames --dwarf aranges, macro, frames, frames-interp, str, loc --dwarf Ranges, pubtypes, traceinfo, traceabbrev --dwarf tracearanges, gdbindex Displays the contents of the debug sections in the file, if any are present If one of the optional letters or words follows the switch then only data found in those specific sections will be dumped. Note that there is no single letter option to display the content of trace sections or. Note the output from the info option can also be affected by the options --dwarf-depth the --dwarf-start and the --dwarf-check --dwarf-depth n Limit the dump of the section to n child ren This is only useful with --dwarf info The default is to print all DIEs the special value 0 for n will also have this effect. With a non-zero value for n DIEs at or deeper than n levels will not be printed The range for n is zero-based --dwarf-start n Print only DIEs beginning with the DIE numbered n This is only useful with --dwarf info. If specified, this option will suppress printing of any header information and all DIEs before the DIE numbered n Only siblings and children of the specified DIE will be printed. This can be used in conjunction with --dwarf-depth --dwarf-check Enable additional checks for consistency of Dwarf information - G --stabs Display the full contents of any sections requested Display the contents of the and and sections from an ELF file This is only useful on systems such as Solaris 2 0 in which debugging symbol-table entries are carried in an ELF section In most other file formats, debugging symbol-table entries are interleaved with linkage symbols, and are vi sible in the --syms output --start-address address Start displaying data at the specified address This affects the output of the - d - r and - s options --stop-address address Stop displaying data at the specified address This affects the output of the - d - r and - s options - t --syms Print the symbol table entries of the file This is similar to the information provided by the nm program, although the display format is different The format of the output depends upon the format of the file being dumped, but there are two main types One looks like this. where the number inside the square brackets is the number of the entry in the symbol table, the sec number is the section number, the fl value are the symbol s flag bits, the ty number is the symbol s type, the scl number is the symbol s storage class and the nx value is the number of auxilary entries associated with the symbol The last two fields are the symbol s value and its name. The other common output format, usually seen with ELF based fi les, looks like this. Here the first number is the symbol s value sometimes refered to as its address The next field is actually a set of characters and spaces indicating the flag bits that are set on the symbol These characters are described below Next is the section with which the symbol is associated or ABS if the section is absolute ie not connected with any section , or UND if the section is referenced in the file being dumped, but not defined there. After the section name comes another field, a number, which for common symbols is the alignment and for other symbol is the size Finally the symbol s name is displayed. The flag characters are divided into 7 groups as follows l g u The symbol is a local l , global g , unique global u , neither global nor local a space or both global and local A symbol can be neither local or global for a variety of reasons, e g because it is used for debugging, but it is probably an indication of a bug if it is ever both local and global Unique global sy mbols are a GNU extension to the standard set of ELF symbol bindings For such a symbol the dynamic linker will make sure that in the entire process there is just one symbol with this name and type in use w The symbol is weak w or strong a space C The symbol denotes a constructor C or an ordinary symbol a space W The symbol is a warning W or a normal symbol a space A warning symbol s name is a message to be displayed if the symbol following the warning symbol is ever referenced I i The symbol is an indirect reference to another symbol I , a function to be evaluated during reloc processing i or a normal symbol a space d D The symbol is a debugging symbol d or a dynamic symbol D or a normal symbol a space F f O The symbol is the name of a function F or a file f or an object O or just a normal symbol a space - T --dynamic-syms Print the dynamic symbol table entries of the file This is only meaningful for dynamic objects, such as certain types of shared libraries This is similar to the infor mation provided by the nm program when given the - D --dynamic option. The output format is similar to that produced by the --syms option, except that an extra field is inserted before the symbol s name, giving the version information associated with the symbol If the version is the default version to be used when resolving unversioned references to the symbol then it s displayed as is, otherwise it s put into parentheses --special-syms When displaying symbols include those which the target considers to be special in some way and which would not normally be of interest to the user - V --version Print the version number of objdump and exit - x --all-headers Display all available header information, including the symbol table and relocation entries Using - x is equivalent to specifying all of - a - f - h - p - r - t - w --wide Format some lines for output devices that have more than 80 columns Also do not truncate symbol names when they are displayed - z --disassemble-zeroes Normally the disassembly output will skip blocks of zeroes This option directs the disassembler to disassemble those blocks, just like any other data. or --target instead of - b - D is disassemble the contents of all sections - b bfdname or --target bfdname will force reading as specified object-code format not elf but raw binary in our case - m machine will specify the architecture to use in our file there is no header with arch info - M options are options of disassembler addr16,data16 are used to specify the default address size and operand size treat code as i8086 one in the universal x86 disasm engine osgx Nov 28 12 at 16 41.-b specifies 16-, 32- or 64-bit mode The default is 16-bit mode - o is the notional load address for the file This option causes ndisasm to get the addresses it lists down the left hand margin, and the target addresses of PC-relative jumps and calls, right - s specifies a synchronisation address, such that ndisasm will not output any machine instruction which encompasses bytes on both sides of the address Hence the instruction which starts at that address will be correctly disassembled Janus Troelsen May 6 13 at 18 49.starblue and hlovdal both have parts of the canonical answer If you want to disassemble raw i8086 code, you usually want Intel syntax, not AT T syntax, too, so use. If your code is ELF or or E COFF , you can use the short form. For 32-bit or 64-bit code, omit the ,8086 the ELF header already includes this information. ndisasm as suggested by jameslin is also a good choice, but objdump usually comes with the OS and can deal with all architectures supported by GNU binutils superset of those supported by GCC , and its output can usually be fed into GNU as ndisasm s can usually be fed into nasm though, of course. Peter Cordes suggests that Agner Fog s objconv is very nice It puts labels on branch targets, making a lot easier to figure out what the code does It can disassemble into NASM, YASM, MASM, or AT T GNU syntax. Multimedia Mike already found out about --adjus t-vma the ndisasm equivalent is the - o option. To disassemble, say, sh4 code I used one binary from Debian to test , use this with GNU binutils almost all other disassemblers are limited to one platform, such as x86 with ndisasm and objconv. The - m is the machine, and - EL means Little Endian for sh4eb use - EB instead , which is relevant for architectures that exist in either endianness. answered Dec 22 15 at 20 44.It built fine right out of the box on GNU Linux, for me But yes, it s x86 x86-64 only, unlike GNU binutils However, it has a lot of nice x86-specific hints that it adds as comments, like when an operand-size prefix can cause an LCP-stall in the decoders of an Intel CPU By all means, mention it in your answer One of the major purposes of comments is to help the poster improve their answer, not just as something that later viewers need to read, too Peter Cordes Dec 23 15 at 11 11.

No comments:

Post a Comment