My blood type is coffee
Родни де Маниак
дневник заведен 13-11-2003
постоянные читатели [76]
AdrinA_LiNN, AmateraSu, Anung_Un_Rama, AsukaLangley, blackpuma_lara, Bladewalker, Emilia, ESPERANZA, Fantasy and Sci-fi, Fleurell, forum, Gilad, glv12 Marla Zinger, gunnbiern, Handmade, harriskhv, heavenly girl, iKudou, imp_angel, Iron, isk, Liberta, LightSmoke, Limonadk, Madnes, Marjerri, mashka-murashka, mocking-bird, Nevermore, Nighteyes, Omela, Piccolo_fiore, Prince_Eugine, RPG, Samum, Stamina, TainT, Tammi, TGa, Thinking of U, Toyka, Varanis, vitrazhi, WhereItFrom-Club, yuyuyu13, Айна, Альфи, Библиотека, Бродячий_огонек, ванимен, Виконт Де'Летенхофф, Волжанин, Вэлин, просто Вэлин, Здесь был Вэлин, Кирара, Коктейль Молотова, Лассана, Мелюзина, Мильди, Молитва, Москви4ка, О-20, Ойлэ, Ория, Осчастье, Пан Яська, ПАРАД УРОДОВ, Призрак джедая, Сайко, Старший кладовщик, Тигрра, Тихий океан, удалилась, Шалень, Шелест Ветра, Эль Ленэль
закладки:
цитатник:
дневник:
хочухи:
местожительство:
Москва, Россия
интересы [13]
компьютерные игры, фантастика, сон, черный юмор, Low Blood Pressure Evil Lord, Ты знал. Что так. Будет., Большой адронный коллайдер, пельмени предвзятости
антиресы [14]
попса, теплое пиво, соционика, текстильные куклы
25-03-2007 18:54
Night Nord (NightNord@gmail.com). Исследовательская работа - "Выполняемые приложения в среде ОС Виндовс семейства NT"

Прочитав неоднократно про bugoga в exe-шнике на bash.org.ru и попробывав сам, я задумался - а фигли? Первая идея - символы bu в hex-кодах (В одной из цитат - достаточно "bu" для достижения такого же эффекта) являются неким необходимым хеадером для формата exe. Однако эксперименты показали - достаточно символа b для подвисания консольки и рандомного перемещения курсора. Да и формат exe похитрее. + почему запускается консолька? Тут я вспомнил, что в винде ваще много выполняемых форматов - bat, wsc, vbs, и... досовский com. Вспомнив это, я опять же вспомнил, что эксперементируя со строками, я наткнулся на то, что если написать "Бугага" (по-русски, без кавычек, с болькой буквы), то винда выдает ошибку с сообщзением что процесср нашел неправильный код операции и проч, но! в заголовке - "16-битная система MS-DOS"! ЭТО ФОРМАТ COM. Т.е. винда запуская exe видит, что оный exe не соответствует формату и, в отличие от wine, просто доунгрейдит его до com, которому, видимо, никакой формат не нужен. Ком - это просто набор инструкций процессора, без излишеств. Однако нормальное поведение com'а - это дойти до конца и завершится, а не гадить на принтер, а тут оно зацикливается. От одной буквы! От hex-кода 62.

Рассмотрев повнимательнее "рандомно скачующий курсор" и поведение моего матричного принтера я понял - прога выкидывает ВО ВСЕ ВЫХОДНЫЕ ПОТОКИ пустые строки в случае с "b", а в случае с "bu" что-то типа tab'ов. А в винде есть поток принтера! И курсор скачет просто от того, что виндовая консоль поддтормаживает от такого кол-ва инфы и посему двигает курсор рывками. А принтера, ибо умные, пробелы не печатают, а просто двигают головку. Т.е. в случае с b - двигают понемногу, поэтому, бумага ездит медленно, а с bu - помногу. Вот оно!

Возникает справедливый вопрос "почему от одной буквы такой эффект"? Подозреваю от бага в ms-dos'е винды. Комманда 62 (кто знает ассемблер, что за комманда?), подозреваю, вызывает какую-то системную фичу (прерывание?) передавая ей что-либо (указатель на строку), которая кадает эту (строку?) во все существующие выходные потоки. Однако если переданно ничего не было или переданно что-то не то, фичу глючит и она циклется, а прога честно ждет окончания ее работы. Почему нельзя удаить файл? Это как раз просто - com программы должны заканчиватся на специальную комманду возврата управления (ret?), аки return в Си. А этой комманды нет. В результате, из-за очередного бага в ms-dos'e, даже после убиения процесса, прога остается в памяти. Или эксплорер не разлочивает файл.

За сим очередь любителей ассемблера и дебаггеров - пусть они попробуют запихать это дело в SoftICE (у мну он не встанет - Daemon Tools, а винду переставлять неохота) и посмотреть че там происходит конкретно. И незабудте сообщить о результатах на новый форум психов-программистов - bash.org.ru - Взгляд в Безду!

Ваш комментарий:
Камрад:
Гость []
Комментарий:
[смайлики сайта]
Дополнительно:
Автоматическое распознавание URL
Не преобразовывать смайлики
Cкрыть комментарий
Закрыть