Hex editörü

Bir hex düzenleyici [hex editör] (veya ikili dosya düzenleyici veya bayt düzenleyici), bir bilgisayar dosyası oluşturan temel ikili verilerinin değiştirilmesine izin veren bir bilgisayar programıdır. 'Hex' adı, ikili verileri temsil etmek için standart bir sayısal format olan 'hexadecimal'dan gelir. Tipik bir bilgisayar dosyası, içeriği dosyayı oluşturmak için birleştirilen depolama ortamında birden fazla alan kaplar. Floppy veya sabit disklerin fiziksel bölümlerindeki disk sektörü verilerini ayrıştırmak ve düzenlemek için tasarlanmış hex düzenleyiciler, bazen sektör düzenleyicileri veya disk düzenleyicileri olarak da adlandırılır.Bir hex düzenleyici ile kullanıcı, diğer üst düzey uygulama yazılımının dosya biçimi ile ilişkilendirebileceği aynı içeriğin yorumlanmasının aksine, bir dosyanın ham ve tam içeriğini görebilir veya düzenleyebilir. Örneğin, görüntü düzenleme yazılımının aynı dosyayı yorumlama ve gösterme şeklinin aksine, bu ham görüntü verileri olabilir.Hex düzenleyiciler, düzeltmeleri yapmak için özel bir program yazmanın faydalı olmayabileceği sistem veya uygulama programı sorunları nedeniyle veri bozulmasını düzeltmek için kullanılabilir. Hatalı verilerin düzeltilmesini engelleyebilecek uygulama düzenleme kontrollerini atlamak için kullanışlıdırlar. Yeniden derlemeye alternatif olarak birkaç talimatı değiştirmek veya eklemek için yürütülebilir programları "yamamak (patchlemek)" için kullanılmışlardır. IBM mainframe sistemleri için program düzeltmeleri bazen etkilenen programın tam bir kopyasını dağıtmak yerine yama olarak dağıtılır.Çoğu hex düzenleyici uygulamasında, bilgisayar dosyasının verisi 4 baytlık 4 grup (veya 8 baytlık iki grup) halinde gruplandırılmış onaltılık değerler ve ardından her bir onaltılık değer çiftine (her bir bayt) karşılık gelen 16 yazdırılabilir ASCII karakterden oluşan bir grup olarak gösterilir. Yazdırılamayan ASCII karakterleri (örneğin, Bell) ve birden fazla karakter alanı kaplayan karakterler (örneğin, TAB) genellikle aşağıdaki ASCII alanında bir nokta (".") ile temsil edilir.Geleneksel metin editörlerinin aksine, Hex editörleri belirsiz boyutlardaki dosyaları verimli bir şekilde işleyebilir, çünkü dosyaya göz atarken dosyanın tamamı yerine yalnızca bir kısmı yüklenir ve kaydedilirken değiştirilir.Bilgisayarların icadından ve farklı kullanımlarından bu yana, çeşitli dosya formatları oluşturulmuştur. Bazı özel durumlarda, verilere bir dizi ham rakam olarak erişebilmek uygun olmuştur. SUPERZAP (AMASPZAP) adlı bir program IBM OS/360 sistemleri için ham disk kayıtlarını düzenleyebilen ve çalıştırılabilir dosyaların biçimini de anlayabilen bir programdı. hexadecimal rakam çiftleri (her çift bir baytı temsil edebilir) mevcut standarttır, çünkü günümüzde kullanılan makinelerin ve dosya formatlarının büyük çoğunluğu verileri 8 bitlik bayt birimleri veya grupları halinde işler. Onaltılı (Heksadesimal) ve ayrıca sekizli (oktal) yaygındır çünkü bu rakamlar bir bayttaki hangi bitlerin ayarlandığını görmeyi sağlar. Günümüzde, onaltılık yerine ondalık gösterim, daha tanıdık sayı tabanı ve şablon sistemleri ve veri denetçileri gibi onaltılık sayısal formatın faydalarını azaltan ek yardımcı araçlar nedeniyle popüler bir ikinci seçenek haline gelmektedir.Bazı hex editörleri, bir ikili dosya'nın bayt dizisini yapılandırılmış bir şekilde sunabilen ve istenen dosya biçiminin bir kısmını veya tamamını kapsayan bir şablon sistemi sunar. Genellikle bir şablon için GUI ana hex düzenleyicinin yanında ayrı bir araç penceresidir. Bazı Cheat Engine sistemleri sadece böyle bir şablon GUI'sinden oluşur.Genellikle bir şablon, etiketli metin kutularının bir listesi olarak temsil edilir, böylece bir dosyanın tek tek değerleri uygun biçimde (örneğin, dize, renk veya ondalık sayı olarak) kolayca düzenlenebilir. Şablon desteği olmadan, değiştirilecek değerin depolandığı bir dosyada doğru ofseti bulmak gerekir. Ayrıca, ham onaltılık düzenleme, onaltılıktan ondalık sayıya dönüştürme, bayt sırası için değiştirme veya diğer veri türü dönüştürme özelliklerini gerektirebilir.Şablonlar dosya olarak saklanabilir, böylece kullanıcılar tarafından değiştirilebilir ve genellikle üreticinin web sitesi üzerinden herkese açık olarak paylaşılır. Tüm hex editörleri olmasa da çoğu kendi şablon dosya formatını tanımlar; bir standardı destekleme eğilimi veya hatta doğadaki çeşitli formatlar arasında uyumluluk yoktur.Gelişmiş hex editörleri, kullanıcının ortak görevleri otomatikleştirmek için bir dizi kullanıcı arayüzü komutu olarak makro benzeri işlevsellik oluşturmasına olanak tanıyan komut dosyası sistemlerine sahiptir. Bu, dosyaları otomatik olarak yamalayan komut dosyaları sağlamak (örneğin, oyun hilesi, modlama veya topluluk tarafından sağlanan ürün düzeltmeleri) veya daha karmaşık / akıllı şablonlar yazmak için kullanılabilir.Betik dilleri, genellikle MS-DOS toplu iş dosyalarına benzeyen ürüne özel dillerden Lua veya Python gibi tam teşekküllü betik dillerini destekleyen sistemlere kadar geniş bir yelpazede değişiklik gösterir.Birkaç seçkin editör, GUI'yi genişletmeye ve genellikle C uyumlu bir dilde yazılmış dinamik bağlantı kitaplıklarını yükleyerek yeni işlevler eklemeye olanak tanıyan bir plugin sistemine sahiptir.