Soru:
LLVM IR kod çözmede son teknoloji nedir?
nneonneo
2013-03-31 13:27:01 UTC
view on stackexchange narkive permalink

LLVM IR, doğrudan LLVM tarafından çalıştırılabilen ve anında JIT'e derlenebilen oldukça yüksek seviyeli, yazılmış bir bit kodudur. Doğrudan LLVM'nin üzerinde, yorumlanmış bir dilmiş gibi çalıştırılmak üzere yeni bir çalıştırılabilir format veya programlama dili tasarlansaydı beni şaşırtmazdı.

Bu bağlamda, durumu merak ediyorum. LLVM decompilation ile ilgili teknik bilgiler. Özellikle analiz edilmesi kolay olmak üzere tasarlanmış, yazılmış bir bit kodu olduğundan, derlemenin nispeten kolay olduğu (veya en azından daha okunabilir veya mantıklı bir biçimde yeniden birleştirilmesi) beklenebilir.

Googling ortaya çıkıyor nispeten ilkel bir iş yapan, ancak görünüşte birkaç başka ipucu olan bu BSc tezi. Bu danışmanının bu alanda daha fazla araştırma yapmasını beklemiş olabilirim, ancak onun odaklandığı daha çok derleyici tasarım araştırma alanına odaklanıyor gibi görünüyor.

Araştırma projeleri var mı , ticari prototipler veya hatta LLVM ayrıştırma alanında her türlü aktif araştırma yapılıyor mu?

Bir cevap:
#1
+16
Andrew
2013-04-01 11:46:30 UTC
view on stackexchange narkive permalink

Derlemesini çözmek son derece kolaydır. Uzun süre LLVM, LLVM'yi C'ye dönüştürecek bir CBackend ile birlikte gönderilir.

Günümüzün ön uçları (clang) tarafından oluşturulan LLVM, aklınıza gelebilecek her türlü analiz ve anlayışa çok uygundur. Dolayısıyla, IR'yi "derlemek" için muhtemelen normal LLVM araçlarını (opt, llc) kullanabilirsiniz. LLVM IR'yi kendi başına oldukça okunabilir buluyorum, ama tuhafım.

Bununla birlikte, C'nin assembler'a derlenmesi gibi, bazı bilgiler kaybolur veya yok edilir. Yapı alanı adları kayboldu, sonsuza kadar dizinler ile değiştirildi. Türleri yine de kalır. Kontrol akışı, bir kavram olarak kalır, kod ve veri karmaşası yoktur, ancak işlevler ölü veya satır içi oldukları için kaldırılabilir. Enum değerlerinin de kaldırıldığına inanıyorum. Global değişkenlerin türleri gibi, işleve yönelik parametre bilgileri de kalır.

Aslında, bir LLVM katılımcısının, sizin önerdiğiniz şekilde bit kodu formatlarını kullanmadaki güçlükleri ve sorunları özetlediği düzgün bir gönderi var. Görünüşe göre birçok kişi onu dinlemiş, bu yüzden LLVM bit kodunu anlamak için şu anda sahip olduğumuz araçların ötesine geçmemiz gerekip gerekmediğinden emin değilim ...

PNaCl artık biçimi olarak (azaltılmış bir alt kümesi) LLVM kullanıyor. Yani bu sadece bir derleyici IR değil.


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