Валерий Быков - Мемуары маньяка (СИ)
Мои одноклассники бросили писать программы уже к началу ноября, я же продолжал. Вначале я написал программу торпеда, потом взялся за гига проект, по написанию танчиков, аналогичных танчикам на денди, только у моих можно было качать скилы. Естественно, что графика создавалась прописыванием координат четырёхугольников, окружностей и тд.. И цветов было всего лишь шестнадцать. Но это не важно. Я долго работал... А параллельно надо подчеркнуть, что я продолжал играть в старкрафт, казаки, и другие стратегические игры... И это тоже сыграло не малую роль, и изрядно отразилось на моей дальнейшей судьбе и психологии. Но главное, я продолжал писать. И изрядно вкладывал душу в это, я работал с паскалем ещё месяца четыре, не меньше. Всё пытался закончить танки, но, увы, программа стала слишком сложной, слишком разрослась, и становилось всё сложнее понимать, где и какие переменные за что отвечают, потому что программа достигла размеров в несколько тысяч строк, а каждая строка в длину имела несколько экранов компьютера. Я так и не смог закончить игру, выпустив лишь демоверсию в две стадии. Хотя этот релиз, тоже был не плох, с учётом того, что я был девятиклассником, работал на паскале, программе не шибко расположенной для написания игр, с учётом того, что никто никогда меня не учил как делать правильно, и я всё придумал сам. Каждый момент, каждое уравнение. А это не так то просто, хотя бы заставить программу слушаться кнопок клавиатуры. Типа нажал "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. Потому что на машинном языке написать сложение двух и двух, или умножение три на три, куда сложнее, чем на листочке бумаги. И я начал сидеть, и это заняло у меня кучу времени, и я посвятил себя этому, тупому сидению за компьютером. Я стал меньше играть, я не общался с девушками, как другие мои одноклассники, хотя варианты у меня были, и весьма достойные. Одна из моих одноклассниц, весьма красивая и умная особа старательно пыталась меня подцепить, даже в шахматы играть научилась, и не плохо. По крайней мере, со всего класса, она играла в шахматы лучше всех, кроме меня.
Но тогда я этого не оценил, я жил в ином мире, в... Не знаю, можно ли назвать тот мир полезным, достойным. Думаю, нет. Я тогда не делал ничего, я не трудился на благо страны, я просто тупо сидел дома и тупо в тупом языке писал тупую программу. Программу способную к саморазвитию. Я довольно быстро понял, что написать искусственный интеллект, который сразу стал бы умным, наверное, не возможно, тем более на winhex моими силами. И я поставил себе иную задачу, я хотел написать маленького червя, который бы мог анализировать данные и изменять себя. Понимать. Это трудно объяснить. Но, в общем, я писал программу новорожденного ребёнка. Изначально ребёнок не умел говорить, и не понимал слов, всему его нужно было учить. Но учить, не прописывая в winhex каждое действие, типа, если а=1, то делай так, а если а не равно то делай иначе, а готовыми модулями. Эти модули он сам должен был для себя создавать, автоматически прописывая машинным языком функцию выбора самостоятельно, без моего участия. То есть я писал if... А он сам переводил всё в биты, на что winhex в принципе не способен...
Уроки закончились, девчонки поздравляли нас с 23им февраля, Оксана подошла ко мне и надела на меня медальку с какими-то китайскими знаками, на красной нитке. Я улыбнулся, но ничего не сказал, впрочем, такие медальки они дарили всем пацанам. Мы отошли от девочек и стали одеваться, Павел Инчиков обратился ко мне:
-Валер, ну что, мы идём тут отдыхать всем классом, если хочешь с нами, просто мы тут сбрасываемся по сто рублей, но ты не пьёшь, так что можешь пятьдесят.
-Нет, я не пойду, извини Павел, ты же знаешь, я не хожу на вечеринки.
-Ну, иногда, ты ходишь, тем более вон кой кто, будет очень рад сходить с тобой. - Он кивнул на Оксану, а потом на Елену. Впрочем, Елена не считалась мечтой любого парня в нашем классе, скажем так очень мягко.