bash.im ithappens.me zadolba.li
7955

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

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

asm
xor eсx,eсx
push 7C8xxxxxh
push eсx
ret
end;

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

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

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