Читаем Как захватить Вселенную. Подчини мир своим интересам. Практическое руководство для вдохновленных суперзлодеев полностью

Радости компилирования высокоуровневых языков

Любой, кто писал код на любом высокоуровневом языке, наверняка уже мысленно сочиняет гневное письмо в мой адрес из-за фразы, что «это просто сработает». Эти люди знают, какими неуловимыми могут быть баги. Когда-то давно, занимаясь научной работой, я четыре часа разбирался, почему моя программа не хочет компилироваться, и наконец заметил, что в одном месте я случайно отпустил клавишу Shift и поставил вместо точки с запятой двоеточие, а на том языке все строчки должны были заканчиваться точкой с запятой.

Эта замена, случившаяся, скорее всего, из-за того, что я на микросекунду быстрее убрал палец с кнопки, и отличавшаяся всего на один пиксель, убила для меня полдня. Короче, компьютеры – это круто!

Поэтому программы и уязвимы перед злодейским планом, который вы провернете.

Низкоуровневые пакости для высокоуровневых языков

Уязвимость спрятана у всех на виду. Когда пишешь код на любом высокоуровневом языке, доверяешь компьютеру аккуратно преобразить написанное в двоичный код. Чтобы влезть в чей-то код, достаточно влезть в компилятор. Есть очевидный способ – плюс коварный, практически незаметный способ.

Давайте сначала рассмотрим очевидный.

Вот что происходит, когда вы компилируете приложение, написанное на высокоуровневом языке:



Допустим, вы проникли в компьютер жертвы через интернет и тайно изменили компилятор так, чтобы, компилируя с командой Print, он добавлял единицу к любому выведенному числу. И теперь, когда кто-нибудь использует компилятор, процесс выглядит вот так:



Внезапно, хоть кодировщики не наделали ошибок, все, что они создали с измененным компилятором, будет радостно извещать мир, что 10 + 20 = 31.

Приложения станут работать так, как не задумывалось, а бедные программисты-жертвы не смогут найти и исправить глюк «10 + 20 = 31» в своем коде, куда они посмотрят первым делом, поскольку изменения не там. Причина таится в исходном коде компилятора.

Конечно, они довольно быстро сообразят, что здесь что-то не то, ведь у их программ откровенная и заметная ошибка: каждое число больше на единицу. Но что, если действовать тоньше? Что, если вместо того, чтобы возиться с командой Print, сделать так: во всех ситуациях, когда компилятор обнаружит код с паролем, он проследит, чтобы заодно работал и пароль «райанкрутой». (Можно использовать свое имя, но скромно замечу, что мое на какое-то время собьет власти с вашего следа: мой вам подарок.)

Сделайте так – и получите то, что принято называть «бэкдор», или «черный ход», в любую компьютерную программу, которую создают с вашим компилятором: термин значит, что ваши жертвы могут как угодно запирать, ставить на сигнализацию и укреплять переднюю дверь – это не важно, ведь у вас есть секретная дверка, о которой никто не знает.

Не важно, насколько талантливы разработчики и как безопасен их пароль: все, что соберет ваш злодейский компилятор, примет пароль «райанкрутой» и разработчики никогда об этом не догадаются, если только случайно тоже его не попробуют.

Тут вы наверняка подумали: «Но ты же сказал, что компиляторы – такие же компьютерные программы, как и любые другие, а значит, любой может заглянуть в исходный код компилятора и найти мои изменения. Стоит им убрать ту часть, которая делает „райанкрутой“ паролем, и моему замыслу конец».

И вы правы: так может сделать кто угодно. Но вы сами сказали: компиляторы – такие же программы, как и любые другие.

И значит, они сами скомпилированы.

И вот тут – самый коварный момент.


Шаг 1

Начнем с того же трюка, с которым мы познакомились в предыдущем примере, – с добавления бэкдора «райанкрутой» в компилятор, но на этот раз изучим его поподробнее. Пока вы не взялись за дело, нормальный процесс компилирования компилятора выглядел вот так:



Как и в прошлый раз, вы измените исходный код компилятора, чтобы каждое созданное на нем приложение считало «райанкрутой» действующим паролем. И теперь компилирование компилятора выглядит так:



И вот, как и в прошлый раз, вы успешно создали злодейский компилятор, но вас точно так же поймают, когда кто-нибудь проверит исходный код, где все ваши изменения лежат на виду. Хорошо, что мы еще пока не закончили!


Шаг 2

Перейти на страницу:

Все книги серии Удовольствие от науки

Отпускается без рецепта. Лекарства, без которых нам не жить
Отпускается без рецепта. Лекарства, без которых нам не жить

Эта книга о легендарных лекарствах, которые можно найти в каждой аптеке и в каждой домашней аптечке, лекарствах давних и новых, производимых в России. О 100-летии отечественной фармацевтики и ее создателях. Первый пенициллин был получен именно в нашей стране еще в 1942 году. У нас были произведены уникальные вакцины, некоторые из них спасли человечество. Нам есть чем гордиться и в настоящем. Во многих препаратах, выпускаемых зарубежными производителями, угадывается влияние самой большой в мире российской химической коллекции веществ, используемых для создания новых препаратов. Перед вами небольшое медицинское расследование, захватывающий рассказ о легендарных лекарствах, спасших и спасающих Россию, о лекарствах, без которых нам не жить!

Полина Звездина , Константин Анохин , Елена Мекшун , Наталья Мушкатёрова , Алёна Григорьевна Жукова

Альтернативная медицина / Медицина и здоровье / Дом и досуг

Похожие книги

1991. Хроника войны в Персидском заливе
1991. Хроника войны в Персидском заливе

Книга американского военного историка Ричарда С. Лаури посвящена операции «Буря в пустыне», которую международная военная коалиция блестяще провела против войск Саддама Хусейна в январе – феврале 1991 г. Этот конфликт стал первой большой войной современности, а ее планирование и проведение по сей день является своего рода эталоном масштабных боевых действий эпохи профессиональных западных армий и новейших военных технологий. Опираясь на многочисленные источники, включая рассказы участников событий, автор подробно и вместе с тем живо описывает боевые действия сторон, причем особое внимание он уделяет наземной фазе войны – наступлению коалиционных войск, приведшему к изгнанию иракских оккупантов из Кувейта и поражению армии Саддама Хусейна.Работа Лаури будет интересна не только специалистам, профессионально изучающим историю «Первой войны в Заливе», но и всем любителям, интересующимся вооруженными конфликтами нашего времени.

Ричард С. Лаури

Зарубежная образовательная литература, зарубежная прикладная, научно-популярная литература / История / Прочая справочная литература / Военная документалистика / Прочая документальная литература