Soru:
İkili dosyayı statik olarak açma
EfForEffort
2013-03-21 09:24:09 UTC
view on stackexchange narkive permalink

Yürütemediğim bir ikili dosyam olduğunu varsayalım (örneğin, sahip olmadığım bir cihazda çalışıyor), ancak onu parçalarına ayırabilirim. Mimari ile ilgili belgeleri alabilirim. (Benim durumumda MIPS küçük endian.) Ancak ikili, çok az içe aktarıma, çok az dizgeye vb. Sahip, bu yüzden gerçekten paketlenmiş gibi görünüyor.

Statik olarak paketi mi açıyorsunuz? (Düzenleme: Orijinal cihaza erişim olmadan ambalajından çıkarmak demek istiyorum.)

QEMU ile birlikte verilen kullanıcı modu emülatörlerinden biriyle çalıştırmayı deneyebilirsiniz ... Bu konuda daha fazla bilgi sahibi olsaydınız, muhtemelen bir sökücü IDA gibi yardımcı olabilirdi, belki de ücretsiz sürümün birlikte çalışabileceği türlerden biridir. Ayrıca "statik paket açma" ile ne demek istediğinden emin değilim.
Ida Pro ve Bochs emülatörü gitmenin bir yolu gibi görünüyor, bir eğitim için [buraya] (https://www.hex-rays.com/products/ida/support/tutorials/debugging_bochs.pdf) bakın.
@Remko: ne yazık ki Bochs yalnızca x86'ya öykünür, bu nedenle burada yardımcı olması olası değildir
@cb88, Bende bir IDA Pro kopyası var. Demek istediğim, ikili dosyayı açmak istiyorum, ancak başlangıçta tasarlandığı cihaz elimde değil. QEMU + mipsel gitmenin yolu gibi görünüyor; Debian-mipsel'i şimdi indiriyorum.
Eğer qemu sistem öykünmesi çok hatalıysa veya verileri geri almak zorsa, bunu muhtemelen bir chroot'ta, gentoo mips ve statik bir qemu kullanıcı modu öykünücüsü ile de yapabilirsiniz. http://www.gentoo.org/proj/en/base/embedded/handbook/?part=1&chap=5
Dört yanıtlar:
#1
+7
ixje
2013-03-21 13:47:32 UTC
view on stackexchange narkive permalink

Geçmişte gördüğüm 30'dan fazla yerleşik cihaz yazılımında, bunların tescilli herhangi bir şey kullandıklarını nadiren gördüm. Genellikle sadece gzip / LZMA veya kullandıkları benzer bir sıkıştırma (bazen değiştirilmiş veya çıkarılmış başlıklarla da olsa).

Bu nedenle, bilinen sıkıştırma algoritmalarını aramak için ilk adım olarak binwalk gibi bir şey deneyeceğim. Bu, Crypt Bul veya İşaretle arama gibi kripto sabitlerini bulmaya yarayan araçları denemeye yardımcı olmaz. Bu sadece kripto bir yazılım uygulamasıysa işe yarar. Donanım hızlandırmalı şifre çözme motoru ve anahtarı depolamak için OTP belleği olan daha karmaşık bir cihaz ise, bir set üstü kutusu diyelim, o zaman çalışma zamanı erişimi olmadan şansınız kalmaz (anahtarı büyük ölçüde bozmazlarsa) Şifre çözme motoruna OTP).

Son olarak, tescilli bir algoritma kullanıp kullanmadıklarını bulmayı deneyebilir ve bu algoritmayı QEMU veya gxemul kullanarak taklit edebilirsiniz. veya kendi açıcınızı daha yüksek seviyeli bir dilde yazın.

Bu iyi bir fikir. Binwalk'u çalıştırdım ve bir ELF olması dışında hiçbir şey bulamadı (yani, yalnızca hangi dosyanın (1) rapor edildiğini bildirdi). İşaret arama da hiçbir şey bulamadı. Sanırım bir sonraki adım QEMU.
#2
+3
user1354557
2013-03-22 22:34:35 UTC
view on stackexchange narkive permalink

The Ida Pro Book 'da Chris Eagle, IDA veritabanı içinde yürütmeyi simüle ederek ikili dosyaları statik olarak açmak için kullanılabilen ida-x86emu adlı bir eklentinin kullanımını gösteriyor . Buna bir bak; açık kaynaklıdır ve kullanımı oldukça kolaydır.

Maalesef bu bir MIPS ikili olduğu için yardımcı olmuyor = [
#3
+3
Ange
2013-03-26 21:17:16 UTC
view on stackexchange narkive permalink

birkaç olası yol:

  1. paketleyiciyi tanımlayın

    • platformunuzun standart paketleyicilerini edinin (örneğin UPX ), kullanılıp kullanılmadığını kontrol edin.
    • Standart bir paketleyiciyse, belki de zaten kazandınız, belgelendiği gibi veya daha da iyisi, UPX gibi, ambalajından çıkabilir ve açık kaynak.
  2. Algoritmayı tanımlayın

    • Pek çok iyi + yaygın paketleyici algoritması (NRV, LZMA, JCAlg, ApLib, BriefLZ). genellikle vücut boyutlarına veya sabitlerine göre kolayca tanımlanabilirler. ( Kabopan 'da birkaçını saf python ile uyguladım)
    • paketleme / şifreleme algoritmasını kolayca belirleyebilirseniz, muhtemelen statik paket açma için temiz bir uygulama bulabilirsiniz
  3. ellerinizi kirletmek

    • algoritmayı hala bilmiyorsanız ve görünüşe göre gerçekten özel bir algoritma, sonra başka bir tane okuyun aynı platform için paketleyici (yani bir kez daha UPX Mips ikili dosyasını ve kaynağını okuyun), böylece sizi platformunuzda kullanılan benzer (paketleyici) hilelere alıştırabilir.
    • sonra olası sıkıştırma algoritmasını arayın (muhtemelen farklı görünen bir kod parçası, insanlar bunlarla çok nadiren uğraşıyor ve algoritmayı en sevdiğiniz dilde yeniden uyguluyor ve harici olarak paketini açıyor (parametreleri bulun, algoritmaları uygulayın, ikiliyi değiştirin / yeniden yapılandırın)
  4. Bruteforce yöntemiyle tembel yöntem: ApLib gibi bazı algoritmaların herhangi bir başlığı veya parametresi (bir boyutu bile yok) yoktur: algoritma yalnızca bir compr tamponu esas aldığından, bazen ikilinizin herhangi bir ofsetinde körü körüne denemek ve düzgün bir sıkıştırılmış arabellek (çok küçük değil, çok büyük değil + 00'larla dolu) alıp almadığımızı kontrol etmek yeterlidir. / ol>

#4
+2
Rolf Rolles
2013-03-21 12:43:01 UTC
view on stackexchange narkive permalink

Genel cevabım, "paketlenmiş ikiliye karşı kendi kendini değiştiren işlemleri simüle ederek" olacaktır. Örneğin, bu, çoğu paketleyicinin gizlediği sıkıştırmanın kaldırılmasını kapsayacaktır. Bunu yapmak, paketleyicideki yürütme akışının "statik olarak izlenmesini" gerektirecektir; bu, kodu kendi kendine değiştirmeye tabi olabilir.

Bu açıklama, ikili paketin bölümlerinin yalnızca olduğu geleneksel bir paketleme stili için işe yarar. sıkıştırılmış / şifrelenmiş. Örneğin, "Sanallaştırma Gizleyicilerini Paketten Çıkarma" 1 makalemde açıklandığı gibi, daha sofistike paket açma stratejilerinin gerekli olduğu bir durum olabilir.



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...