Soru:
Farklı mikrodenetleyici ailelerinin farklı hex dosyalarından nasıl ayırt edilir?
Abdul Rehman
2013-03-24 21:25:06 UTC
view on stackexchange narkive permalink

Farklı mikrodenetleyicinin onaltılık dosyalarını ayırt etmenin bir yolu var mı? Onaltılık bir dosyam var ve şimdi hangi mikro denetleyiciye ait olduğunu unuttum. Bunu anlatmak için herhangi bir araç var mı? veya bilinmesi gereken herhangi bir ipucu veya numara?

Düzenleme: Benzer bir soru burada var, Ama bu soru özellikle PIC ailesine aitken, peki ya şu gibi farklı ailelerden ayırt etmemiz gerekirse: AVR, 8051, PIC vb.

İlgili: http://reverseengineering.stackexchange.com/q/233/187
Belki mikrodenetleyici markasını zaten belirtebilirsiniz? ARM, PIC, ..?
Sorumu daha açık hale getirerek düzenledim
Belki birisi, farklı mimariler için görmeniz muhtemel ortak bayt modellerine katkıda bulunabilir? Sorduğun soru bu mu?
üç yanıtlar:
#1
+6
perror
2013-03-24 22:39:43 UTC
view on stackexchange narkive permalink

İlk fikrim, hizalanmış baytlar üzerinde bir frekans analizi yapmak olacaktır. Montaj dillerinin çoğu için, en alakalı baytlar en önemli bitler üzerinde hizalanır.

Dolayısıyla, asm tipini tanıyan bir ayırt edici oluşturmak oldukça kolay olabilir. Ancak, şaşırtıcı bir şekilde, birkaç googledikten sonra bununla ilgili herhangi bir araç veya kağıt bulamadım ...

Belki burada yapılacak bir şey vardır.

#2
+4
Dougall
2013-03-25 05:51:31 UTC
view on stackexchange narkive permalink

Bunun için tasarlanmış araçlar bilmiyorum. Pratikte, doğru görünene kadar farklı mimarilere sahip IDA'ya (veya başka herhangi bir sökücüye) yüklemek muhtemelen bunu yapmanın en kolay yoludur. Bunu otomatikleştirmek için bir komut dosyası yazabilirsiniz.

Kendi aracınızı oluşturmak istiyorsanız, Christopher Domas'ın "RE Dinamik İkili Görselleştirmenin Geleceği" konuşmasına bakmanızı öneririm. Bilinmeyen verileri analiz etmek için kullanılabilecek bir dizi tekniği tartışır. Genel fikir, her dosyadaki iki veya üç baytlık her grubun sıklığını gösterir. Grafikler, farklı mimariler arasında belirgin şekilde farklıdır ve veri türlerini otomatik olarak tanımlamak için kullanılabilir. Asıl araç ve ihtiyaç duyacağınız veri kümesi herkese açık değildir, ancak otomatik mimari algılama yapmak isteseydim bu şekilde giderdim.

Daha basit bir yaklaşım, işlev prologunu aramak olacaktır. farklı mimarilerde desenler. Uygulama daha basit olsa da, veri setini hazırlamak daha fazla insan zamanı alacaktır (çünkü işlev prologlarının tanımlanması otomatikleştirilemez). Bazı işlemciler C kodunu çalıştıracak kadar güçlü olmayabilir ve eğer kod derlenmemişse öngörülebilir işlev prologlarına sahip olmamak mümkündür. Arayabileceğiniz diğer genel işlemleri bulmanız mümkün olabilir.

İlk düşüncem Domas'ın Cantor Dust aracıydı, ancak demo sürümünü çevrimiçi olarak hiçbir yerde bulamıyorum. Aksi takdirde, dosyadaki 2 veya 3 baytlık dizilerden oluşan basit bir histogram, içinde ne tür verilerin bulunduğunun hızlı bir resmini verebilir ve bazı genel talimatlara yol açabilir. Kendi aracınızı yazmak istemiyorsanız, bazı onaltılık düzenleyiciler yerleşik histogram işlevine sahiptir.
@nopnopgoose Cantor Dust'ın bir 'demo / alfa' sürümü [black hat media arşivlerinden] (https://media.blackhat.com/bh-us-12/Arsenal/Domas/_cantor.dust_.7z.zip ). İkilinizi / kaynaklar / altında "visual_re.example" olarak yeniden adlandırırsanız, onunla biraz oynayabilirsiniz.
#3
-2
Drew DeVault
2013-03-25 00:28:54 UTC
view on stackexchange narkive permalink

Ne tür CPU'ları hedefleyebileceği konusunda bir fikir edinmeye çalışın. Muhtemelen bu dosyaya bakarak CPU'nun bit uzunluğunu da tahmin edebilirsiniz (file_size% 32 == 0? Muhtemelen 32 bit). Basit bir listeye sahip olduğunuzda, ikiliyi bazı sökücüler aracılığıyla çalıştırın ve kodun mantıklı olup olmadığına bakın. Bazı benzetilmiş CPU'larda çalıştırmayı deneyin ve herhangi bir şey yapıp yapmadığını görün.

Ayrıca, geçersiz talimatların yanlış CPU'ya sahip olduğunuz anlamına gelmeyebileceğini, yalnızca veri veya başka bir şey olabileceğini unutmayın. Aslında, herhangi bir dizge veya başka bir şey bulup bulamadığınızı görmek için dosyaya bakmaya değer, sırf işlerin nerede olduğuna dair daha iyi bir fikir edinmek için.

Burada mikro denetleyicilerden bahsediyoruz, 8 bit ve 16 bit MCU'lar da var. Bu bir bilgisayar hakkında değil.
Oh, whoops, soruyu yanlış oku. Özür dilerim.


Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...