- Büyük dil modelleri kullanılarak yapılan reverse engineering
1. LLM4Decompile ve Decompile-Eval tanıtımı
- Hedefimiz, decompile işlemine özel ilk açık kaynak LLM'yi oluşturup yayımlamak ve yeniden derlenebilirlik ile yeniden çalıştırılabilirliğe odaklanan ilk decompile benchmark'ını kurarak yeteneklerini değerlendirmektir.
- AnghaBench'ten toplanan bir milyon C kod örneği GCC kullanılarak assembly koda derlendi ve bununla 4 milyar tokenlık bir assembly-kaynak kod çifti veri kümesi oluşturuldu.
- Bu veri kümesi kullanılarak önde gelen kod LLM'lerinden DeepSeek-Coder modeli fine-tune edildi ve HumanEval soruları ile test örneklerine dayalı değerlendirme benchmark'ı Decompile-Eval oluşturuldu.
- Değerlendirme, decompile edilen kodun başarılı şekilde yeniden derlenebilmesi ve test vakalarındaki tüm assertion'ları geçebilmesi olmak üzere iki açıdan yapılır.
2. Değerlendirme sonuçları
Metrikler
- Yeniden derlenebilirlik ve yeniden çalıştırılabilirlik, decompile sürecinin etkinliğini doğrulayan önemli göstergelerdir.
- Decompile edilmiş kod yeniden derlenebiliyorsa bu, sözdizimsel bütünlüğe dair güçlü bir kanıt sağlar.
- Ancak yalnızca sözdizimi, kodun özgün programla anlamsal olarak eşdeğer olduğunu garanti etmez; bu nedenle yeniden çalıştırılabilirlik, anlamsal doğruluğu değerlendiren önemli bir ölçüttür.
- Yeniden derlenebilirlik ve yeniden çalıştırılabilirlik, sözdiziminin geri kazanımını ve anlamın korunmasını gösterir; bunlar da kullanılabilir ve sağlam bir decompile için vazgeçilmezdir.
3. Modelin kullanım şekli
- LLM4Decompile, 1,3 milyardan 33 milyara kadar parametreye sahip modeller içerir ve bu modeller Hugging Face üzerinde kullanılabilir.
- Model örnekleri: llm4decompile-1.3b, llm4decompile-6.7b, llm4decompile-33b, llm4decompile-6.7b-nsp, llm4decompile-6.7b-uo
- NSP modeli assembly kodla eğitildi ve ortalama yeniden çalıştırılabilirlik yaklaşık 0.17'dir.
- UO modeli, optimizasyon seviyesi (O0~O3) hakkında ön bilgi olmadan eğitildi ve ortalama yeniden çalıştırılabilirlik yaklaşık 0.21'dir.
- Model kullanım örneği: C kodunu binary'ye derlemek, binary'yi assembly komutlarına disassemble etmek ve assembly komutlarını LLM4Decompile kullanarak C'ye çevirmek.
4. Decompile-Eval kullanım şekli
- Veriler
llm4decompile/decompile-eval/decompile-eval.json içinde JSON listesi biçiminde saklanır.
- Tek GPU ve tek süreçte değerlendirme çalıştırma yöntemi ile TGI kullanma yöntemi sunulur (10 kat daha hızlı, çoklu GPU ve çoklu süreç desteği).
5. Devam eden çalışmalar
- LLM4Binary: assembly kod ve C kodla modeli önceden eğitmek için daha büyük bir veri kümesinin eklenmesi planlanıyor.
- Decompiler-ALL: daha fazla dil/platform ve ayarı destekleme planı bulunuyor (ör. birden fazla fonksiyonun decompile edilmesi).
6. Lisans
GN⁺ görüşü
- LLM4Decompile, mevcut binary decompile yaklaşımlarına kıyasla yenilikçi bir yaklaşım sunuyor; özellikle büyük dil modellerini kullanarak daha doğru ve verimli decompile işlemini mümkün kılıyor.
- Bu teknoloji yazılım güvenliği alanında çok faydalı olabilir ve zararlı yazılım analizi ya da legacy sistemlerin bakımı için yardımcı olabilir.
- Decompile edilmiş kodun yeniden çalıştırılabilirliğinin kusursuz olmaması, bu teknolojinin hâlâ geliştirilmeye açık olduğunu gösteriyor. Gerçek ortamlarda doğruluk ve verimliliği artırmak için ek araştırmaya ihtiyaç var.
- Benzer işlevler sunan mevcut araçlar arasında Ghidra veya IDA Pro gibi ticari ve açık kaynak decompiler'lar bulunsa da LLM4Decompile, makine öğrenmesi temelli yeni bir yaklaşım sunuyor.
- Bu teknolojiyi benimserken eğitim verisinin kalitesi ve kapsamı, modelin doğruluğu ve çalışma hızı gibi noktalar dikkate alınmalı; sağlayabileceği avantajlar yüksek doğruluk ve esneklikken, büyük modellerin karmaşıklığı ve hesaplama kaynağı gereksinimi dezavantaj olabilir.
1 yorum
Hacker News yorumları
"Yeniden çalıştırılabilirlik" sonuçlarına ilişkin görüş:
Decompile edilen çıktının güvenilirliği hakkında soru:
LLM ince ayarı için mükemmel bir kullanım örneği:
Geliştirici temelli decompilation modülü eğitimi konusuna ilgi:
Decompiler'ın ideal kullanım alanı ve veri kümesi üretimine ilgi:
Kişinin yürüttüğü LLM tabanlı decompiler projesinin tanıtımı:
Yapay zeka tabanlı yaklaşım ve karşılaştırmasız benchmark konusundaki endişe:
Yeniden derlenebilirlik ile yeniden çalıştırılabilirlik puanları arasındaki büyük farka ilgi:
LLM olmayan diğer decompiler'larla karşılaştırmaya dair merak:
6b modelin 33b modelden daha iyi performans göstermesine dair merak: