Форум сайта о Владимире
Здесь вы можете обсудить интересующие вас вопросы
Домой | Пользователи | Регистрация | Зайти | Правила форума | RSS | ВЕРНУТЬСЯ НА САЙТ

Вы не зашли.
Форум сайта о Владимире / Креатив / Баллада о CMOSе Модераторы: GrayWolf, Verter, s0me0ne  
Автор
Сообщение Страниц: 1
Altsoph
The Creator

Зарегистрирован: 16.02.2004
Сообщений: 2058
[Intro]

Однажды, лет этак восемь назад, когда, будучи студентом второго курса, я в очередной раз гостил во Владимире, довелось мне встретить моего старинного друга Тарла.

Старинный друг Тарл был тогда студентом ФИПМ ВлГУ, и был он в глубокой печали. Накануне, движимый неотвратимым учебным планом, он неторопливо ваял какие-то вполне своеобычные лабы, когда через чат локальной университетской сети (порядок устройства и администрирования которой достойны отдельного рассказа) к нему постучались неизвестные недоброжелатели.

[16b]
Неизвестные недоброжелатели сообщили о себе, что они, будучи физиками, владеют оккультными тайнами программирования куда как лучше студентов-программистов вообще и моего старинного друга Тарла в частности. В доказательство данного утверждения они предъявили Тарлу страшного рода программу, написанную ими лично в свободное от занятий физикой время, и осуществляющую "убийство компьютера". Программа имела расширение "com", длину в 16 байт и загадочное имя "killcmos". Что такое CMOS, мой старинный друг представлял смутно, но слово "kill" перевел однозначно и обиделся.

Сегодня сложно уже определить точно, что именно так задело Тарла, который тогда не знал ни ассемблера х86, ни деталей процедуры POST, а со словом CMOS сталкивался до того лишь раз, когда окончательно состарилась батарейка на его материнской плате, но терзаемый нанесенной ему обидой, мой старинный друг совершенно потерял покой и пребывал в этом плачевном состоянии вплоть до нашей с ним встречи.

В сбивчивых выражениях и расстроеных чувствах он поведал мне о причинах своего горя, предоставил ту самую злополучную программу и попросил принять посильное участие в уничижении зарвавшихся оппонентов.

[10b]
Беглый анализ полученной мной от Тарла зловредной утилиты показал, что последняя осуществляет банальную порчу информации о конфигурации компьютера путем забивания её нулями. Информация эта использовалась тогдашними компьютерами, практически начисто лишенных способностей к автоматическому определению подключенного оборудования, для хранения конфигурации системы в периоды обесточивания оной. Стирание CMOSа приводило к тому, что копьютер сразу после включения неприлично верещал и заставлял пользователя вручную указывать тип подключенного винчестера, системное время и прочие загадочные данные. Эта процедура требовала от пользователя сильной воли, твердой памяти и множества сакральных знаний.

Дальнейшее исследование упомянутой программы интереса не представляло, и я взялся за написание ответного кода, ставя себе целью разгром наглых физиков и демонстрацию полной их несостоятельности в сфере высоких информационных технологий. Первая версия моего решения алгоритмически ничуть не отличалась от продукта соперников, но благодаря более лаконичному использованию регистров имела меньший на шесть байт размер.

[7b]
Продемонстрировав Тарлу функциональность результата на его домашнем компьютере, я было собрался продолжить беспробудное пьянство, обычно сопровождающее мои визиты в славный город Владимир, но был остановлен новой идеей.

Идея заключалась в том, что, коль скоро CMOS использовал контрольную сумму для контроля собственной целостности, достаточно было портить лишь эту самую контрольную сумму, а остальную очистку CMOSа сердобольный BIOS, обнаружив порчу, осуществлял самостоятельно. Это позволило избавиться от цикла, а ограничиться чтением контрольной суммы, её инкрементированием и последующей записью, то есть сократить размер вредоносного ПО до семи байтов.

[5b]
Радости моего старинного друга не было пределов, и оставив Тарла предаваться курощению несчастных физиков, я покинул его гостеприимный дом, равно как и славный город Владимир, и отправился в столицу.

Под стук колес электрички думалось комфортно, а изменения в заоконном ландшафте помоголи избегать мысленного зацикливания. Основным плодом дорожных размышлений стала новая идея, заключавшаяся в том, что раз, контрольная сумма, будучи двухбайтной, может иметь 65536 различных значений, то, даже не зная текущего, мы почти наверняка испортим её, перезаписывая произвольным числом. Вероятность неудачи составляла 1/65536, т.е менее 0.153%. Дальнейшие рассуждения, в основном, сводились к тому, что прогон программы является экспериментом, и как всякий эксперимент, таковой прогон не застрахован от стохастических погрешностей. Кому, как не физикам знать это?

Итогом этой поездки стала пятибайтовая версия разрушителя CMOSа.

[4b]
Прибыв в столицу нашей Родины я продолжил посещать занятия в родном университете и поделился новой забавой со своими тогдашними одногруппниками. Более других моими изысканиями заинтересовались Gevor и приятель Г. Вместе с ними я продолжил оптимизацию пятибайтовой программы (сеансы оптимизации традиционно проходили на семинарах по ассемблеру и в известной степени раздражали нашу семинаристку Станивичене), и в недельный срок нам удалось сократить размер утилиты до четырех байт.

[3b]
Дальнейшие наши разработки носили весьма вялотекущий характер. Приятель Г откололся от группы разработчиков, мотивируя это тем, что одной командой процессора затереть CMOS не удастся (по причине непредусмотрительности разработчиков архитектуры, забывших включить столь полезную инструкцию в микрокод), а однобайтовых команд не так много, и большого интереса для нас они не представляют. Мы с Gevor-ом, в целом, были согласны с прагматичным приятелем Г, но врожденное упрямство не позволяло нам отказаться от исследований.

Спустя еще месяца полтора, кажется, на занятии по физкультуре в университетском манеже у нас все-таки появилась мысль, как ограничить размер нашего ПО тремя байтами. Мысль эта, так никогда до конца и не реализованная, заключалась в том, что трехбайтовым jump-ом можно было бы передать управление в область PSP, автоматически генерируемую ОС и содержащую, помимо всего прочего, имя исполняемого файла. А имя файла -- это целых 8 байт, то есть огромный простор для изысканий. Особенно обидным фактом являлось то, что будь PSP буквально чуточку ближе, и хватило бы двухбайтового jump-а.

Так или иначе, но последняя, трехбайтовая версия приложения так никогда и не увидела свет, и не исключено, что упорные владимирские физики всё-таки обставили нас в этой жесткой и бескомпромиссной гонке информационных технологий.

[Outtro]
История, конечно же, не сохранила то высокотехнологичное приложение до нынешних дней. Оно кануло в Лету, наряду с такими экспериметальными разработками, как двумерные тороидальные CoreWars и портом на C моей, еще школьной, basic-программы для генерации реалистичных ландшафтов fractlander.

Однако, порывшись на старых дисках, я довольно нашел tasm, tlink и techhelp, и, поковырявшись с двадцать минут в списке инструкций х86, смог воспроизвести четырехбайтовую версию killcmos-а. Вот она:

B0 2E E7 70


_______________________________________
С уважением,
Алексей.

14.02.2006 01:46:15
Вебсайт  
SMArt
Скрытый статус

Откуда: Vladimir
Зарегистрирован: 23.04.2004
Сообщений: 2625
Браво =D

14.02.2006 07:48:24
Вебсайт  
Кошмарик
Влившийся

Зарегистрирован: 15.06.2004
Сообщений: 485
А techhelp и у мя где-то валяется ! Вот.

_______________________________________
Citius, Altius, Fortius

07.03.2006 20:59:19
   
Страниц: 1    
Форум сайта о Владимире / Креатив / Баллада о CMOSе
Перейти

Сейчас на форуме 0 зарегистрированных пользователей и 6 гостей.
Powered by PunBB
© Copyright 2002-2004 Rickard Andersson
Rambler's Top100