What's new
Runion

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Обработка SEH в 32 битных образах

Kernel32dll

Midle Weight
Депозит
$0
Всем привет. Назрел вопрос - как отработать SEH в самостоятельно смаппленном 32-битном PE-файле?
Сейчас известно, что студийным компилятором добавляется директория IMAGE_LOAD_CONFIG_DIRECTORY в PE-файл, которая содержит в себе поля SEHandlerTable и SEHandlerCount, которые соответственно являются адресом таблицы обработчиков, и их количеством.
Известно существование неэкспортируемой функции RtlInsertInvertedFunctionTable, и таблицы LdrpInvertedFunctionTable, стоит ли смотреть в их сторону? Или писать свой обработчик?

UPD: речь идет не о SEH, а о SafeSEH

IMAGE_LOAD_CONFIG_DIRECTORY32 (winnt.h) - Win32 apps
Contains the load configuration data of an image. (32 bit)
learn.microsoft.com
Последнее редактирование: 09.12.2023
 
salsa20 сказал(а):
в крипторе октавиана там где загрузчик посмотри, там было

Насколько я помню, там реализована обработка эксепшенов, генерируемых MSVC 2008 года, с того момента произошли изменения в структурах, добавляемых компилятором
“Данная реализация покрывает версии студий VC2008, VC2010.”
 
Kernel32dll сказал(а):
Возможно кто-то знает или слышал о технике инъекции PE-файла Module overloading - вкратце, полезная нагрузка размещается в памяти с атрибутом MEM_IMAGE, за счет другого, настоящего, смапленного PE-файла. Может ли в теории эта техника помочь избежать ручной обработки исключений?

GitHub - hasherezade/module_overloading: A more stealthy variant of "DLL hollowing"
A more stealthy variant of "DLL hollowing". Contribute to hasherezade/module_overloading development by creating an account on GitHub.
github.com

Даже если разместить полезную нагрузку в виртуальной памяти с атрибутом MEM_IMAGE, «безопасные» обработчики SafeSEH не смогут схэндлить исключения(исходя из статьи https://hackmag.com/uncategorized/exceptions-for-hardcore-users/)
 
Kernel32dll сказал(а):
Даже если разместить полезную нагрузку в виртуальной памяти с атрибутом MEM_IMAGE, «безопасные» обработчики SafeSEH не смогут схэндлить исключения(исходя из статьи https://hackmag.com/uncategorized/exceptions-for-hardcore-users/)

они действуют только в том случае, если обработчики исключений находятся в модулях, поддерживающих SafeSEH, и при этом модули сами являются "безопасными"
 
salsa20 сказал(а):
они действуют только в том случае, если обработчики исключений находятся в модулях, поддерживающих SafeSEH, и при этом модули сами являются "безопасными"

Не совсем понял мысль.
 
Обработка исключений зависит от кода внутри этой полезной нагрузки и, возможно, от того, какая часть кода модифицированного PE-файла управляет обработкой исключений.
 
Top