2 puan yazan GN⁺ 2023-12-05 | 1 yorum | WhatsApp'ta paylaş
  • Dogbolt, bir binary yükleyip birden fazla decompiler sonucunu tek yerde karşılaştırmayı sağlayan bir Decompiler Explorer’dır
  • Yüklenen dosyalar 2 MB’tan küçük olmak zorundadır ve yüklenen binary’lerin saklandığı belirtilir
  • Doğrudan dosya yüklemeden de nasıl çalıştığını inceleyebilmek için örnekler sunar
  • Bağlı araçlar arasında angr, BinaryNinja, Boomerang, dewolf, Ghidra, Hex-Rays, RetDec ve Snowman yer alır
  • Her araç adı ilgili web sitesine veya depoya bağlanır; böylece karşılaştırma sonuçlarını incelerken araç bilgilerini de doğrudan görebilirsiniz

Binary yükleme koşulları

  • Dogbolt, kullanıcıların binary dosya yükleyip decompile sonuçlarını inceleyebildiği bir akış sunar
  • Dosya boyutu 2 MB’tan küçük olmalıdır
  • Yüklenen binary’lerin saklandığı bilgisi ve bir FAQ bağlantısı birlikte gösterilir

Önce örneklerle inceleme mümkün

  • Dosyayı doğrudan yüklemeden inceleyebileceğiniz bir örnek listesi bulunur
  • Örnekler, birden fazla decompiler sonucunu yan yana incelemek için hazırlanmıştır

Bağlı decompiler araçları

1 yorum

 
GN⁺ 2023-12-05
Hacker News yorumları
  • Paylaşan kişiye bu haftaya kadar beklediği için teşekkür etmek istiyorum. Muhtemelen yakın zamanda C++ Weekly'de ele alınmasının etkisi var; iyi bir kaynak: https://www.youtube.com/watch?v=h3F0Fw0R7ME
    Daha geçen haftaya kadar ciddi performans sorunları vardı; şimdi kuyruk(https://dogbolt.org/queue) genel olarak iyi görünüyor. Bazı decompiler'ların geride kaldığı uzun darboğazlar dışında oldukça akıcı çalışıyor; Josh ve Glenn de harika iyileştirmeler yapıyor: https://github.com/decompiler-explorer/decompiler-explorer/c...

  • İlgili yazı: Decompiler Explorer - https://news.ycombinator.com/item?id=32079227 - Temmuz 2022, 82 yorum

  • Doktora araştırmam sırasında, özellikle obfuscate edilmiş kod için derin öğrenme üzerine çalışırken buna gerçekten ihtiyaç duyardım gibi geliyor.
    Deneylerin başında Ghidra çoklu işlemeyle iyi uyuşmuyordu ve işlenecek çok veri olduğu için angr'a geçmiştim. Belki Ghidra ile de yapılabilirdi ama aynı işi angr ile yapmak çok daha kolaydı. İsmi de hoşuma gitti. Yine de Compiler Explorer'ın proje adı, Godbolt'un ise yazarın soyadı olduğunu belirtmek isterim; ama Godbolt'u fiil gibi kullandığımız noktaya geldiysek o gemi kalkmış gibi

    • Biliyorum. Benzer şekilde GitHub deposunun adı da aslında Decompiler Explorer: https://github.com/decompiler-explorer/decompiler-explorer/
    • Makine öğrenmesi teknikleriyle makine kodu obfuscation'ını kaldırma veya decompile etme alanında kayda değer ilerleme olup olmadığını merak ediyorum
  • İkili dosyaları çeşitli ara temsillere (IR) lift etmeyi keşfetmeye yarayan benzer bir araç olsa iyi olurdu. Örneğin Ghidra p-code ve sleigh, LLVM Machine IR, Qemu TCG gibi şeyler

    • Tam bir ikili dosyadan başlandığında ara temsiller, genellikle bir insanın küçük parçaları incelemesi için uygun olmaz. Bu yaklaşımın yalnızca çok küçük assembly parçalarında iyi işleyeceğini düşünüyorum.
      Binary Ninja'nın temel aldığı, çeşitli katmanlardan oluşan ara dil seti BNIL de ilginç olabilir. cloud.binary.ninja arayüzünde veya demoda dışa açılmış hâlini görebilirsiniz
    • Qemu, ikili dosyayı ara temsile çevirip ardından onun üzerinde çalışan bir yaklaşım kullanır. Valgrind de öyle; Facebook ile ilişkili bolt adlı optimizasyon aracı da aynı fikri kullanıyor
  • Decompiler konusu açılmışken, Binary Ninja'yı seçmek güvenli bir tercih olur mu merak ediyorum. IDA'nın standart olduğunu duydum ama hobi olarak tersine mühendislik yapmak isteyen biri için pahalı da

    • Binja decompiler'ı genel olarak fena değil. IDA veya Ghidra kadar olgun değil ama kötü bir decompiler da değil.
      Kişisel olarak Binja'nın en büyük avantajı ara dil (IL). Yüksek seviyeli IL decompiler işlevi görüyor; ama assembly ile kaynak kod arasındaki aşamalar olarak düşük seviye ve orta seviye IL de sunuluyor. Decompiler çıktısı biraz tuhafsa, neler olup bittiğini daha iyi anlamak için IL'ye bakabiliyorsunuz; IL'nin kendisi de saf assembly'den çok daha okunabilir olduğu için sıkça kullanıyorsunuz. Diğer platformlarda buna düzgün karşılık gelen özellik neredeyse yok. Ghidra ve IDA'nın da her birinde birer IL var ama Binja'nın insan tarafından okunabilir IL'sine kıyasla daha çok makine tarafından okunabilir tarafta kalıyorlar
    • Günümüzde IDA Free, yalnızca Windows/Linux'ta x86_64 ile ilgileniyorsanız Pro'nun özelliklerinin neredeyse tamamına sahip: https://hex-rays.com/ida-free/
      Eksik olan Python betikleme; bu da epey büyük bir fark. Yine de ücretsiz bir araç için şikâyet etmek zor. IDA ve Ghidra'nın güçlü ve zayıf yönleri, ayrıca topluluk eklentileri farklı; bu yüzden ikisini de kullanmak muhtemelen daha iyi
    • Açıkçası sadece Ghidra kullanın. Kendine özgü quirks'leri var ama oldukça iyi ve açık kaynak. NSA için yeterince iyiyse hobi kullanımı için de büyük ihtimalle yeterlidir
  • Çok iyi. Yakın zamanda bir emülatör projesi üzerinde çalışırken kendi disassembler'ımı geliştiriyorum; makine kodu kalıplarını genelleştirilmiş bir biçime dönüştürüp ardından C benzeri sözde koda nasıl çevireceğimi sürekli düşünüyorum.
    Bu yüzden son zamanlarda kendim oyuncak bir decompiler yapmayı ciddi ciddi istiyorum

  • Uzman olmayanların bakabileceği iyi ve ayrıntılı bir decompiler öğreticisi var mı?

    • Talep var gibi görünüyor. Biri başvurulabilecek bir yön gösterebilir mi?
  • dogbolt'un çıktısını godbolt'a koymayı deneyebiliriz

    • Makine kodu için makine çevirisi bu. Teorik olarak bir sabit noktaya ulaşması gerekir
    • Bir LLM'i pekiştirmeli öğrenmeyle orijinal kodu geri getirecek şekilde eğitmek de mümkün olabilir
  • Bunu görünce başka şirketleri ikna etmeye pek gerek kalmamış gibi geliyor. Küçük ikili dosya boyutunun ve rakip karşılaştırmalarının daha fazla işe dönüşeceğini fark etmiş olmalılar.
    Servisler arası sorunları sınıflandırmak ve çözümleri karşılaştırmak için tam uygun küçük bir çözüm gibi görünüyor

    • Gerçekten de mantık buydu. Dahil edilen iki ana ticari çözüm olan Binary Ninja ve Hex-Rays tüm barındırma maliyetini karşılıyor. Bu arada Binary Ninja'yı yapan Vector 35'in kurucu ortaklarından biriyim.
      Maliyet özellikle ucuz değil. Decompiler çalıştırmak epey işlem kaynağı gerektiriyor; özellikle bazı decompiler'lar için verimli demek zor
  • Geçen yıl paylaşıldığında görmüş olmayı isterdim. Gerçekten harika ve çok kullanışlı