Soru:
Fuzzing yaparken kod kapsamını nasıl belirlerim
mrduclaw
2013-03-31 00:58:10 UTC
view on stackexchange narkive permalink

Acme Corp'un PDF Okuyucusunu bulmaya başlamak istediğimi varsayalım. Miller'in bir grup iyi huylu PDF'yi indirerek yaptığını izlemeye ve onları değiştirmeye çalışmak istiyorum.

Miller, benzer kod kapsamına sahip örnekleri budayarak PDF örneklerinden oluşan külliyatını en aza indirerek başladı.

Bu özel adım nasıl yapılır? Yani, benzer bir kod kapsamının ne olduğunu nasıl belirledi?

Yürütmeyi izleyen ve bir yürütme grafiği elde etmek için JMP / CALL'ları kaydeden bir araç hayal edebiliyorum ve sanırım bu grafikleri farklılaştırabilirsiniz. Peki ya JIT kodu? JIT muhtemelen bellekte farklı yerlerde olacağından, bu grafikler çok farklı olmaz mıydı?

Iki yanıtlar:
#1
+5
mncoppola
2013-03-31 01:17:45 UTC
view on stackexchange narkive permalink

GCC ile büyük ölçüde bağlantılı olmasına rağmen, gcov projesi bir Linux kod kapsama aracı olarak popülerdir. Bununla birlikte, programınızı -fprofile-arcs -ftest-kapsama bayraklarıyla derlemenizi gerektirir; bu, kapalı kaynak yazılımları hedefliyorsanız bir seçenek olmayabilir. Daha fazla bilgi burada bulunabilir: http://gcc.gnu.org/onlinedocs/gcc/Gcov.html

Bu harika bir öneri, ancak kapalı kaynaklı yazılımlar için öneriler almayı umuyordum.
#2
+5
0xea
2013-03-31 01:50:00 UTC
view on stackexchange narkive permalink

JIT'in derlediği kodla uygulamaya göre nasıl bir performans gösterdiğinden emin değilim, ancak peach, en yüksek kod kapsamına sahip minimum dosya kümesini oluşturmak için bir dakika kümesi yardımcı programına sahiptir:

Bu araç, her örnek dosyayı bir hedef program aracılığıyla çalıştıracak ve kod kapsamını belirleyecektir. Daha sonra en fazla kodu kapsayacak en az sayıda dosyayı bulacaktır. Bu, fuzzing sırasında kullanılması gereken minimum dosya kümesi olacaktır.

Ancak görebildiğim kadarıyla önerdiğiniz yöntemi kullanıyor ve uygulamanın tüm temel bloklarının isabetlerini izliyor. Bunu yapmak için bir iğne aracı kullanır.



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