İkili dosya formatlarını tersine çevirmeye yardımcı olan araçlar


82

Bilinmeyen ikili veri formatlarının kodunun çözülmesine yardımcı olacak hangi araçlar mevcuttur?

Hex Workshop ve 010 Editor'ün her ikisinin de yapıları desteklediğini biliyorum. Bunlar, bilinen bir sabit format için sınırlı bir ölçüde uygundur, ancak özellikle bilinmeyen formatlar için, daha karmaşık herhangi bir şeyde kullanımı zorlaşır. Sanırım bir betik dili veya betiklenebilir GUI aracı için bir modüle bakıyorum.

Örneğin, sınırlı bilinen bilgilerden, belki de sihirli bir sayıdan oluşan bir veri bloğu içinde bir yapı bulabilmek istiyorum. Bir yapı bulduğumda, diğer yapıları bulmak için bilinen uzunluk ve ofset kelimeleri takip edin. Sonra bunu mantıklı olduğu yerde yinelemeli ve yinelemeli olarak tekrarlayın.

Rüyalarımda, belki de sisteme daha önce söylediklerime dayanarak olası ofsetleri ve uzunlukları otomatik olarak tanımlayın!


1
Sorunuza doğrudan bir cevap değil: Bilinmeyen biçimlerdeki bu ikili dosyalarla çalışan yürütülebilir dosyalarınız yok mu? Tersine mühendislik yapmak için OllyDbg gibi bir ring3 hata ayıklayıcı kullanmak, bunun yerine kaba kuvvet dosya formatlarını denemekten çok daha kolay olacaktır.
Daniel Sloof

Oh evet, "hangi programı yazmak
istediniz

Bazı durumlarda, onları bir ölçüde işleyen çalıştırılabilir dosyalarım var. Bazen dosyalar çalıştırılabilir kodlardır (ancak standart bir formatta değildir) ve kendi kod çözme rutinlerini de içerebilirler. Başlangıç ​​noktası olarak sınırlı sayıda kısmi belge parçasına sahip olabiliriz. Diğer durumlarda hiçbir şeyim yok.
Mat

Yanıtlar:


22

İşte akla gelen bazı ipuçları:

Deneyimlerime göre, etkileşimli komut dosyası dilleri (Python kullanıyorum) çok yardımcı olabilir. İkili akışlar ve bazı basit algoritmalarla başa çıkmak için basit bir çerçeve yazabilirsiniz. Ardından, ikili dosyanızı alacak ve çeşitli şeyleri kontrol edecek komut dosyaları yazabilirsiniz. Örneğin:

Çeşitli parçalar üzerinde bazı istatistiksel analizler yapın. Örneğin rastgele veriler size bu parçanın muhtemelen sıkıştırılmış / şifrelenmiş olduğunu söyleyecektir. Sıfırlar, parçalar arasında dolgu anlamına gelebilir. Dağınık sıfırlar, tamsayı değerleri veya Unicode dizeleri vb. Anlamına gelebilir. Çeşitli ofsetleri tespit etmeye çalışın. İkilinin parçalarını 2 veya 4 baytlık tam sayılara veya kayan sayılara dönüştürmeye çalışın, yazdırın ve mantıklı olup olmadıklarına bakın. Verilerdeki yinelenen veya çok benzer kısımları arayacak bazı işlevler yazın, bu şekilde başlıkları kolayca tespit edebilirsiniz.

Mümkün olduğunca çok dize bulmaya çalışın, farklı kodlamaları deneyin (c dizeleri, pascal dizeleri, utf8 / 16, vb.). Bunun için bazı iyi araçlar var (Hex Workshop'ta böyle bir araç olduğunu düşünüyorum). Dizeler size çok şey anlatabilir.

İyi şanslar!


Aşağıdaki cevaptan hachoir tam olarak bu tür bir çerçevedir. Önceden tanımlanmış alanlarla birlikte gelir: farklı türden dizeler, tarihler, bitler, kayan değerler, dolgu vb. Yerleşik ayrıştırıcılar belgeler ile birlikte örnek olarak kullanılabilir.
roolebo

15

Mac OS X için, iBored'ımdan bile daha iyi olan yeni ve harika bir araç var: Synaliyze It! ( http://www.synalysis.net/ )

İBored ile karşılaştırıldığında , engellenmemiş dosyalar için daha uygundur ve aynı zamanda komut dosyası kullanılabilirliği dahil (Lua ile) yapılar üzerinde tam kontrol sağlar. Ve yapıları da daha iyi görselleştirir.


10

Tupni ; Bildiğim kadarıyla Microsoft Research'ten doğrudan temin edilemiyor, ancak bu araçla ilgili benzer bir program yazmak isteyen birinin ilgisini çekebilecek bir makale var (belki açık kaynak):

Tupni: Giriş Formatlarının Otomatik Tersine Mühendislik ( @ ACM dijital kitaplığı )

Öz

Son çalışmalar, protokol veya dosya formatı spesifikasyonlarının otomatik tersine mühendisliğinin önemini ortaya koymuştur. Ancak, önceki araçlar tarafından tersine mühendislik uygulanan formatlar, güvenlik uygulamaları için kritik olan önemli bilgileri gözden kaçırdı. Bu yazıda, kayıt dizileri, kayıt türleri ve girdi kısıtlamaları dahil olmak üzere zengin bir bilgi kümesine sahip bir girdi biçimini tersine çevirebilen bir araç olan Tupni'yi sunuyoruz. Tupni, format belirtimini birden çok girdi üzerinde genelleştirebilir. Bir Tupni prototipini uyguladık ve 10 farklı formatta değerlendirdik: beş dosya formatı (WMF, BMP, JPG, PNG ve TIF) ve beş ağ protokolü (DNS, RPC, TFTP, HTTP ve FTP). Tupni, test girişlerindeki tüm kayıt dizilerini belirledi. Ayrıca, birden çok WMF dosyasını bir araya getirerek, Tupni, WMF için daha eksiksiz bir format spesifikasyonu türetebilir. Ayrıca, önceki tersine mühendislik araçlarıyla mümkün olmayan sıfırıncı güvenlik açığı imza oluşturma için sağladığı zengin bilgileri kullanarak Tupni'nin faydasını da gösteriyoruz.



8

Kısa bir süre önce yayınladığım kendi aracım "iBored" bunun bir kısmını yapabilir. Dosya sistemi formatlarını (UDF, HFS, ISO9660, FAT vb.) Görselleştirmek ve hata ayıklamak için aracı yazdım ve arama, kopyalama ve hatta yapı ve şablon desteğini uyguladım. Yapı desteği oldukça basittir ve şablonlar yapıları dinamik olarak tanımlamanın bir yoludur.

Her şey bir Visual BASIC lehçesinde programlanabilir ve değerleri test etmenize, belirli blokları okumanıza ve hepsini okumanıza izin verir.

Araç ücretsizdir, tüm platformlarda çalışır (Win, Mac, Linux), ancak bunu paylaşmak için kamuoyuna yayınladığım kişisel bir araç olduğu için çok fazla belgelenmemiş.

Ancak, denemek ve geri bildirimde bulunmak istiyorsanız, daha kullanışlı özellikler ekleyebilirim.

Hatta onu açık kaynak kodlu bir şekilde açardım , ancak REALbasic'te yazıldığı gibi , birçok insanın böyle bir projeye katılacağından şüpheliyim.

Bağlantı: iBored ana sayfası


2
Katılmak için harika bir proje gibi görünüyor ... Bir antivirüs araştırmacısı olarak çalışırken, bu gerçekten kullanışlı olurdu. Bunun yerine, elimle yaptım ... İndirip kontrol edeceğim. Bunun için teşekkürler, bunun için bir kullanımım var. :)
LarryF

Güzel bir ikili dosya analiz aracının başlangıcı gibi görünüyor, ancak yine de çok disk merkezlidir (512 baytlık bloklar biraz
Steve Bennett

@SteveBennett: Dosyayı eşit büyüklükte bloklar halinde kümelemeyi sever, bu doğru, ancak blok boyutu menü aracılığıyla kolayca değiştirilebilir. Ve iBored, tüm dosyayı tek bir blok olarak da işleyebilir. Tek dezavantajı, tüm verileri tek bir kaydırılabilir blok görünümünde göstermeye çalıştığı için büyük dosyalarla sorun yaşayacak olmasıdır, bu da performans sorunlarına yol açabilir.
Thomas Tempelmann

6

Hala ara sıra AX, Advanced Hex Editor adlı eski bir hex editörü kullanıyorum. Görünüşe göre şu anda İnternet'ten büyük ölçüde kayboldu, ancak Google yine de sizin için bulabilir. Bildiğim son sürüm 3.4 sürümüydü, ancak gerçekten yalnızca kişisel kullanım için ücretsiz 2.1 sürümünü kullandım.

En ilginç özelliği ve çeşitli oyun ve grafik formatlarını deşifre etmek için en çok kullandığım özellik, grafik görüntüleme modu. Bu temelde size her baytın renk kodlu bir piksele dönüştürüldüğü dosyayı gösterir. Ve kulağa bu kadar basit gelse de, tersine mühendislik girişimlerimi zaman zaman çok daha kolay hale getirdi.

Sanırım bunu gözle yapmak otomatik analiz yapmanın tam tersi ve grafik modu ofsetleri bulmak ve takip etmek için pek bir işe yaramayacak ...

Sonraki sürüm, ihtiyaçlarınızı karşılayabilecek gibi görünen bazı özelliklere sahiptir (komut dosyaları, düzenlilik bulucu, dilbilgisi oluşturucu), ancak ne kadar iyi oldukları hakkında hiçbir fikrim yok.


URL öldü, belki şimdi burada: advanced-hex-editor-axe.en.softonic.com
Steve Bennett

@Steve Uyarılar için teşekkürler. İşte bu. Oradaki tüm virüssüz vaatlere rağmen, virüs tarayıcım onu ​​indirmeye çalışırken bana bir virüs uyarısı verdi, bu yüzden zahmet etmedim. Cevabımı yeniden ifade ettim.
mercator

6

Herhangi bir ikili formatı alanlara ayrıştırmak için bir Python kütüphanesi olan Hachoir var ve ardından alanlara göz atın. Yaygın biçimler için çok sayıda ayrıştırıcıya sahiptir, ancak dosyalarınız için kendi ayrıştırıcıları da yazabilirsiniz (örneğin, ikili dosyaları okuyan veya yazan kodla çalışırken, hata ayıklama yardımına sahip olmak için genellikle önce bir Hachoir ayrıştırıcısı yazarım). Görünüşe göre proje şimdiye kadar pasif durumda.


(Bağlantı bozuk)
jacobq


0

Benzer bir soruya verdiğim cevabın bir kısmını yapıştırın:

Araçlardan biri , araç motoru yönetimi bilgisayar ikili görüntülerini (çoğunlukla arama tablolarındaki sayısal veriler) yorumlamak ve düzenlemek için tasarlanmış WinOLS'tur . Çeşitli endian formatlarını (PDP değil, sanırım) ve verileri çeşitli genişliklerde ve ofsetlerde görüntülemeyi, dizi alanlarını (haritaları) tanımlamayı ve bunları her türlü ölçekleme ve ofset seçeneğiyle 2D veya 3D olarak görselleştirmeyi destekler. Ayrıca, sizin için çalışabilecek sezgisel / istatistiksel bir otomatik harita bulucuya sahiptir.

Bu ticari bir araçtır, ancak ücretsiz demo her şeyi yapmanıza izin verir, ancak değişiklikleri ikili dosyada kaydeder ve ihtiyacınız olmayan motor yönetimi özelliklerini kullanır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.