Текущий архив: 2013.10.13;
Скачать: CL | DM;
Вниз
крэш программы Найти похожие ветки
← →
robt (2013-04-13 20:59) [0]как его гарантированно получить?
типа обращения к области памяти и тд...
← →
DVM © (2013-04-13 21:02) [1]обратись к методу несозданного объекта, получишь AV
← →
robt (2013-04-13 21:06) [2]не нето, надо чтоб рушилась совсем когда винда предлагет отослать отчет
← →
DVM © (2013-04-13 21:24) [3]
> robt (13.04.13 21:06) [2]
> не нето,
AV в finalization модуля и будет тебе отчет
← →
robt (2013-04-13 21:32) [4]не надо в процессе а не на выходе, что нибуть с указателями кривыми
← →
alexdn © (2013-04-13 21:42) [5]решил гейтсу на глаза попасться?
← →
Dimka Maslov © (2013-04-13 21:43) [6]Ещё во времена Борланда ребята постарались, чтобы такого не случалось. Если исключение произошло внутри try - никакого отчёта не будет, оно будет тем или иным способом обработано. Код обработчиков событий ВСЕГДА исполняется внутри try. Но если очень хочется, можно попробовать породить поток (не через TThread (там тоже всё внутри try происходит), а через WinApi, и в нём обратиться к недопустимому адресу).
← →
Anatoly Podgoretsky © (2013-04-13 21:47) [7]Ох и побьют тебя, а может быть и посадят
← →
О-Сознание (2013-04-13 22:50) [8]
> robt (13.04.13 20:59)
Зачем тебе это?
← →
Rouse_ © (2013-04-13 23:08) [9]Я думаю этого за глаза: http://alexander-bagel.blogspot.ru/2012/09/blog-post_10.html
← →
Rouse_ © (2013-04-13 23:20) [10]
> Код обработчиков событий ВСЕГДА исполняется внутри try.
Это из серии паранормального :)
Механика финализиции SEH фреймов, предоставленная резработчикам в виде except или finaly базируется на стековых фреймах, что приводит нас к следующим выводам:
1. Во первых никаких обработчиков событий (я так думаю исключений) не существует. Есть блоки финализации.
2. Все это построено на базе механики SEH
3. Механизм SEH основан на правильном состоянии стэка.
3. Любая ошибка связанная со стеком приводит к полной недееспособности данного механизма :)
← →
Rouse_ © (2013-04-13 23:27) [11]ЗЫ: чтобы было более понятно можно взять любой из примеров, по выше приведенной статье и обернуть ее вызов в try.
Не смотря на то что мы вроде как и предохранились от исключения, нам это не поможет...
← →
Дмитрий С © (2013-04-14 00:41) [12]Действительно, испортить программу оказалось просто. :)
procedure TForm1.Button1Click(Sender: TObject);
begin
asm
mov ebp, 0
mov esp, 0
end;
end;
← →
Дмитрий С © (2013-04-14 00:46) [13]P.S.
Windows 7 отправляет от отчеты теперь не спрашивая?
← →
Германн © (2013-04-14 02:11) [14]
> Rouse_ © (13.04.13 23:08) [9]
>
> Я думаю этого за глаза: http://alexander-bagel.blogspot.
> ru/2012/09/blog-post_10.html
>
А вот тут ты не поставил смайлик!
Какое там "за глаза хватит"! Хуже разрушения стека трудно вообразить что-то. :)
← →
Rouse_ © (2013-04-14 10:51) [15]
> Хуже разрушения стека трудно вообразить что-то. :)
Ну в принципе да - гарантированный бадабум в любом случае :)
← →
Игорь Шевченко © (2013-04-14 11:25) [16]Дмитрий С © (14.04.13 00:41) [12]
Сдуру можно много чего сломать
← →
Rouse_ © (2013-04-14 11:32) [17]
> Игорь Шевченко © (14.04.13 11:25) [16]
> Сдуру можно много чего сломать
Но зная суть процесса - поломать можно еще больше и качественней ;)
← →
robt (2013-04-14 11:56) [18]
> Зачем тебе это?
это типа сюрприза для фанатов гексредакторов
← →
Rouse_ © (2013-04-14 12:05) [19]
> robt (14.04.13 11:56) [18]
> это типа сюрприза для фанатов гексредакторов
Дык они ж с образом работают а не с активным процессом.
В активном процессе данные постоянно меняются и работа не возможна.
← →
robt (2013-04-14 12:11) [20]
> Rouse_ © (14.04.13 12:05) [19]
тык тупая проверка контрольной суммы покажет, лазил там кто иль нет, а если лазил - то давай досвидания :)
← →
Rouse_ © (2013-04-14 12:21) [21]А, ты про это - ну тогда да...
← →
Rouse_ © (2013-04-14 12:22) [22]Но тогда кстати поизучай вот это: http://alexander-bagel.blogspot.ru/2012/08/cratefile.html
ибо твой вариант не спасет от лоадеров...
← →
robt (2013-04-14 12:32) [23]Удалено модератором
← →
Rouse_ © (2013-04-14 12:57) [24]А вот материться не надо!
Первое и последнее китайское предупреждение...
← →
Dimka Maslov © (2013-04-14 13:19) [25]
> Rouse_ © (13.04.13 23:20) [10]
Я именно это имел ввиду, что обработка очереди событий в программе всегда заключена внутри блока try, следовательно, никакое исключение, возникшее в процессе обработки сообщения, не вызовет прекращения работы программы.
← →
Rouse_ © (2013-04-14 14:41) [26]
Dimka Maslov © (14.04.13 13:19) [25]
Я именно это имел ввиду, что обработка очереди событий в программе всегда заключена внутри блока try, следовательно, никакое исключение, возникшее в процессе обработки сообщения, не вызовет прекращения работы программы.
Пфф...
Димыч, ты чего-то не то говоришь :)procedure TForm1.Button1Click(Sender: TObject);
begin
try
asm
mov ebp, 0
mov esp, 0
end;
except
ShowMessage("Если вы читате это - произошел нонсенс!");
end;
end;
Не важно с чем мы работаем вообще, с очередью событий (это кстати вообще что такое?) или с ЦВС, как только мы убили стек - приложение самостоятельно восстановиться не сможет.
Есть конечно оговорки, например можно поймать сей казус через VEH, который в отличие от SEH не привязан к стеку, но чтобы правильно все сделать - нужно иметь более чем прямые руки...
← →
robt (2013-04-14 14:53) [27]Удалено модератором
← →
Rouse_ © (2013-04-14 14:58) [28]Удалено модератором
← →
Dimka Maslov © (2013-04-14 16:51) [29]
> Rouse_ © (14.04.13 14:41) [26]
За все годы занятий программированием мне и в голову пришло так разрушать стек. Нет, конечно стек я убивал, но под мелкомягким отладчиком, который прямо говорит, что стек разрушен, и прекращает отлаживаемый процесс.
← →
Rouse_ © (2013-04-14 18:19) [30]
> Dimka Maslov © (14.04.13 16:51) [29]
> За все годы занятий программированием мне и в голову пришло
> так разрушать стек.
Прикольно, а как разрушал и зачем? :)
← →
robt (2013-04-14 18:28) [31]
> Rouse_ © (14.04.13 14:58) [28]
эх даже прочитать не успел :(
ты там сильно выражался?
зы всем спасибы за добросердечные пожелания помочь и распространения добра во всем мире
← →
Dimka Maslov © (2013-04-14 18:29) [32]
> Прикольно, а как разрушал и зачем? :)
Цэ++ объекты в стеке держит...
← →
Rouse_ © (2013-04-14 18:35) [33]
> robt (14.04.13 18:28) [31]
> эх даже прочитать не успел :(
> ты там сильно выражался?
Я?!!!
Не, я только раздавал добро и насаждал справедливость.
> Dimka Maslov © (14.04.13 18:29) [32]
> Цэ++ объекты в стеке держит...
Спасибо - поржал :)
← →
robt (2013-04-14 18:41) [34]
> я только раздавал добро и насаждал справедливость.
ага... это ты Фень Юаню расскажи :)
← →
Rouse_ © (2013-04-14 18:56) [35]
> robt (14.04.13 18:41) [34]
> ага... это ты Фень Юаню расскажи :)
Это очень хорошо что ты знаешь данного автора, но боюсь не смогу ибо Шрайбер мне ближе :)
← →
robt2 (2013-04-30 16:45) [36]вобщем если в 7ке данный код выдает системное окно смерти
asm
mov ebp, 0
mov esp, 0
end;
то в хр программа наглым образом тупо молча закрывается ...
есть еще варианты ?
← →
clickmaker © (2013-04-30 18:16) [37]а если добавить mov eip, 0?
← →
robt2 (2013-04-30 18:47) [38]куда? я нуб в асме
← →
Rouse_ © (2013-04-30 18:49) [39]
> clickmaker © (30.04.13 18:16) [37]
> а если добавить mov eip, 0?
Сам понял что сказал? :)
← →
Rouse_ © (2013-04-30 18:51) [40]
> robt2 (30.04.13 16:45) [36]
> вобщем если в 7ке данный код выдает системное окно смерти
У меня не выдало, ищи проблему в установленных ативирусах, балующихся проактивной "защитой" и не умеющих работать со срывом стэка.
Страницы: 1 2 вся ветка
Текущий архив: 2013.10.13;
Скачать: CL | DM;
Память: 0.56 MB
Время: 0.009 c