Ana Sayfa

LLM Destekli Tersine Mühendislikte Uzun Kuyruk Sorunu

1 dk okuma

Yazar, büyük dil modelleri (LLM) destekli tersine mühendislik (decompilation) projesindeki ilerlemesini ve karşılaştığı zorlukları anlatıyor. Başlangıçta, tahmini zorluğa göre fonksiyonları önceliklendiren bir lojistik regresyon modeli kullanarak "en kolay" fonksiyonlar üzerinde çalışmak oldukça başarılı oldu. Ancak, bu yaklaşım bir süre sonra tıkandı ve geriye kalan tüm fonksiyonlar zor hale geldi. Bu durum, iş akışında önemli değişiklikler yapmayı gerektirdi.

Projenin olgunlaşmasıyla birlikte, yazar yeni bir strateji geliştirdi: fonksiyon benzerliğini kullanmak. Macabeus'un montaj talimatlarının metin gömülerini kullanarak fonksiyon benzerliğini keşfetmesi fikrinden yola çıkarak, eşleşmemiş fonksiyonlar için benzer (önceden eşleşmiş) fonksiyonları bulmaya yarayan bir araç geliştirdi. Bu yaklaşım, Claude'un daha önce tanımlayamadığı birçok benzer fonksiyonu ortaya çıkardığı ve tersine mühendislik denemelerine rehberlik etmede paha biçilmez olduğu için oldukça etkili oldu. Bu sayede Claude, benzer fonksiyonlar arasında örüntüleri tanıyıp yeniden kullanabildi.

Fonksiyon benzerliğini hesaplamak için vektör gömüleri yerine, yazar daha kesin yöntemler denedi. İlk olarak, manuel olarak birleşik bir benzerlik puanı oluşturdu, ancak bunun karmaşık olduğunu fark etti. Daha sonra, opcode dizileri üzerinde sınırlı Levenshtein mesafesi hesaplayan Coddog adlı bir araç keşfetti. Coddog ve yazarın kendi yaklaşımı, farklı en benzer adayları seçse de, her ikisi de kullanılmaya devam ediyor. Bu evrimleşen iş akışı, LLM destekli tersine mühendislik projelerinde karşılaşılan "uzun kuyruk" sorununa pratik çözümler sunuyor.

İçgörü

Büyük dil modelleriyle tersine mühendislik yaparken karşılaşılan zorluklar ve bu zorlukların üstesinden gelmek için geliştirilen yenilikçi iş akışları, benzer projeler için değerli dersler sunuyor.

Kaynak