ЖУРНАЛ ХАКЕР

ASM - проще некуда

Спецвыпуск Хакер, номер #004, стр. 004-090-3


Пример 2: Clear the CMOS

"Маленькая, да удаленькая", - говорят в таких случаях. Эта программка весит всего 9 байт, а пользы от нее - хоть отбавляй. Если у тебя BIOS AWARD, то держись - прога сбрасывает пароль и настройки SETUP'а. Теперь сбросить пассворд в BIOS'е так же просто, как его поставить! Записывай и ассемблируй.

model tiny

.code

org 100h

start:

mov al, 5eh

out 70h, al

mov al, 0

out 71h, al

ret

end start

COM-файл получается как в первом примере: tasm.exe+tlink.exe /t. Запусти его, перезагрузись и увидишь при загрузке сообщение типа CMOS checksum error - Defaults loaded. Как это чудо работает? Тебе нужно знать лишь строчки mov... и out... Что делает mov al, 5eh? Просто заносит число 5eh в al (move 5eh to al). А что такое al? Это один из так называемых регистров проца. Регистр - это такая ячейка в процессоре, в которую можно записывать разные числа, хранить их там, чтобы потом использовать. Регистров более 20 штук, и каждый имеет свое имя. Есть регистры вместимостью один, два или четыре байта. Размер AL - байт. Дальше - команда out 70h, al. Это команда вывода в порт числа. Порт - это как бы канал связи камня и внешнего устройства. Каждое устройство (винт, видеокарта, аудиокарта, etc) имеет свой порт, через который проц может управлять им. out 70h, al значит, что надо послать число, которое лежит в al в порт номер 70h. Для справки, порты 70h и 71h соответствуют CMOS'у. Чтобы программировать CMOS, надо сначала вывести в порт 70h то, что в CMOS'е ты хочешь изменить (дата, время, настройки винта, пароль), а затем вывести в порт 71h новое значение (дату, время, параметр винта etc). Здесь мы сначала выводим в порт 70h число 5eh, которое значит, что мы будем изменять настройку пароля on/off. Затем мы выводим в порт 71h ноль, что значит - пароль выключен (чтобы пароль включить, надо вывести единицу). Последняя строчка ret нужна, чтобы вернуться в ДОС - если бы ее не было, то в ДОС бы мы не вернулись и повисли бы.

Вота

Вот такие вещи можно писать на ассемблере. Теперь твоя очередь изучить его. Придется тебе также изучить аппаратные части твоего компа и сам процессор, так как без этого много на ASM'е не напишешь. Необязательно все знать и держать в голове - нужен просто хороший справочник. Предлагаю тебе юзать в этих целях Interrupt List Ральфа Брауна. Там куча разной текстовой инфы - все тянет мегов на пять-шесть. Надеюсь, твоя программерская потенция сильно возросла, и ты полон решимости теперь стать реальным кодером, так что соблюдай дозы ежедневного потребления пива и учи ассемблер. Успехов!

Проснись. Отныне и навсегда двери виртуального пространства для тебя открыты! Еще один шаг продвинул тебя на пути к почетному званию кул-хацкера - ты начал кодить. Запомни день, когда заработала твоя первая прога, и когда наступит день твоего первого взлома, ты подсчитаешь, сколько дней пройдет от кодинга до хака. Обычно это 120-180 дней, в течение которых раз пятнадцать придется переустановить винды, раз десять переформатировать винт и, наконец, раз пять сказать себе, что никогда больше не сядешь за свой поганый комп. Виной всему - первые попытки кодинга на ASM'е, которые заставляют процессор хохотать над твоими потугами, а тебя - радоваться каждой своей удачной проге.

Назад на стр. 004-090-2  Содержание