Anti-Disassembly - Akış Kontrolünü Engelleme - 1

DeathWarrior01

Uzman üye
14 Ocak 2021
1,731
1,070
Evren
Anti-Disassembly - Akış Kontrolünü Engelleme
Anti-Disassembly nedir?

Zararlı yazılım geliştiricilerinin assembly kodlarının anlaşılmasını veya okunulabilirliğini azaltmak için Anti-Disassembly tekniği kullanır.Bu teknik sayesinde zararlı yazılım analistlerinin zaman ve vakit kaybı anlamında işleri bir hayli zorlaşabiliyor.

1 - İşlev işaretçisi sorunu

İşaretçiler, C ve C++ dillerinde yaygın olarak kullanılan bir programlama deyimidir.İşaretçiler, bilgisayar belleğinde bulunan bir adresi değişkene kaydeder ve kaydettiği o değişken üzerinden direkt olarak değişkenin içerisin de bulunan bellek adresine doğrudan erişim sağlayabilirler.Zararlı yazılım geliştiricileri de çokça miktarda işaretçi kullanarak assembly kodlarının anlaşılmasını zorlaştırabiliyor.

Ekran-Alintisi1.png


1 ile gösterdiğim yerde "[ebp+var_4]" adlı ram adresine mov komutu ile sub_4011C0 adlı değişkenin offset'i atanmış.Atandıktan sonra 2 ile işaretlediğim yerde "call" fonksiyonu ile 1 numara ile gösterilen yerdeki ram adresinin offset değeri çağrılmış ve birkaç satırlık assembly kodu geldikten hemen sonra bir tane daha "call" fonksiyonu çağrıldığını görüyoruz.Burada dikkatimizi çeken şey cağrı yapılan(call) ram adresinin bir üstte ki çağrı yapılan ram adresi ile aynı olması:



İlk çağrı bize "004011CA" adlı ram adresini verecektir:

Ekran-Alintisi3.png


Devamında bir sonraki çağrı bize doğal olarak bir sonraki offset'e denk gelen ram adresini vermesi gerekecektir:

Ekran-Alintisi4.png


Fakat ida vb araçlar ile incelediğimizde ilk çağrıda ki yani "004011CA" adlı ram adresini verecektir.Bu adresi tekrardan vermesinin sebebi 1'inci deki ram adresinin offset değerini tekrardan 2.çağrıda kullanılmasıdır.Bu sebepten dolayı da hem ida'nın kafası karışıyor, hem de zararlı yazılım analistlerinin işine engel olmuş oluyor.


2 - Eksik çapraz referans ekleme

Çapraz referanslama, bir fonksiyonun kaç kez çağrılabileciği'ni bulmak için kullanılan bir yöntemdir.Çapraz referanslama eklemek için IDC işlevini kullanmalıyız.IDC işlevinde kullanacağımız talimat "AddCodeXref" adı verdiğimiz talimattır.Bu talimat 3 değer alır bunlar:
1.Referansın bulunduğu bellek adresi
2.Referansın bulunduğu yer
3.Akış tipi

Çağrı birkaç farklı akış tipini destekleyebilir ancak bizim kullanacağımız normal bir çağırma işlemi için "fl_CF" ve "fl_jf" atlama talimatlarıdır.Yukarıda da bahsettiğimiz gibi işlev işaretçisi sorununu ida pro düzeltmek için aşağıdaki komut dosyasını çalıştırdı:



Konunun 2.bölümü gelecektir.Esenlikler...
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.