Kan jag demontera en platt binär fil med hjälp av objdump. Jag är bekant med att demontera en strukturerad binär körbar som en ELF-fil med. Men om jag har en platt binärfil som jag vet ska laddas till, t. ex. adress 0xabcd1000, kan jag Fråga objdump för att demontera det jag försökte leverera alternativ som - startadress 0xabcd1000 men objdump säger bara att det inte känner igen formatet. Jag har andra idéer om hur man demonterar filen men jag ville veta om objdump skulle kunna ge en enkel Solution. asked Jan 12 13 på 6 21.starblue och hlovdal har båda delar av det kanoniska svaret Om du vill demontera rå i8086-kod vill du vanligtvis Intel-syntax, inte ATT-syntax, så använd. Om din kod är ELF Eller eller E COFF, kan du använda den korta formuläret. För 32-bitars eller 64-bitars kod, släppa bort 8086 innehåller ELF-rubriken redan denna information. ndisasm som föreslagits av jameslin är också ett bra val, men objdump kommer vanligtvis med Operativsystemet och kan hantera alla arkitekturer som stöds av GN U binutils superset av de som stöds av GCC och dess produktion kan vanligtvis matas in i GNU eftersom ndisasm s vanligtvis kan matas in i nasm, men naturligtvis. Peter Cordes föreslår att Agner Fog s objconv är väldigt snygg. Det sätter etiketter på grenmål, Gör det mycket lättare att ta reda på vad koden gör Det kan demonteras i NASM, YASM, MASM eller AT T GNU-syntax. Multimediaspelare Mike hittade redan om --just-vma ndisasm motsvarar - o alternativet. För att demontera, Säg sh4-kod Jag använde en binär från Debian för att testa, använd detta med GNU binutils, nästan alla andra disassembler är begränsade till en plattform, till exempel x86 med ndisasm och objconv. - m är maskinen och - EL betyder Little Endian för Sh4eb använd - EB istället vilket är relevant för arkitekturer som existerar i antingen endianness. answered dec 22 15 på 20 48.objdump visar information om en eller flera objektfiler Alternativen styr vilken viss information som ska visas Denna information är mest användbar för programmerare som Är wo Rking på kompileringsverktygen, i motsats till programmerare som bara vill att deras program ska kompilera och work. objfile är objektfilerna som ska granskas När du anger arkiv visar objdump information om varje medlemsobjektfiler. De långa och korta formerna av Alternativ, som visas här som alternativ, motsvarar minst ett alternativ från listan - a, - d, - D, - e, - f, - g, - G, - h, - H, - p, - r, - R, - s, - S, - t, - T, - V, - x måste ges - a - archive-header Om någon av objfile-filerna är arkiv, visa arkivhuvudinformationen i ett format som liknar ls - L Förutom informationen som du kan lista med ar tv, objdump - a visar objektfilformatet för varje arkivmedlem --justjust-vma-offset. När dumpningsinformation läggs till lägger du först till alla avsnittadresser. Det här är användbart om avsnittadresserna inte Motsvarar symboltabellen, vilket kan hända när man lägger sektioner vid särskilda adresser när man använder ett format som inte kan representera avsnittadresser, t. ex. - b bfdname --target bfdname Sp Bekräfta att objektkodformatet för objektfilerna är bfdname Det här alternativet kanske inte är nödvändigt Objdump kan automatiskt identifiera många format. Visar summarisk information från rubrikrubrikerna - h av Fu o som uttryckligen identifieras - m som en VAX-objektfil i Formatet som produceras av Oasys-kompilatörer Du kan lista de format som är tillgängliga med - i-alternativet Se Målval för mer information. - C - Demontera stil Avkodning av demangrecken på lågnivå-symbolnamn i användarnivånamn Förutom att ta bort eventuella initiala understreck som uppstod av systemet , Vilket gör att C-funktionsnamn kan läsas. Olika kompilatorer har olika manglingstyler. Det valfria demanglingstylargumentet kan användas för att välja en lämplig avstängningsstil för kompilatorn. Se c-filt för mer information om demangling - g - debugging. Felsökning av information Detta försöker parsa Felsökningsinformation lagrad i filen och skriva ut den med en C-liknande syntax Endast vissa typer av felsökningsinformation har varit jag Mplemented Några andra typer stöds av readelf - w Se readelf - e - debugging-tags Liksom - g men informationen genereras i ett format som är kompatibelt med ctags verktyg - d - disassemble Visa monteringsmnemoniken för maskininstruktionerna från objfile This Alternativet bara demonterar de sektioner som förväntas innehålla instruktioner - D - disassemble-all Like - d men demontera innehållet i alla sektioner, inte bara de som förväntas innehålla instruktioner - prefix-adresser Vid demontering skriv ut den fullständiga adressen på varje Line Det här är det äldre demonteringsformatet - EB - EL - endian Ange endianiteten för objektfilerna Detta påverkar endast demontering Detta kan vara användbart vid demontering av ett filformat som inte beskriver information om endianitet, t. ex. S-records - f - Filhuvuden Visa sammanfattningsinformation från den övergripande rubriken för varje objfile-fil - filstart-kontext Ange att vid visning av interlistad källkods demontering antar - S från ett fil E som ännu inte har visats, utvidga sammanhanget till början av filen - h - sektionhuvuden - huvudet Visningssammanfattningsinformation från rubrikrubrikerna i objektfilen. Filsegment kan flyttas till icke-standardadresser, till exempel Med hjälp av alternativen - Ttext - Tdata eller - Tbss till ld Men vissa objektfilformat, t. ex. lagra inte startadressen för filsegmenten. I dessa situationer, även om ld flyttar sektionerna korrekt, använder objdump - h för att lista Filrubrikrubriker kan inte visa rätt adresser I stället visar de vanliga adresserna, vilka är implicita för målet - H --hjälp Skriv ut en sammanfattning av alternativen att objdump och exit - i-info Visa en lista som visar alla arkitekturer och objekt Format som är tillgängliga för specifikation med - b eller - m - j namn - sektionsnamn Visa information endast för avsnittnamn - l - linjenumrar Märk displayen med hjälp av felsökningsinformation med filnamn och källnummer som motsvarar objektkoden Eller relocs som visas Endast användbara med - d - D eller - r - m maskin - arkitekturmaskin Ange den arkitektur som ska användas vid demontering av objektfiler Det kan vara användbart när du tar bort objektfiler som inte beskriver arkitekturinformation, till exempel S-poster You Kan lista de tillgängliga arkitekturerna med alternativet - i - alternativen - alternativ för alternativet alternativt alternativ för alternativet alternativt alternativ för disassembler-alternativ Passera inriktad specifik information till disassemblern Endast stöds på vissa mål Om det är nödvändigt att ange mer än ett disassembleralternativ kan flera - M-alternativ användas Eller kan placeras i en kommaseparerad lista. Om målet är en ARM-arkitektur kan den här väljaren användas för att välja vilket registernamn som ska användas under disassembler. Specificera - M reg-names-std standard kommer att välja registret namn som Används i ARMs instruktionsuppsättning, men med register 13 som kallas sp, register 14 kallas lr och register 15 kallas pc. Anger - M reg-names-apcs väljer namnsatsen som används av ARM P Rocedure Call Standard, medan specificering - M reg-names-raw kommer bara att användas r följt av registret nummer. Det finns också två varianter på APCS-register namngivningssystemet aktiverat av - M reg-names-atpcs och - M reg-names - Special-atpcs som använder ARM Thumb Procedure Call Standard namngivningskonventioner antingen med de vanliga registrternamn eller specialregistreringsnamnen. Detta alternativ kan också användas för ARM-arkitekturer för att tvinga demonteraren att tolka alla instruktioner som Thumb-instruktioner genom att använda växeln - - disassembler-options force-thumb Detta kan vara användbart när du försöker demontera tumkod som producerats av andra kompilatorer. För x86 kan några av alternativen duplicera funktionerna i - m-omkopplaren, men tillåter finare kornad kontroll. Flera val från följande kan vara Specificerad som en kommaseparerad sträng x86-64 i386 och i8086 välj demontering för den givna arkitekturen intel och att välja mellan intelsyntaxläge och AT T syntaxläge addr32 addr16 data32 och data16 specific Y standard adressstorlek och operandstorlek Dessa fyra alternativ kommer att överskridas om x86-64 i386 eller i8086 visas senare i alternativsträngen. Slutligen, suffix när det är i AT T-läget instruerar demonteraren att skriva ut ett mnemonic suffix även när suffixet kan vara Härledd av operandörerna. För PPC, booke booke32 och booke64 välj demontering av BookE-instruktionerna 32 och 64 välj PowerPC och PowerPC64-demontering, respektive e300 väljer demontering för e300-familjen. För MIPS styr detta alternativ utskrift av instruktionsmneumoniska namn och registreringsnamn I demonterade instruktioner Flera val från följande kan specificeras som en kommaseparerad sträng och ogiltiga alternativ ignoreras utan alias. Skriv ut råinstruktionen mneumonisk istället för någon pseudoinstruktion mneumonic IE print daddu eller eller istället för flytt, sll istället för nop, Etc gpr-namn ABI Print GPR generella register namn som lämpligt för angiven ABI Som standard väljs GPR namn accordi Ng till binärens ABI är demonterade fpr-namn ABI Print FPR floating-point-registernamn som lämpligt för den angivna ABI Som standard skrivs FPR-nummer i stället för namn cp0-namn ARCH Print CP0-systemstyrning coprocessor coprocessor 0 registreringsnamn som Lämplig för CPU eller arkitektur specificerad av ARCH Som standard väljes CP0-registernamn enligt arkitekturen och CPU för binäret som är demonterat hwr-namn ARCH Print HWR-hårdvararegister, som används av rdhwr-instruktionsnamnen som är lämpliga för CPU eller arkitektur Specificeras av ARCH Som standard väljs HWR-namn enligt arkitekturen och CPU för binäret som är demonterade regnenamn ABI Print GPR och FPR-namn som är lämpliga för de valda ABI-regnen ARCH Print CPU-specifika registernamn CP0-register och HWR Namn som är lämpliga för den valda CPU eller arkitekturen. För något av alternativen som anges ovan kan ABI eller ARCH anges som numeriskt för att få utskrivna nummer r Ater än namn, för de valda typerna av register Du kan lista de tillgängliga värdena för ABI och ARCH med hjälp av --help-alternativet. För VAX kan du ange funktionsadressadresser med - M-inmatning 0xf00ba Du kan använda detta flera gånger för att ordentligt demontera VAX binära filer som inte innehåller symboltabeller som ROM-dumpar. I sådana fall kommer funktionstangenten att avkodas som VAX-instruktioner, vilket förmodligen skulle leda till att resten av funktionen är felaktigt demonterad - p - private-headers Skriv ut information Som är specifik för objektfilformatet Den exakta informationen som skrivs ut beror på objektfilformatet För vissa objektfilformat skrivs ingen extra information - r --reloc Skriv ut flyttningsuppgifterna i filen Om den används med - d eller - D Flyttningar skrivs ut med disassemblen - R - Dynamisk-relok Skriv ut de dynamiska omlokaliseringarna i filen. Det här är endast meningsfullt för dynamiska objekt, till exempel vissa typer av delade bibliotek - fullständigt innehåll Visa hela innehållet i alla begärda sektioner Som standard visas alla icke tomma sektioner - S - källkod Visningskodkod blandad med demontering, om möjligt. Implicerar - d - show-raw-insn Vid demontering av instruktioner, Skriv ut anvisningarna i hex såväl som i symbolisk form. Detta är standard utom när --prefix-adresser används - inte-visa-raw-insn Vid demontering av instruktioner, skriv inte ut instruktionsbyte. Detta är standard när - Prefix-adresser används - W - dwarf Visar innehållet i DWARF-felsökningssektionerna i filen, om det finns några - G - stabs Visa hela innehållet i alla sektioner som begärs Visa innehållet i och och sektionerna från en ELF Fil Det här är bara användbart på system som Solaris 2 0 där felsökningssymboltabellposter förses i en ELF-sektion I de flesta andra filformat interfolieras felsökningssymboltabellposter med kopplingssymboler och är synliga i - symbolerna Utgång För mer information om Stabs symboler, se Stabs - startadressadress Börja visa data vid den angivna adressen Detta påverkar utmatningen av alternativen - d - r och - s - stoppadressadress Stoppa visning av data vid angiven adress Detta påverkar utdata från - d - r och - s alternativen - t - sycken Skriv ut symboltabellposterna i filen Detta liknar informationen som tillhandahålls av nm-programmet - T - dynamic-syms Skriv ut de dynamiska symboltabellposterna i filen This Är bara meningsfullt för dynamiska objekt, som vissa typer av delade bibliotek. Detta liknar informationen som tillhandahålls av nm-programmet när det ges - D-dynamiskt alternativ - speciella-symer När symboler visas är de som målen anses vara Speciellt på något sätt och som normalt inte skulle vara av intresse för användaren - V - version Skriv ut versionsnumret för objdump och exit - x --all-headers Visa all tillgänglig huvudinformation, inklusive symboltabellen och flyttningsuppgifterna Användning - X motsvarar ange Ing alla - a - f - h - p - r - t - w - wide Formatera några rader för utdataenheter som har mer än 80 kolumner. Avkorta inte symbolnamn när de visas - z - disassemble-zeroes Normalt Demonteringsutmatningen kommer att hoppa över block av nollor Det här alternativet leder disassembleren för att demontera dessa block, precis som alla andra data. objdump visar information om en eller flera objektfiler Alternativen styr vilken viss information som ska visas Denna information är mest användbar för programmerare som är Arbetar med kompileringsverktygen, i motsats till programmerare som bara vill att deras program ska kompilera och work. objfile är objektfilerna som ska granskas När du anger arkiv visar objdump information om varje medlemsobjektfiler. De långa och korta formerna av Alternativ, som visas här som alternativ, motsvarar minst ett alternativ från listan - a, - d, - D, - f, - g, - G, - h, - H, - p, - r, - R, - S, - t, - T, - V, - x måste ges.-a - arkiv-header Om någon av objektfilerna är arkiv, visas Arkivhuvudinformationen i ett format som liknar ls - l Förutom informationen du kan lista med ar tv objdump - a visar objektfilformatet för varje arkivmedlem .-- justera-vma-offset Vid dumpningsinformation lägger du först förskjutning till alla Sektionsadresser Det här är användbart om avsnittadresserna inte motsvarar symboltabellen, vilket kan hända när du lägger sektioner vid specifika adresser när du använder ett format som inte kan representera avsnittadresser, till exempel. - b bfdname --target bfdname Ange att Objektkodsformat för objektfilerna är bfdname Det här alternativet kanske inte är nödvändigt objdump kan automatiskt identifiera många format. Visar summarisk information från rubrikrubrikerna - h av fu o som uttryckligen identifieras - m som en VAX-objektfil i det format som produceras Av Oasys kompilatorer Du kan lista de format som är tillgängliga med - i-alternativet Se avsnitt 15 1 Målval för mer information.-C - dangle-stil Stämma demangle lågnivåns symbolnamn i användar-lev El namn Förutom att ta bort eventuella initiala understreck som är uppbyggda av systemet gör det att C-namnen kan läsas. Olika kompilatorer har olika manglingstyler. Det alternativa demanglingsstilargumentet kan användas för att välja en lämplig avtagningsstil för kompilatorn. Se avsnitt 9 c-filt för mer information om Demangling.-G - debugging Information om felsökningsinformation Detta försöker analysera felsökningsinformation som är lagrad i filen och skriva ut den med en C-liknande syntax. Endast vissa typer av felsökningsinformation har implementerats. - d - disassemble Visa assembler-mnemoniken för Maskininstruktioner från objfile Detta alternativ demonterar endast de delar som förväntas innehålla instruktioner. - D - disassemble-all Like - d men demontera innehållet i alla sektioner, inte bara de som förväntas innehålla instruktioner .-- prefix-adresser Vid demontering , Skriv ut den fullständiga adressen på varje rad. Detta är det äldre demonteringsformatet. - Demontera-nollor Vanligtvis disa Sembly-utmatningen kommer att hoppa över block av nollor Det här alternativet riktar demonteraren för att demontera de här blocken, precis som alla andra data.-EB - EL - endian Specificera endianiteten i objektfilerna Detta påverkar endast demontering Detta kan vara användbart när du demonterar ett filformat Som inte beskriver information om endianitet, t. ex. S-records.-f - fil-header Visa sammanfattningsinformation från den övergripande rubriken för varje objfile-filer .-- filstart-kontext Ange att när visning av interlistad källkods demontering antas - S från en fil som ännu inte har visats, utvidga sammanhanget till början av filen. - h --section-header - header Visa sammanfattningsinformation från rubrikrubrikerna i objektfilen. Filsegment kan flyttas till Nonstandard-adresser, till exempel genom att använda alternativen - Ttext - Tdata eller - Tbss till ld Men vissa objektfilformat, t. ex. lagra inte startfilen för filsegmenten. I dessa situationer, även om ld flyttar delarna co Direkt, med hjälp av objdump - h för att lista filrubrikrubrikerna kan inte visa rätt adresser Istället visar den vanliga adresserna, vilka är implicita för målet. Hjälp Skriv ut en sammanfattning av alternativen till objdump och exit.-i - Info Visa en lista som visar alla arkitekturer och objektformat som är tillgängliga för specifikation med - b eller - m.-j namn - sektionsnamn Visa information endast för sektionsnamn. - l-linjenummer Märk displayen med hjälp av felsökningsinformation med filnamnet Och källnummer som motsvarar objektkoden eller de relokaler som visas Endast användbart med - d - D eller - r.-m-maskin - arkitekturmaskin Ange den arkitektur som ska användas vid demontering av objektfiler Det kan vara användbart när du demonterar objektfiler som inte Beskriva arkitekturinformation, till exempel S-poster Du kan lista de tillgängliga arkitekturerna med alternativet - i. - M - alternativ för alternativ för alternativet alternativt alternativ till disassembleren Endast stöds för vissa mål. Om målet Är en ARM-arkitektur så kan denna omkopplare användas för att välja vilket registernamn som används under demonteringen. Ange - M reg-name-std standard kommer att välja registernamnen som används i ARMs instruktionsuppsättning, men med register 13 som kallas sp , Registrera 14 som heter lr och register 15 som kallas pc. Att ange - M reg-names-apcs väljer namnet som används av ARM Procedure Call Standard, medan specificering - M reg-names-raw kommer bara att användas r följt av registret. Det finns också två varianter på APCS-registernamnssystemet som aktiveras av - M reg. namn-atpcs och - M reg-names-special-atpcs som använder ARM Thumb Procedure Call Standard namngivningskonventioner antingen med det normala registret eller specialregistret Namn. Detta alternativ kan också användas för ARM-arkitekturer för att tvinga demonteraren att tolka alla instruktioner som Thumb-instruktioner med hjälp av switch - disassembler-options force thumb. Detta kan vara användbart när man försöker demontera produktkod Ed av andra compilers. For x86, kan några av alternativen dubbla funktioner av - m-omkopplaren, men tillåter finare kornad kontroll Flera val från följande kan anges som en kommaseparerad sträng x86-64 i386 och i8086 välj demontering för den givna Arkitektur intel och att välja mellan intel syntax läge och AT T syntax läge addr32 addr16 data32 och data16 Ange standard adressstorlek och operand storlek Dessa fyra alternativ kommer att överskridas om x86-64 i386 eller i8086 visas senare i alternativsträngen Slutligen, suffix när I AT T-läget instruerar dissassembleren att skriva ut ett mnemonalt suffix även när suffixet kan härledas av operanderna. För PPC, booke booke32 och booke64 välj demontering av BookE-instruktionerna 32 och 64 välj PowerPC och PowerPC64-demontering respektive. - p - - private-headers Skriv ut information som är specifik för objektfilformatet Den exakta informationen som skrivs ut beror på objektfilformatet För vissa objektfilformat, ingen ytterligare Informationen skrivs ut. - r - reloc Skriv ut flyttningsuppgifterna i filen Om den används med - d eller - D skrivs utflyttningarna ihop med demonteringen. - R - dynamisk-relok Skriv ut filerna för dynamiska flyttningsuppgifter i filen. Endast meningsfullt för dynamiska objekt, till exempel vissa typer av delade bibliotek. - s - full-innehåll Visa hela innehållet i alla begärda sektioner. - S - källkod Visningskodkod blandad med demontering, om möjligt. Innehåller - d .-- Show-raw-insn När du demonterar instruktionerna, skriv ut instruktionerna i hex såväl som i symbolisk form. Detta är standard utom när --prefix-adresser används .-- Ej visad-raw-insn Vid demontering av instruktioner, skriv inte ut Instruktion byte Detta är standard när --prefix-adresser används. - G - stabs Visa hela innehållet i alla sektioner som begärts. Visa innehållet i och och sektionerna från en ELF-fil. Det här är bara användbart på system som Solaris 2 0 i vilken debugging symbol-tabell poster bärs I en ELF-sektion I de flesta andra filformat interfolieras felsökningssymbol-tabellposter med kopplingssymboler och är synliga i - syms-utmatningen. Mer information om stabs-symboler finns i avsnittet Stabs-översikt i stabs-felsökningsformatet .-- starta Adressadress Starta visning av data vid den angivna adressen Detta påverkar utmatningen av alternativen - d - r och - s .-- Stop-adressadress Stoppa visning av data vid den angivna adressen Detta påverkar utgången av - d - r och - S-alternativ. - t - symboler Skriv ut symboltabellposterna i filen. Detta liknar informationen som tillhandahålls av nm-programmet. - T - dynamisk-symar Skriv ut filerna med dynamiska symboltabeller i filen. Det här är endast meningsfullt för dynamisk Objekt, till exempel vissa typer av delade bibliotek Det här liknar informationen som tillhandahålls av nm-programmet när det ges - D-dynamiskt alternativ .-- version Skriv ut versionsnummer för objdump och exit.-x --all-header Display All tillgänglig huvudinformation, inklusive symboltabellen och Flyttningsuppgifter Använd - x motsvarar att ange allt - a - f - h - r - t.-w --wide Formatera några rader för utdataenheter med mer än 80 kolumner. Avkorta inte heller symbolnamn när de visas. Objdump visar information om en eller flera objektfiler Alternativen styr vilken viss information som ska visas Denna information är mest användbar för programmörer som arbetar med kompileringsverktygen, i motsats till programmerare som bara vill att deras program ska kompilera och work. objfile är objektet Filer som ska granskas När du anger arkiv visar objdump information om varje medlemsobjektfiler. De långa och korta alternativen, som visas här som alternativ, motsvarar minst ett alternativ från listan - a, - d, - D , - e, - f, - g, - G, - h, - H, - p, - P, - r, - R, - s, - S, - t, - T, - V, - x måste vara Given - a - archive-header Om någon av objfile-filerna är arkiv, visa arkivhuvudinformationen i ett format som liknar ls - l Förutom den information du kan lista med ar tv, ob Jdump - a visar objektfilformatet för varje arkivmedlem --justjust-vma-offset Vid dumpningsinformation lägger du först till alla avsnittets adresser. Detta är användbart om avsnittadresserna inte motsvarar symboltabellen, vilket kan hända när du lägger Sektioner vid särskilda adresser när du använder ett format som inte kan representera avsnittadresser, t. ex. - b bfdname --target bfdname Ange att objektkodformatet för objektfilerna är bfdname Det här alternativet kanske inte är nödvändigt Objdump kan automatiskt identifiera många format. Visar sammanfattande information från sektionsrubrikerna - h av fu o som uttryckligen identifieras - m som en VAX-objektfil i formatet som produceras av Oasys-kompilatörer Du kan lista de format som är tillgängliga med - i-alternativet Se Målval för mer information - C - - demangle-stil Avkodar demangle-lågnivåns symbolnamn i användarnivånamn Förutom att ta bort eventuella initiala understreck som upptas av systemet, gör detta C-namnen läsbara Olika compi Lers har olika mangling stilar Det alternativa argumentet för demangling stil kan användas för att välja en lämplig demanglingstil för din kompilator. Se c filt för mer information om demangling - g - debugging Information om felsökning. Detta försöker analysera information om STABS och IEEE-felsökningsformat som lagras i Filen och skriv ut den med en C-liknande syntax Om inget av dessa format hittas faller detta alternativ tillbaka på alternativet - W för att skriva ut någon DWARF-information i filen - e - debugging-taggar som - g men informationen genereras I ett format som är kompatibelt med ctags-verktyget - d - disassemble Visa monteringskonfigurationen för maskininstruktionerna från objfile Detta alternativ demonterar endast de delar som förväntas innehålla instruktioner - D - disassemble-all Like - d men demontera innehållet i alla Sektioner, inte bara de som förväntas innehålla instruktioner. Detta alternativ har också en subtil effekt på demonteringen av instruktioner i kodavsnitt. När alternativet - d är i effe Ct objdump antar att alla symboler som finns i en kodavsnitt inträffar på gränsen mellan instruktionerna och det kommer att vägra att demonteras över en sådan gräns. När alternativet - D är i praktiken är dock detta antagande undertryckt. Det betyder att det är möjligt för utgången av - d och - D för att skilja sig om exempelvis data lagras i kodavsnitt. Om målet är en ARM-arkitektur har denna omkopplare också att tvinga demonteraren att avkoda bitar av data som finns i kodavsnitt som om de var instruktioner --prefix-adresser Vid demontering, skriv ut den fullständiga adressen på varje rad. Detta är det äldre demonteringsformatet - EB - EL - endian Ange endianiteten för objektfilerna. Det här påverkar endast demontering. Detta kan vara användbart när du demonterar ett filformat som gör Beskriv inte information om endianitet, till exempel S-poster - f - file-headers Visa sammanfattningsinformation från den övergripande rubriken för varje objfile - filer - F - file-offsets Vid demontering av avsnitt, wheneve Ra-symbolen visas också, visa filförskjutningen i den region av data som ska dumpas Om nollor överhoppas, då när demontering återupptas berättar användaren hur många nollor som hoppades över och filen offset av platsen varifrån Demonteringen återupptas När dumpningssektionerna visas, visar filförskjutningen av den plats där dumpningen startar - filstart-kontext Ange att när visning av interlistad källkods demontering antar - S från en fil som ännu inte har visats, förlänga kontexten till Starten av filen - h - sektionhuvuden - headers Visa sammanfattningsinformation från rubrikrubrikerna i objektfilen. Filsegment kan flyttas till icke-standardadresser, till exempel genom att använda - Ttext - Tdata eller - Tbss-alternativen till Ld Några objektfilformat, till exempel, lagrar inte filsegmentets startadress. I dessa situationer, även om ld flyttar sektionerna korrekt, använder objdump - h för att lista filens rubrikhuvuden kan inte sho W de rätta adresserna Istället visar den de vanliga adresserna, som är implicita för målet. Notera, i vissa fall är det möjligt för en sektion att ha både READONLY och NOREAD-attributen. I sådana fall har NOREAD-attributet företräde, men Objdump kommer att rapportera båda eftersom den exakta inställningen av flaggbitarna kan vara viktig - H --hjälp Skriv ut en sammanfattning av alternativen till objdump och exit - i - info Visa en lista som visar alla arkitekturer och objektformat som är tillgängliga för specifikation med - b Eller - m - j-namn - sektionsnamn Visa information endast för avsnittnamn - l - linjenummer Märk displayen med hjälp av felsökningsinformation med filnamn och källnummer som motsvarar objektkoden eller relokalerna som visas. Endast användbart med - d - D eller - r - m-maskin - arkitekturmaskin Ange den arkitektur som ska användas vid demontering av objektfiler Det kan vara användbart när du demonterar objektfiler som inte beskriver arkitekturinformation, till exempel S-poster Du kan lista av Ailable arkitekturer med - i-alternativet. Om målet är en ARM-arkitektur så har denna omkopplare en ytterligare effekt. Det begränsar demonteringen till endast de instruktioner som stöds av den arkitektur som anges av maskinen. Om det är nödvändigt att använda den här omkopplaren eftersom inmatningsfilen Inte innehåller någon arkitekturinformation, men det är också önskvärt att demontera alla instruktioner. Använd - Marm - M Alternativ - Alternativ för alternativ för Disassembler-alternativ. Passera specifik specifik information till demonteraren. Endast stöds på vissa mål. Om det är nödvändigt att ange mer än en demonteringsenhet Alternativet kan flera - M-alternativ användas eller kan placeras i en kommaseparerad lista. För ARC kontrollerar dsp utskrift av DSP-instruktioner, spfp väljer utskrift av FPX-enstaka FP-instruktioner, dpfp väljer utskrift av FPX dubbel precision FP instruktioner, quarkseem väljer utskrift av speciella QuarkSE-EM instruktioner, fpuda väljer utskrift av dubbel precision assist inst Rupturer väljer fpus utskrift av FPU-enstaka FP-instruktioner medan fpud väljer utskrift av FPU-siffra precision FP-instruktioner. Om målet är en ARM-arkitektur kan den här väljaren användas för att välja vilket registernamn som används under demonteringen. Specificera - M reg. namn-std standard kommer att välja registret namn som används i ARM s instruktionsuppsättning dokumentation, men med register 13 kallas sp, register 14 kallas lr och register 15 kallas pc Anger - M reg-namn-apcs väljer namnet Set som används av ARM Procedure Call Standard, medan specificering - M reg-names-raw kommer bara att användas r följt av registret nummer. Det finns också två varianter på APCS-register namngivningssystemet aktiverat av - M reg-names-atpcs och - M regnenamn-special-atpcs som använder ARM Thumb Procedure Call Standard namngivningskonventionerna antingen med de vanliga registrternamn eller specialregistreringsnamnen. Detta alternativ kan även användas för ARM-arkitekturer för att tvinga demonteraren att interp Rätta alla instruktioner som Thumb-instruktioner med hjälp av switchen --disassembler-options force-thumb Det här kan vara användbart när du försöker demontera tumkod som producerats av andra kompilatorer. För x86 kan några av alternativen duplicera funktionerna för - m-omkopplaren, men Tillåta finare kornad kontroll Flera val från följande kan anges som en kommaseparerad sträng x86-64 i386 i8086 Välj demontering för den givna arkitekturen intel att Välj mellan intelsyntaxläge och AT T syntaxläge amd64 intel64 Välj mellan AMD64 ISA och 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.
Comments
Post a Comment