Hex editor
En hex- editor ( eng. hex-editor ), en hexadecimal editor är en applikation för att redigera data där data presenteras i en " rå form " - som en sekvens av bytes . Det kan antingen vara en fristående applikation eller en komponent i en annan, mer komplex applikation, såsom en disassembler , debugger , integrerad utvecklingsmiljö , etc.
För att representera värdet på bytes används ett hexadecimalt ( eng. hex adecimal ) talsystem , vilket återspeglas i editorns titel. Valet av det hexadecimala talsystemet beror på följande faktorer:
Faktorer
- Plattformar med 8-bitars byte är de mest populära . I sådana plattformar kan en byte ta 2 8 =256 värden i intervallet från 0 till 255. Siffran 256 10 skrivet i hexadecimal är ett runt tresiffrigt tal - 100 16 .
- Det faktum att detta nummer är tresiffrigt betyder att det inte krävs mer än två siffror för att representera ett tal i intervallet 0-255 .
- Det faktum att det här talet är runt betyder att alla möjliga kombinationer av tal kommer att användas för representation, och det kommer inte att finnas några oanvända (till exempel i fallet med användning av decimalsystemet förblir kombinationer som motsvarar tal från 256 till 999 oanvända ).
- När du använder det hexadecimala systemet visar det sig att den högra siffran motsvarar de nedre fyra bitarna i byten, och den vänstra siffran i posten motsvarar de övre 4 bitarna. Därför kan alla operationer på 4-bitars block inriktade på en bytegräns förenklas som operationer på motsvarande siffror.
- 16 - den lägsta basen för nummersystemet, där två siffror räcker för inspelning. System med en mindre bas skulle kräva redan tre (eller fler) siffror, och endast nummersystemet med bas 256 skulle ge möjligheten att passa in i en siffra, vilket är helt otillämpligt i praktiken på grund av det stora antalet siffror i den.
Uppenbarligen, till exempel, för plattformar med en 9-bitars byte, skulle tresiffriga
oktala tal användas, och en applikation liknande funktionalitet skulle kallas en Oct-editor.
De data som Hex-redigeraren visar och tillåter redigering kan vara:
Gränssnitt
Hexeditorn visar data som en matris , vars varje cell motsvarar en byte , skriven i hexadecimal notation som ett tvåsiffrigt tal (med en inledande nolla om så krävs). Antalet matriskolumner är en potens av två, oftast 16 eller 8 kolumner, ibland 4. Antalet rader beror på antalet byte som ska visas/redigeras. I fallet med 16 kolumner motsvarar en rad ett stycke .
Dessutom används ofta ytterligare element:
- Till vänster om matrisen visas en linjal (visad i blått i figuren) med siffror: varje rad motsvarar ett nummer som indikerar adressen / offset för den första byten på denna rad. Adresssteget är lika med antalet kolumner.
- Ovanför matrisen visas en annan rad (visad i grönt i figuren) med siffror: ovanför varje kolumn visas förskjutningen av byten i denna kolumn relativt den första byten på motsvarande rad. Summan av talet som motsvarar iden -th raden och numret som motsvarar den j-th kolumnen är adressen/offset för byten (i;j)i skärningspunkten mellan den givna raden och den tagna kolumnen.
- Till höger om matrisen kan samma data visas, men i en annan tolkning. Den vanligaste alternativa visningen av data som ASCII -text (visas i fuchsia i figuren ), med bytes vars värden motsvarar icke-utskrivbara tecken visas som punkter ( ·). Många redigerare låter dig välja en godtycklig kodning för textvisningsläget. Varianten med att visa data som text finns i allmänna Hex-redigerare. I redigerare som är en del av ett speciellt program, till exempel en debugger, är andra lägen vanligtvis tillgängliga, såsom demonteringslistning, adresstips och andra programspecifika lägen.
De flesta redigerare låter dig redigera både i den vänstra halvan och i den högra (om tillgängligt). I detta fall är ändringarna som görs konsekventa [1] .
Enkla redigerare låter dig bara ändra värdet på valda bytes individuellt. Avancerat - redigera samlingar av bytes som solida block [2] , sök efter sekvenser eller sekvensmönster.
Hex-redigerare för redigering av diskbilder kan innehålla funktioner för att återställa ett skadat filsystem eller oavsiktligt raderade filer.
Användning
Hex-redigerare används för att redigera icke-textdata när ett specialiserat program för att redigera befintliga data antingen inte är tillgängligt, eller så är användningen omotiverad eller oönskad. Ett exempel skulle vara att göra ändringar i ett kompilerat program utan att omkompilera det. Så, med hjälp av en Hex-redigerare, kan du ändra värdena för sträng- och numeriska konstanter som är inkopplade i programkoden, om du bestämmer deras plats korrekt.
Om Hex-redigeraren har funktionerna som en disassembler, eller målprogrammet redan har demonterats med ett annat verktyg i förväg, och offseten är känd, kan du göra en ändring direkt i programkoden och ändra dess beteende. Detta används för buggfixning , hacking , fusk , manuell justering .
Eftersom Hex-redigeraren är ett ganska mångsidigt verktyg är det inte möjligt att beskriva alla alternativ för dess användning.
Galleri
-
Den kostnadsfria hex-redigeraren KHexEdit ingår i KDE (kdeutils)
-
Visa PSP i ett verktyg som debugingår i 32-bitars Windows .
-
Hexredigerare inkluderad i OllyDbg debugger med en öppen redigeringsdialog
för byteblock .
Se även
- Jämförelse av funktionaliteten hos olika hex-redigerare (sv)
- winhex
- DMDE
Anteckningar
- ↑ Det vill säga ändringar som görs på vänster sida reflekteras omedelbart på höger sida och vice versa.
- ↑ Redigera till exempel 8 byte som ett flyttaltal med dubbel precision .