Мемуары маньяка (СИ) - Быков Валерий Алексеевич (читать книги бесплатно полностью без регистрации TXT) 📗
Глава 3: Программирование.
Я довольно быстро наигрался в компьютер, и уже осенью, меня стали интересовать другие вопросы. Мне хотелось слазить в интернет, для этого требовался модем. И родители не слишком долго упирались, для его покупки. Хотя, мне хотелось слазить в интернет по другой причине, я начал всерьёз поигрывать в starcraft, и мне он был нужен, для того, чтобы тренироваться, не в компьютерных клубах, со слабыми игроками, а с настоящими соперниками. Тем более, у многих моих друзей интернет уже был, и они по нему играли. Но этот момент, как мы вместе собирались, и ходили почти всем классом играть в компьютерный клуб в казаков и в старкрафт, это отдельная история. Бессмысленно её рассказывать, потому что я, как и все дети, начинал ходить играть в компьютерные клубы в конце восьмого класса и позже.
И всё же, несмотря на то, что мотивом к приобретению интернета и компьютера были компьютерные игры, и всё началось с них. Хотя первые разы я вылезал в интернет с телефонной карточки прагмы. Я не только играл. Осенью двухтысячного года, когда я учился в девятом классе, у нас началась эпидемия программирования. Начал её не я. А мой оппонент скажем так, Павел Инчиков, и ещё пара человек... Они установили себе паскаль, турбо паскаль, и начали учиться программировать, и это сразу стало модным. И мне тоже очень хотелось научиться программировать, и я тоже установил себе паскаль. Но наверно я был большим дуболомом чем остальные. Основная цель программирования, и у меня и у Инчика была написать компьютерную игру. И вот тут мы столкнулись с препятствием, с достаточно слабым препятствием, которое прекратило эпидемию программирования быстро и эффективно. У той версии паскаля, которая ходила по классу, не было графических драйверов. Или они просто не работали. Мы вводили уравнение, писали команду UnitGraph, но ничего не работало. Нельзя написать игру без видео графики. И по этой причине очень скоро все всё бросили. Но у меня был друг Павел Улитин, а у него был брат программист. И потому вопрос с дровами для видео у меня решился. Брат Павла дал мне нормальный диск, с нормальным паскалем, и я установил его себе. Ввёл UnitGraph, uses Graph, uses crt... И всё заработало, графика активировалась, (rectangle, circle, putpixel...) я написал простейшие программы, свои первые программы, это произошло осенью 2000го года, когда я учился в девятом классе.
Мои одноклассники бросили писать программы уже к началу ноября, я же продолжал. Вначале я написал программу торпеда, потом взялся за гига проект, по написанию танчиков, аналогичных танчикам на денди, только у моих можно было качать скилы. Естественно, что графика создавалась прописыванием координат четырёхугольников, окружностей и тд.. И цветов было всего лишь шестнадцать. Но это не важно. Я долго работал... А параллельно надо подчеркнуть, что я продолжал играть в старкрафт, казаки, и другие стратегические игры... И это тоже сыграло не малую роль, и изрядно отразилось на моей дальнейшей судьбе и психологии. Но главное, я продолжал писать. И изрядно вкладывал душу в это, я работал с паскалем ещё месяца четыре, не меньше. Всё пытался закончить танки, но, увы, программа стала слишком сложной, слишком разрослась, и становилось всё сложнее понимать, где и какие переменные за что отвечают, потому что программа достигла размеров в несколько тысяч строк, а каждая строка в длину имела несколько экранов компьютера. Я так и не смог закончить игру, выпустив лишь демоверсию в две стадии. Хотя этот релиз, тоже был не плох, с учётом того, что я был девятиклассником, работал на паскале, программе не шибко расположенной для написания игр, с учётом того, что никто никогда меня не учил как делать правильно, и я всё придумал сам. Каждый момент, каждое уравнение. А это не так то просто, хотя бы заставить программу слушаться кнопок клавиатуры. Типа нажал "8" танк едет вверх, а уж про то, какие уравнения отвечали, за то, чтобы танк не мог ездить и стрелять сквозь стены, сказать страшно. Да ещё к тому же... Не важно... В общем, я понял, что паскаль не канает. И решил по совету Димы Улитина, брата моего друга переключиться с паскаля на С++. Но особых успехов в С++ достичь мне не удалось. Увы... А жаль, ничего путного я на нём так и не написал, хотя понял, что по сути, (until, repeat, if, case of, goto m1) С++ это тоже самое что и паскаль. Хотя мне говорили, что языки похожи, и многие команды у них идентичны. После С++ мой выбор остановился на двух других языках. Один из них сейчас широко известен это assembler, он является основным базовым языком. Прост и логичен. И второй язык куда менее известен, это WinHex. И снова же брат Павла Дима, посоветовал мне воспользоваться им, чтобы взломать игру Heroes III, там надо было кой что изменить в стартовом файле, чтобы отлучить игру от диска. И волей не волей, так, отлучая героев три от диска, я впервые познакомился с этим сложнейшим языком. Хотя многие поспорят со мной. Потому что WinHex это не язык даже. Это просто полный бред. Писать на WinHex программы, это тоже самое, что делать в блокноте php сайты. Из той же оперы как бы песня. Но я взял, установил себе ассемблер, стал разбираться, и не смог. Почему не работало, вроде бы не компилировался файл. В Winhex компилировать ничего не надо, в нём просто меняется сам файл... Хотя меняется страшно, потому что надо прописывать всё, вообще всё. Таким образом, выбирая следующий язык после С++, мною был сделан выбор в пользу WinHex. И произошло это в конце зимы 2001го года, накануне весны.
С невероятной глупостью, дуболомством и упорством я начал работать на этом языке. (который языком то назвать язык не повернётся) В этот раз меня не интересовали игры. Одну игру я написал, танчики, и более меня она не интересовала. Я пришёл к выводу, что написать игру в одиночку слишком сложно. К тому же надо пользоваться С#, и совмещать редакторы и языки, чего я не умел, и не желал уже учиться.
В Winhex дела шли медленно, и простые действия, типа сохранить в неизвестном формате, не fat32 и не NTFS, небольшой файл. Даже такие действия давались мне с трудом. И наверно любой здравомыслящий человек бросил бы это занятие, или перешёл бы на другой язык. Но с ассемблером у меня не получилось. Сейчас я предполагаю, что просто версия ассемблера, которую я пытался установить, была тогда битая. И выбора особо не было, а упорства было девать некуда. Я тупо продолжал печатать H8hG UK34. TY56 NB73. ... И так далее... Ни begin, ни end, ни until... Ничего этого не было в winhex, потому никто его и не воспринимал как язык. Winhex это биты, и только биты, там нет команд. В нём можно написать что угодно, и как угодно. Можно заставить сохранить программу в файл за пределами fat32, или ntfs, можно вообще создать свой формат, который после создания ни одна Windows не сможет ни увидеть, ни прочесть, ни стереть. Я уж молчу про хранение данных в стандартном формате, возможно в стёртом виде, за горизонтом, как это называют...
Я продолжал работать, я стремился, я хотел стать хакером. Я не слышал тогда про программы Троян мэйкеры. В которых современные горе программисты собирают готовые трояны, которые потом отфильтровываются стандартными антивирусами. В моём представлении, тогда, написать программу значило следующее. На winhex соединить файл, из полностью своих, написанных мною вручную битов. Мой первый вирус, попав на компьютер, создавал свой собственный формат, не ntfs, и не fat32 и сохранялся туда. И всё что ему нужно было сохранять, он сохранял даже не за горизонтом, а вообще в ином формате. С точки зрения windows, поражённой таким вирусом, объём винчестера просто уменьшался килобайт на двести вот и всё. Windows, любой антивирус, просто не видел, и не мог прочитать то, что я написал. Как будто этой информации вообще не было, как будто кластер затёрт, повреждён. Я написал свой первый вирус полностью сам, без каких-либо троян мэйкеров. Я написал его по битам, без компиляторов, без переводов с машинного языка на понятный людям. После запуска вируса, который запускался через .exe файл, ни одна программа, ни один антивирус уже не мог его остановить. Впрочем, мой самый первый вирус ничего и не умел. Всё на что он был способен, это записать на винчестер какую-нибудь повторяющуюся чушь типа 2+2=4, засрав всю память винчестера, стереть все данные, это был вирус бомба. И восстановить такой затёртый в неизвестном формате винчестер мог только первоклассный программист, потому что после активации моего вируса, винт нельзя было даже отформатировать. Но я нигде не использовал этот свой первый вирус. Незачем было. У меня возникла другая бредовая идея. Я решил, написать искусственный интеллект. Чтобы взять под контроль весь мир. Псих, знаю, насмотрелся терминатора, ну и ладно. Хотя согласитесь, не плохо иметь при себе такую карманную программку, джина по исполнению желаний. И конечно я начал писать эту программу не на С++, и не на ассемблере как все нормальные люди. Я писал его на winhex, где каждый бит, может выглядеть как угодно и задавать что угодно. Где нужно потратить час, чтобы написать программу сложения 2+2, выводящую на экран ответ 4. Потому что на машинном языке написать сложение двух и двух, или умножение три на три, куда сложнее, чем на листочке бумаги. И я начал сидеть, и это заняло у меня кучу времени, и я посвятил себя этому, тупому сидению за компьютером. Я стал меньше играть, я не общался с девушками, как другие мои одноклассники, хотя варианты у меня были, и весьма достойные. Одна из моих одноклассниц, весьма красивая и умная особа старательно пыталась меня подцепить, даже в шахматы играть научилась, и не плохо. По крайней мере, со всего класса, она играла в шахматы лучше всех, кроме меня.