О том как MsgBox порушила Windows.

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

О том как MsgBox порушила Windows.

Сообщение Хакер » 07.01.2006 (Сб) 5:52

В общем, сидел я писал свой I-Net Money Counter. И тут Вб подвис. Пошёл я в таск-менеджер и увидел там, что vb.exe кушает 99%. Со скрипом в сердце я убил vb вместе с несохранённым кодом. Теперь 99% процентов стал кушать explorer. Пришлось убить explorer. 99% стал кушать на RUNDLL32. Убил rundll – массовое групповое обжорство прекратилось. Запустил explorer – и он опять стал кушать 99%. Было принято решение перезагрузиться. После перезагрузки я начал дописывать свой проект. В проекте есть окно, где нужно вводить время. Так вот если пользователь вводит в два комбо-бокса одинаковое время, должно появиться сообщение с просьбой ввести время как надо. Когда я написал этот кусочек кода, я чтобы проверить запустил программу (ну, т.е. F5). Ввёл одинаковое время, но вместо положенного сообщения об ошибке, получил Run-Time 6-OverFlow. После нажатия на кнопку Debug, я очумел(*_*), ошибку вызвал следующая строчка

Код: Выделить всё
MsgBox "Пожалуйста, укажите временной интервал правильно. Начальное и конечное время должно отличаться!", vbCritical, "Анализ"


(Как вообще MsgBox может вызвать ошибку переполнения, кроме как если не переопределена константа vbCritical на значение превышающее м/з для типа Long)

Так вот я решил посмотреть, что будет с другими вызовами мсгбокса’а. Выяснилось, что везде, где нужно показать сообщение программа вылетает с ошибкой 6.

Ну, думаю, глюк есть глюк, перезагрузка всё поправит. Ради интереса создал новый проект, написал всего одну строчку кода – вызов MsgBox. Запустил – Run-Time Error 6 Overflow. В общем, что-то непонятное творилось. Попробовал вызвать MsgBox из Immediate. Появилось пустое окошко с какой-то фигнёй в заголовке (что-то вроде йzЪ6 j%). Т.е. непонятно, было ли это сообщение об ошибке переполнения или результат работы функции MsgBox. Вообще то, если Run-Time ошибка произошла при вызове из Immediate – появляется окошечко со значком EXCLIMATION и копками OK + Help. Но в окошечке, которое появилось, ничего этого не было. Тогда я написал в коде формы ерунду, дабы вызвать окно с сообщением о «Syntax Error». Появилось такое же окошко без кнопок и значков…

Я решил посмотреть, как будет работать MsgBox в других средах разработки. VB.NET 2003. Вылетел сразу после запуска, оставив после себя стандартное окно «Отправить отчёт \ Не отправлять отчёт». А вот VC6 спокойно выдавал пустое окно, с фигнёй в заголовке (видимо «фигней в заголовке» был случайный кусок памяти). Перед перезагрузкой я решил все эти глюки заScreenShot’ить (для истории). Сделав скриншоты, я начал перезагрузку, перезагрузку, которая была для системы последней.

Скриншоты можете посмотреть, если не верите (я бы не поверил).

У кого какие мнения на произошедшее.
Вложения
NW.rar
Скриншоты странных клюков
(133.37 Кб) Скачиваний: 99
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 07.01.2006 (Сб) 7:07

Не знаю!В голове не укладыветься как такое может быть? Может просто какие-то DLL в Windows-е глюкнули, которые относяться к VS .NET? ИМХО: Может быть когда ты через Диспетчер задач вырубил VS, его переглючило!
А потом такое ещё повторялось?
#define ROFL 0xDDDD

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 07.01.2006 (Сб) 7:23

Вообще то я думаю, что это либо работа вируса, либо кривонаписаный софт заменил какую-то DLL. Но скорее всего вирус, - ничего я не устанавливал. Видимо он перехватывал вызов API (MessageBoxA) и показывал своё сообщение, либо он переписал область памяти, в которой записана функция MessageBoxA. Что-то вроде

Код: Выделить всё

    Dim hUserLib            As Long
    Dim hMsgProcAdress As Long
    Dim BADFUNCTION  As String  'Скомпилированая функция-подделка
    hUserLib = LoadLibrary("User32")
    hMsgProcAdress = GetProcAddress(lbhUserLib "MessageBoxA")

    For i = 1 to Len(BADFUNCTION)
     FillMemory hMsgProcAdress + i, 1, CByte(Asc(mid$(BADFUNCTION, i, 1)))
    Next i


А вообще то я не суперспец в этой области (Асм, ProcessMemory). Надо спросить у кого нибудь из наших гуру (например у tyomitch'а или ANDLL'а)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 07.01.2006 (Сб) 7:54

Что за ос стоит? Версия, сервис паки, обновления?..

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 07.01.2006 (Сб) 8:05

Стояла XP-Professional 5.1 SP2, поставил ту же.

Кстати у меня тут недавно были глюки с памятью (в разделе железо даже тема есть). Может быть память начала опять шалить, что в первом случае привело к 100%-загрузке процессора всеми процессами по очереди, во втором - к клюкам с MsgBox, а в третьем к тому, что накрылась ОС. Но всё таки я думаю вирус...
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 07.01.2006 (Сб) 9:07

Вирус! возможно. По всему коду в if-блоках перед условием поставлено Not, хотя абсолютно не надо. Хотя часть кода писалась в 5 утра, поэтому возможно это я шизую.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: О том как MsgBox порушила Windows.

Сообщение Хакер » 07.01.2006 (Сб) 10:48

Я писал(а):В общем, сидел я писал свой I-Net Money Counter. И тут Вб подвис. Пошёл я в таск-менеджер и увидел там, что vb.exe кушает 99%. Со скрипом в сердце я убил vb вместе с несохранённым кодом. Теперь 99% процентов стал кушать explorer. Пришлось убить explorer. 99% стал кушать на RUNDLL32. Убил rundll – массовое групповое обжорство прекратилось. Запустил explorer – и он опять стал кушать 99%. Было принято решение перезагрузиться.


Блин, уже 6-ой раз виснет. И это после переустановки системы!
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 07.01.2006 (Сб) 17:34

Хм... похоже на результат ошибок в RAM.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 07.01.2006 (Сб) 17:59

Я тоже так думал. Пока не обнаружил, что в коде I-Net Money Counter в условии каждого второго if-блока Not, а все числа были увеличены на один.

А вообще возможно вирус+RAM
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 08.01.2006 (Вс) 0:13

chkdsk c: /f

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 09.01.2006 (Пн) 0:38

Flex_2004 писал(а):
выбрось глючащий кусок своей рам и купи новый


Перефразирую

Выбрось 25000 теньге и потрать 25000 теньге на новую раму.

1 РУБ. = 4~5 теньге.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 09.01.2006 (Пн) 2:08

А может глючет мамочка? Может это не только грязь в тот раз была виной негрузиловки. Да и где столько бабла взять.

Ответ: Написать хороший софт и продать :D

А что же тогда RAM'а Not'ы всюда понаставила. Как ты думаешь я бы такое написал

Код: Выделить всё

If Not Not SomeCollection.Count Then
List1.Clear
For Each ic in SomeCollection
List1.Add ic.Name
Next ic
else
MsgBox "Коллекция пуста"
End if


Код с циклом должен по идее выполняться если коллекция содержит элементы.

А такое

Код: Выделить всё

For i = 0 To List1.ListCount - 1 + 1

Next i


я про -1 +1.

Я только не могу понять если я переустановил систему, почему эта фигня (я про постоянные висаки, не про Not'ы) продолжается.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 09.01.2006 (Пн) 8:04

Я только не могу понять если я переустановил систему,

Полностью с нуля или поверх существующей?

Кстати подсветка кода на форуме почему то не выделила второй Not в коде.
الفيجوال بيسك الرابح

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 09.01.2006 (Пн) 9:44

Удалил windows, переимен Program Files в PF_OLD и Documents and setting в DAS_OLD. А потом i386\winnt.exe.

А в подстветке ещё наверное много глюков найдётся :lol:, если поискать. Интересно а с переносом коммента глюк исправлен. Щяс проверим:
Код: Выделить всё

' Comment commant _
it is comment too, it must be green

LSet, RSet, AddressOf, _NewEnum

Rem вообще такой не знает

Implements

Friend
WithEvents ParamArray
Option Base Explicit Compare Binary Text ( DataBase)


DefDate
DefStr
DefBool
DefCur
DefSng
DefByte
DefInt
DefLng
DefDbl
DefObj
DefVar


Последний раз редактировалось Хакер 09.01.2006 (Пн) 9:59, всего редактировалось 1 раз.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 09.01.2006 (Пн) 9:55

Мдя, подсветку в школу бы надо :lol:
Самое смешное что Compare в ВБ моддерживается но здесь не светится.
А вот DataBase не поддерживается, но здесь светится :shock:
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.01.2006 (Пн) 10:02

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 09.01.2006 (Пн) 10:24

Ну так я про другое. То ли список keywords то ли операция перенос "_" (смайлик получился). А вообще мне больше всего интересно не как NOT-ы добавились и не как системка рухнула (ибо всё это легко сделать), а вот как надо извратится, чтобы так MessageBoxA испортить.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 144

    TopList