FLIRT, Hızlı Kütüphane Tanımlama ve Tanıma Teknolojisi 'nin kısaltmasıdır.
Peter temel bilgileri açıkladı, ancak bunun nasıl uygulandığına dair bir teknik rapor:
Bu sorunları gidermek için, tanımak istediğimiz tüm kütüphanelerdeki işlevler. IDA şimdi, demonte edilen programın her baytında, bu baytın standart bir kitaplık işlevinin başlangıcını işaretleyip işaretleyemeyeceğini kontrol eder.
Tanıma algoritmasının gerektirdiği bilgiler bir imza dosyasında tutulur. Her işlev bir modelle temsil edilir. Kalıplar, tüm değişken baytların işaretlendiği bir işlevin ilk 32 baytıdır.
Biraz eski (IDA 3.6'dan) ancak temel bilgiler hala geçerlidir.
kendi imzalarınız varsa, ayrı olarak indirilebilen FLAIR araçlarına ihtiyacınız olacak.
(FLAIR, Tanımlama ve Tanıma için Hızlı Kütüphane Edinimi anlamına gelir)
IDA Pro kitabında bir bölüm FLIRT üzerinde ve FLAIR araçlarını kullanarak.
Flört imzası, bilinen işlev başlıklarıyla eşleşmek için kullanılan bir kalıptır. Örnek olarak şunu düşünün:
push ebpmov ebp, espsub esp, 4Chmov [ebp + var_4], eaxpush ebxpush edi ...
Derleyici herhangi bir kaydı başka bir kayıtla değiştirmek veya herhangi bir şeyi hareket ettirmek ücretsizdir, böylece her şey derleyicinin en uygun olduğunu düşündüğüne bağlıdır. Başka bir yerde derlendiğinde, derleyici diğer kayıtları kullanmayı seçebilir, örneğin:
push ebpmov ebp, espsub esp, 4Chmov [ebp + var_4], eaxpush ecxpush esi ...
Artık bunu eşleştirmek için birkaç seçeneğiniz var. Ya talimat dizisinden safça bir imza oluşturun:
push Xmov Xsub Xmov Xpush Xpush X ...
Yığın çerçevelerinin ebp ve esp kullandığını varsayın, bu aslında göründüğünden daha tehlikelidir. İşlevlerin genel amaçlı bir kayıt olarak ebp'yi kullanması yaygındır:
push ebpmov ebp, espsub esp, 4Chmov [ebp + var_4], Xpush Xpush X ...
IDA flört imzaları, bir işlevin ilk baytlarının sayısına bağlı olarak bu tür imzalar yaratma girişimidir. Çözmeye çalıştıkları sorun, yaygın olarak yeniden kullanılan kodu tanımlamaktır. Bu imzalar, çeşitli derleyiciler kullanılarak yaygın olarak kullanılan çeşitli kitaplıkların derlenmesiyle oluşturulur. Derleyici bir kitaplık ürettikten sonra, IDA bu kitaplıktan imzaları çıkarırken aynı zamanda kaynak tanımıyla eşleştiren araçlara sahip olur. Bir süre sonra, ortak kütüphaneler için oldukça fazla imza biriktirebilirsiniz, bu da size yolda oldukça fazla zaman kazandıracaktır.
İlgili program benzerliklerini ve farklılıklarını belirleme sorununa daha karmaşık bir çözüm için bkz. BinDiff. Çok daha gelişmiş sezgisel yöntemler kullanıyor.
Yukarıda örnek olarak kullandığım imza, çok genel olduğundan ve birçok yanlış pozitif eşleşme yaratacağından oldukça değersiz.
Hex-Rays sitesinden:
Bir imza dosyası, standart çalışma zamanı işlevlerinin kalıplarını içerir. IDA onların yardımıyla standart işlevleri tanıyabilir ve bunları uygun şekilde adlandırabilir.
Tam bir açıklama çabasıyla, sıfırdan kendi kullanımım için herhangi bir şey yaratmadım. Sanırım kendinizinkini oluşturmanın yardımcı olabileceği bir örnek, aynı aileden çok sayıda kötü amaçlı yazılımınız olması olabilir. Tipik olarak, kendi kütüphane işlevlerini yazıp kullanırlar ve burada yardımcı olması için bir FLIRT imzasının kullanılması mantıklı olacaktır.
Ek bir bonus olarak, halka açık bir FLIRT imzaları burada var.