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

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

CJ Pusher (lapkarelief@mail.ru)

Ты думаешь, конечно, что ASM - это привилегия избранных, суперсложная, нереально неземная вещь и что ты не будешь в силах въехать в нее никогда. Не думай так - эту мысль распространили специально некоторые недобросовестные разработчики лицензионного программного обеспечения в целях борьбы с конкурентами и компьютерными (о Боже, как можно произносить это ужасное слово) пиратами (прямо как в средние века - пираты атакуют мирные корабли и, вместо ядер, стреляют из пушек компьютерами - ужас!). ASM на самом деле - белый и пушистый и очень даже приятный. Ты сможешь въехать в его суть с первого или со второго раза. Несколько простых и очень полезных примеров помогут тебе в этом. Все что тебе понадобится - это компьютер, причем только PC (если же у тебя компьютер Макинтош, то его придется выбросить и купить новый PC), программа tasm.exe (можно masm.exe - если ты любишь Microsoft, но это маловероятно), программа tlink.exe (можно link.exe - то же самое, что и для masm'а). Не забудь также перезагрузиться в режиме эмуляции MS-DOS, чтобы избежать неприятностей с повисанием виндов etc.

Пример 1: Хау ту ребут (Kak perezagruzitza)

Otchen prosto. Есть три похода к этой процедуре. Первый: нажать Ctrl+Alt+Del. Если это не помогает, то можно нажать кнопку Reset на корпусе компьютера. И, что называется, "для утонченных натур" есть третий способ - написать прогу, в нашем случае на ASM'е. Сначала тебе придется набить с помощью текстового редактора вот такой файл:

model tiny

.code

org 100h

start:

jmp dword ptr reboot

.data

reboot dw 0ffff0000h

end start

Сохрани этот файл и дай ему расширение asm. Чтобы запустить эту прогу, надо будет этот файл ассемблировать и скомпоновать (не боись, в нашем случае это то же самое, что и "откомпилить"). Ассемблируют все нормальные люди с помощью tasm.exe или masm.exe. Допустим, что у тебя tasm, тогда набери в командной строке команду tasm имя_файла.asm, чтобы его ассемблировать. Если ты все набрал правильно, то в текущем каталоге появится файл с именем исходника, но с расширением obj. Это объектный код нашей проги. Тебе не надо знать, что такое объектный код, для тебя это всего лишь шаг на пути от исходника на ASM'е к exe'шнику или com'у. Получив obj файл, его надо скомпоновать. Это делается с помощью tlink.exe (link.exe). Введи такую команду: tlink /t имя_файла. /t значит, что ты хочешь получить на выходе файл com, а не exe. Если ты все сделал правильно, то появится готовая программа, запустив которую, получишь полный reboot, причем холодный.

Настало время объяснить, как все работает. Первое - ты, наверное, знаешь, как работает твой проц, если нет - то это несложно понять. Вся работа проца заключается в том, что он берет из памяти подряд числа, смотрит, какой команде они соответствуют и, если какой-то соответствуют, он эту команду выполняет. Если число не соответствует никакой команде - проц виснет. То есть в проге на ASM'е ты должен расписать в нужном порядке команды проца, которые ты хочешь, чтобы он выполнил. Теперь представь, что ты только включил комп, чтобы поиграть или залезть в Инет. Как проц будет знать, откуда взять ему самую первую команду для выполнения? Естественно, никак. Просто разработчики компании Intel, когда в очередной раз в дупель упились в баре, за стаканом решили, что проц будет считывать первую после включения команду по некоему адресу. А потом решили в этом адресе поместить BIOS. Таким образом проц включается и сразу же попадает в BIOS, выполняет оттуда команды, которые и делают все то, что делает комп после включения или перезагрузки. Это наталкивает на мысль, что для software перезагрузки надо начать выполнять команды оттуда, откуда их начинает выполнять сам проц. Но как это сделать? Это тоже просто, ведь разработчики компании Intel сделали нам великий подарок - команды перехода. Они заставляют проц выполнять команду, которая лежит в том месте, где ты ему скажешь: по нужному тебе адресу (типа goto в Бейсике). Благодаря им ты можешь запускать весь софт на своем компе и переключаться между приложениями в виндах. А раз так, то чтобы перезагрузить комп, понадобится пирога всего из одной команды - переход туда, где лежит первая команда проца. Именно эту прогу ты только что у себя запустил.

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

загрузка...
Cпец Хакер #075Cпец Хакер #074Cпец Хакер #073Cпец Хакер #072Cпец Хакер #071Cпец Хакер #070Cпец Хакер #069Cпец Хакер #068Cпец Хакер #067Cпец Хакер #066Cпец Хакер #065Cпец Хакер #064Cпец Хакер #063Cпец Хакер #062Cпец Хакер #061Cпец Хакер #060Cпец Хакер #059Cпец Хакер #058Cпец Хакер #057Cпец Хакер #056Cпец Хакер #055Cпец Хакер #054Cпец Хакер #053Cпец Хакер #052Cпец Хакер #051Cпец Хакер #050Cпец Хакер #049Cпец Хакер #048Cпец Хакер #047Cпец Хакер #046Cпец Хакер #045Cпец Хакер #044Cпец Хакер #043Cпец Хакер #042Cпец Хакер #041Cпец Хакер #040Cпец Хакер #039Cпец Хакер #038Cпец Хакер #037Cпец Хакер #036Cпец Хакер #035Cпец Хакер #034Cпец Хакер #033Cпец Хакер #032Cпец Хакер #031Cпец Хакер #030Cпец Хакер #029Cпец Хакер #028Cпец Хакер #027Cпец Хакер #026Cпец Хакер #025Cпец Хакер #024Cпец Хакер #023Cпец Хакер #022Cпец Хакер #021Cпец Хакер #020Cпец Хакер #019Cпец Хакер #018Cпец Хакер #017Cпец Хакер #016Cпец Хакер #015Cпец Хакер #014Cпец Хакер #013Cпец Хакер #012Cпец Хакер #011Cпец Хакер #010Cпец Хакер #009Cпец Хакер #008Cпец Хакер #007Cпец Хакер #006Cпец Хакер #005Cпец Хакер #004Cпец Хакер #003Cпец Хакер #002Cпец Хакер #001