Сейчас на форуме: UniSoft, bartolomeo (+6 невидимых) |
eXeL@B —› Программирование —› SEH. |
Посл.ответ | Сообщение |
|
Создано: 03 января 2011 00:30 · Личное сообщение · #1 |
|
Создано: 03 января 2011 02:24 · Личное сообщение · #2 Темы у тебя интересные , но ты их так быстро закрываешь , не у всех так много времени чтобы посмотреть , прошлую тему взял закрыл. Писал бы подробнее , без системного слэнга , читать трудно иногда , хотя код полезный когда вникнешь что ты имел ввиду) Что значит записываешь свой сех , на примере той же нтдлл , до финал екзепшн ты же все равно вернешься в нтдлл , нельзя ли это дело перехватить? На какой винде ты это делаешь? Может тому виной SEHOP ? Для чего ты ставишь СЕХ? Если можешь , прикладывай с кодом рабочий пример , так удобнее для тех к кому ты обращаешься ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube |
|
Создано: 03 января 2011 05:02 · Личное сообщение · #3 |
|
Создано: 03 января 2011 05:32 · Личное сообщение · #4 |
|
Создано: 03 января 2011 07:35 · Личное сообщение · #5 |
|
Создано: 03 января 2011 10:23 · Поправил: ant_man · Личное сообщение · #6 значит SafeSEH IMAGE_LOAD_CONFIG_DIRECTORY32_2.SEHandlerTable[SEHandlerCount] | Сообщение посчитали полезным: Clerk |
|
Создано: 03 января 2011 14:26 · Личное сообщение · #7 Тема есть ... Manual Mapping and SEH Handler Validation (aka SafeSEH) I'm currently in the process of writing a manual mapper and have hit an interesting problem... I noticed that when trying to use exception handling in my manually mapped module the handler would never get called and the process would be terminated. After a bit of scanning through the PE file format I noticed the section on load configuration data and then it became clear the problem was SafeSEH. For anyone who does not know what SafeSEH is: msdn.microsoft.com/en-us/library/9a89h429(VS.80).aspx uninformed.org/index.cgi?v=9&a=4&p=7 Please note that this is different to SEHOP, described here: blogs.technet.com/srd/archive/2009/02/02/preventing-the-exploitation-of-seh-overwrites-with-sehop.aspx The problem is that SEH does not work in my manually mapped modules because it fails the checks performed by the exception dispatcher (see Ntdll.RtlIsValidHandler for more information). To give you an idea of what's happening, here's the pseudocode from the Blackhat 2008 paper 'How to Impress Girls with Browser Memory Protection Bypasses': Code:
Obviously manually mapped modules will fail the first check, as the handler is not inside an 'image' as far as Windows is concerned (from memory it checks to see if the region the handler resides in is marked as MEM_IMAGE), and even if it was, we still wouldn't be in the relevant list (ntdll.LdrpInvertedFunctionTable) so it doesn't matter anyway. The second check fails because the manually mapped module's code is marked as executable (obviously). Besides, even if that first check did succeed, the second would fail and an access violation would be raised because ExecuteDispatchEnable is disabled. The third check succeeds at first (because the handler is not in an image), but then fails because the ImageDispatchEnable flag is not set. So, whilst brainstorming for solutions to this problem with a friend (thanks Greyman!) we came up with a few solutions: Try to enable the ImageDispatchEnable flag. This failed however as every time I tried to set it I got a STATUS_INVALID_PARAMETER error. I dove into the implementation of ntoskrnl.NtSetInformationProcess and found that the responsible function seems to be ntoskrnl.MmSetExecuteOptions. At first glance it seems that you cannot enable or disable that particular flag from usermode. Unless of course I just plain fucked something up when calling it, which is also possible, but unlikely. Hook NtQueryInformationSystem and 'lie' to ntdll.RtlIsValidHandler by simply returning the ImageDispatchEnable flag as always set. I have not yet tested this solution but I assume it should work, however I want to avoid it as it's quite invasive and defeats the purpose of manually mapping to begin with. Implement your own exception dispatcher via VEH. Vectored exception handlers are called before structured exception handlers, so it should/would be possible to register a VEH and perform the necessary dispatching for the manually mapped module. This solution is imo the best one I know of so far, however from both a reliability and performance standpoint I can see it being a potential issue. Plus, it would be an asshole to do the initial implementation (very tedious). Does anyone know of any better solutions? So far number 3 seems to be the best, but I'm still hanging out for a better solution... Any ideas/suggestsions/etc would be appreciated. Thanks. Источник www.gamedeception.net/threads/19650-Manual-Mapping-and-SEH-Handler-Validation-(aka-SafeSEH)?p=132697#post132697 ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube |
|
Создано: 03 января 2011 15:10 · Личное сообщение · #8 Моя проблемка похоже попадает под описанный случай. Имеем следующий код: Code:
Так вот проблема в том, что если этот код вставлен в exe, то исключение деления на 0 обрабатывается нормально, но если этот код вставлен в dll, то получаем исключение без вызова обработчика. Как сделать, чтобы в dll срабатывал обработчик исключения? ----- Everything is relative... |
|
Создано: 03 января 2011 16:24 · Личное сообщение · #9 |
|
Создано: 03 января 2011 16:39 · Личное сообщение · #10 |
|
Создано: 03 января 2011 17:08 · Личное сообщение · #11 |
|
Создано: 03 января 2011 17:46 · Личное сообщение · #12 |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 03 января 2011 17:51 · Личное сообщение · #13 Vamit Насколько я помню "ничто мешает одному SEH-обработчику послать остальные на хрен"... На системных длл'ках система ставит(по крайней мере должна) "свой" обработчик. А вообще если видимых камней нет, может попробовать try явно заменить на: push dword seh_handler push dword [fs:0] mov dword [fs:0], esp |
|
Создано: 03 января 2011 18:18 · Личное сообщение · #14 ant_man Верно, респект! Code:
|
|
Создано: 03 января 2011 18:20 · Личное сообщение · #15 |
|
Создано: 03 января 2011 18:24 · Личное сообщение · #16 |
eXeL@B —› Программирование —› SEH. |
Эта тема закрыта. Ответы больше не принимаются. |