Hexadecimální editor
Hex-editor ( anglicky hex-editor ), hexadecimální editor je aplikace pro editaci dat, ve které jsou data prezentována v " nezpracované formě " - jako sekvence bajtů . Může to být buď samostatná aplikace, nebo součást jiné, složitější aplikace, jako je disassembler , debugger , IDE atd.
Pro vyjádření hodnoty bajtů se používá hexadecimální ( anglicky hex adecimal ) číselný systém , který se odráží v názvu editoru. Volba hexadecimálního číselného systému je způsobena následujícími faktory:
Faktory
- Nejoblíbenější jsou platformy s 8bitovými bajty . V takových platformách může bajt nabývat 2 8 = 256 hodnot v rozsahu od 0 do 255. Číslo 256 10 zapsané v šestnáctkové soustavě je kulaté třímístné číslo - 100 16 .
- Skutečnost, že toto číslo je třímístné, znamená, že k vyjádření libovolného čísla v rozsahu 0-255 nejsou zapotřebí více než 2 číslice .
- Skutečnost, že toto číslo je kulaté, znamená, že pro reprezentaci budou použity všechny možné kombinace čísel a nebudou žádné nevyužité (např. v případě použití desítkové soustavy zůstanou nevyužity kombinace odpovídající číslům od 256 do 999 ).
- Při použití hexadecimální soustavy se ukazuje, že pravá číslice odpovídá spodním čtyřem bitům bajtu a levá číslice v záznamu odpovídá horním 4 bitům. Proto lze jakékoli operace na 4bitových blocích zarovnaných na hranici bajtů zjednodušit jako operace s odpovídajícími číslicemi.
- 16 - minimální základ číselné soustavy, ve kterém pro záznam stačí dvě číslice. Systémy s menším základem by vyžadovaly již tři (nebo více) číslic a pouze číselná soustava se základem 256 by poskytovala možnost vejít se do jedné číslice, což je v praxi zcela nepoužitelné vzhledem k velkému počtu číslic v ní.
Je zřejmé, že například pro platformy s 9bitovým byte by se použila třímístná
osmičková čísla a aplikace s podobnou funkčností by se nazývala editor Oct.
Data, která Hex editor zobrazuje a umožňuje úpravy, mohou být:
Rozhraní
Hexadecimální editor zobrazuje data jako matici , jejíž každá buňka odpovídá jednomu bytu , zapsaném v hexadecimálním zápisu jako dvoumístné číslo (v případě potřeby s nulou na začátku). Počet sloupců matice je mocninou dvou, nejčastěji 16 nebo 8 sloupců, někdy 4. Počet řádků závisí na počtu bajtů k zobrazení/úpravě. V případě 16 sloupců odpovídá jeden řádek jednomu odstavci .
Kromě toho se často používají další prvky:
- Vlevo od matice je zobrazeno pravítko (na obrázku znázorněno modře) čísel: každý řádek odpovídá číslu, které označuje adresu / offset prvního bajtu tohoto řádku. Krok adresy se rovná počtu sloupců.
- Nad maticí je zobrazen další řádek (na obrázku znázorněn zeleně) čísel: nad každým sloupcem je zobrazen posun bajtu v tomto sloupci vzhledem k prvnímu bajtu odpovídajícího řádku. Součet čísla odpovídajícímu i-tému řádku a čísla odpovídajícímu j-tému sloupci je adresa/offset bajtu (i;j)na průsečíku daného řádku a převzatého sloupce.
- Napravo od matice lze zobrazit stejná data, ale v jiné interpretaci. Nejčastěji používané alternativní zobrazení dat jako text ASCII (na obrázku je znázorněno fuchsiovou barvou ), přičemž bajty, jejichž hodnoty odpovídají netisknutelným znakům, jsou zobrazeny jako tečky ( ·). Mnoho editorů umožňuje zvolit libovolné kódování pro režim zobrazení textu. Varianta se zobrazením dat jako text se nachází v univerzálních Hex editorech. V editorech, které jsou součástí speciálního programu, jako je debugger, jsou obvykle k dispozici další režimy, jako je výpis ze strojového překladu, nápověda k adrese a další režimy specifické pro aplikaci.
Většina editorů umožňuje úpravy jak v levé polovině, tak v pravé (pokud je k dispozici). V tomto případě jsou prováděné změny koherentní [1] .
Jednoduché editory umožňují pouze jednotlivě měnit hodnotu vybraných bajtů. Pokročilé - editace kolekcí bajtů jako pevných bloků [2] , vyhledávání podle sekvencí nebo sekvenčních vzorů.
Hexadecimální editory pro úpravu obrazů disku mohou obsahovat funkce pro obnovu poškozeného systému souborů nebo náhodně smazaných souborů.
Použití
Hexové editory se používají k úpravám netextových dat, kdy specializovaný program pro úpravu existujících dat buď není k dispozici, nebo je jeho použití neopodstatněné či nežádoucí. Příkladem může být provádění změn v kompilovaném programu bez jeho opětovné kompilace. Takže s pomocí Hex editoru můžete změnit hodnoty řetězcových a číselných konstant pevně zapojených do programového kódu, pokud správně určíte jejich umístění.
Pokud má Hex editor funkce disassembleru nebo byl cílový program již předem rozebrán jiným nástrojem a offset je znám, můžete provést změnu přímo v kódu programu a změnit jeho chování. To se používá pro opravu chyb , hackování , podvádění , ruční ladění .
Vzhledem k tomu, že Hex editor je poměrně univerzální nástroj, není možné popsat všechny možnosti jeho použití.
Galerie
-
Bezplatný hex editor KHexEdit, který je součástí KDE (kdeutils)
-
Zobrazte PSP v nástroji, který je debugsoučástí 32bitového systému Windows .
-
Hexagramový editor zahrnutý v debuggeru OllyDbg s otevřeným dialogem pro editaci bajtového bloku
.
Viz také
- Porovnání funkčnosti různých hex editorů (cs)
- winhex
- DMDE
Poznámky
- ↑ To znamená, že změny provedené na levé straně se okamžitě projeví na pravé straně a naopak.
- ↑ Například upravte 8 bajtů jako číslo s plovoucí desetinnou čárkou s dvojitou přesností .