Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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ке данный код выдает системное окно смерти

У меня не выдало, ищи проблему в установленных ативирусах, балующихся проактивной "защитой" и не умеющих работать со срывом стэка.


 
clickmaker ©   (2013-04-30 18:52) [41]

> [39] Rouse_ ©   (30.04.13 18:49)

а что? для крэша все средства хороши )


 
Rouse_ ©   (2013-04-30 18:53) [42]


> clickmaker ©   (30.04.13 18:52) [41]
> > [39] Rouse_ ©   (30.04.13 18:49)
>
> а что? для крэша все средства хороши )

Саша, блин!!! :)
А нукась попробуй свой код воспроизвести в дельфе :)


 
clickmaker ©   (2013-04-30 18:54) [43]

> [42] Rouse_ ©   (30.04.13 18:53)

я эта... боюсь )


 
robt2   (2013-04-30 19:00) [44]


> Rouse_ ©   (30.04.13 18:51) [40]

обе винды стерильны


 
Rouse_ ©   (2013-04-30 20:07) [45]


> robt2   (30.04.13 19:00) [44]
> обе винды стерильны

Компиль экзешник, делай вывод в лог и выкладывай архивом. Пощупаю.


 
Rouse_ ©   (2013-04-30 20:09) [46]


> clickmaker ©   (30.04.13 18:54) [43]
> я эта... боюсь )

Отставить панику :)
Твой код просто не скушает компилер.
EIP регистр недоступен для обращения к нему из кода напрямую :)


 
Inovet ©   (2013-05-01 02:39) [47]

> [46] Rouse_ ©   (30.04.13 20:09)
> EIP регистр недоступен для обращения к нему из кода напрямую :)

jmp 0


 
Anatoly Podgoretsky ©   (2013-05-01 11:34) [48]

> Inovet  (01.05.2013 2:39:47)  [47]

Так это же косвенно, а по
русски обман.
Обмануть можно всегда


 
Дмитрий С ©   (2013-05-01 11:36) [49]

А попросить у менеджера памяти блок с началом в 0 нельзя?)


 
Rouse_ ©   (2013-05-01 13:09) [50]


> Inovet ©   (01.05.13 02:39) [47]
> jmp 0

Это не то.


> Дмитрий С ©   (01.05.13 11:36) [49]
> А попросить у менеджера памяти блок с началом в 0 нельзя?
> )

Нет, первые 10 тыщ байт используются для детектирования битых указателей.



Страницы: 1 2 вся ветка

Текущий архив: 2013.10.13;
Скачать: CL | DM;

Наверх




Память: 0.59 MB
Время: 0.006 c
1-1315492229
denkop
2011-09-08 18:30
2013.10.13
Сохранить скриншот неактивной формы


10-1185888918
ВременныйГость
2007-07-31 17:35
2013.10.13
Как получить ячейку экселя через номер столбца


15-1367311932
Artem
2013-04-30 12:52
2013.10.13
Как написать такое клиент-серверное ПО на языке С?


15-1365767063
sniknik
2013-04-12 15:44
2013.10.13
Версия borlndmm.dll ...


15-1365872380
robt
2013-04-13 20:59
2013.10.13
крэш программы