#7955: Ядро ранено, урок убит

13:00 06.12.2011, IT happens


Изучали в колледже Дельфи, хотя к тому времени почти все уже знали ассемблер. Молодой, но грамотный препод набирает программку, демонстрирующую работу с сетью, попутно объясняя всё и выводя картинку через проектор на стену класса. Звонит телефон, и препод выходит из кабинета. За это время наш гений вносит изменения в исходник, добавив пару ошибок, несколько десятков табов и код:


asm

xor eсx,eсx

push 7C8xxxxxh

push eсx

ret

end;


Когда препод вернулся и попытался запустить программу, посыпались ошибки. Минуты две было потрачено на поиск и исправление багов. Удачно скомпилив программку, препод уже надеялся показать её работу, но при запуске сразу открывался отладчик.


Препод тщательно проверил ещё раз исходник программы и стал изучать вывод отладчика. Как знаток ассемблера, препод проверил вершину стека, чтобы увидеть адрес, откуда вызывается код. Но наш гений не зря поставил push 7C8xxxxxh, нарочно введя в заблуждение адресами из kernel32.dll и слегка запутав код.


Вот так и прошла пара: мы играли в «морской бой», а преподаватель ковырялся в отладчике.



Загрузка...