Neler yeni

Exploit Yazmaya Giriş 0x03 SEH (tanımlar) (1 Viewer)

Tron 

Pentester & Reverse Engineer
Legendary
Mesajlar
1,977
Credits
142,182
Revealed content

Exception Handler Nedir ?​

Türkçeye "istisna işleme/yakalama, hata işleme/yakalama" gibi farklı çevirileri olan bu yapı aslında try-catch / try-except yapısıdır.
Java:
try {
  //run stuff.  If an exception occurs, go to  code
}
catch {
  // run stuff when exception occurs
}

SEH (Structured Exception Handler) Nedir ?​

1.png

Kısaca SEH 'de temelde try-catch gibi hata ayıklamak için kullanılan bir yapıdır. (https://docs.microsoft.com/tr-tr/cpp/cpp/structured-exception-handling-c-cpp?view=vs-2019)

SEH stack içerisinde 2 adet 4 byte'lık olmak üzere toplam 8 byte'lık bir alan kullanmakta. Bu alanlardan ilki bir sonraki SEH adresini ikincisi ise Exception Handler'ın adresini tutmakta. Yani asıl hatayı işleyip çıktı verecek olan kod parçası başka bir adres içerisinde tutulmakta.

Şöyle diye biliriz
2.png

Veri yapılarında görmüş olduğumuz linked list yapısına benzeyen bir yapı olduğunu söyleyebiliriz. Eğer exception handler çalışmaz ise bir sonraki SEH yapısına geçer ve onu çalıştırmayı dener ve bu şekilde devam eder. (0xFFFFFFFF adresine kadar. Son SEH o adreste bulunmaktadır)

Peki bu şekilde sıralı bir liste var ve bu sayede sırasıyla tüm SEH 'leri görebiliyorsun. Peki bu listenin başı nerde diye soracak olursak, SEH Chain'nin başı fs:[0] içerisinde tutulmaktadır. (fs:[0] 'da TEB/TIB bloğunun en başında bulunmaktadır)
3.png
 

Bu konuyu görüntüleyen kullanıcılar