Просмотр полной версии : Коллеги, а как делалась защита от волшебной кнопки ?
ram_scan
18.05.2019, 15:35
Я в свое время накопал какую-то переменную в области переменных, которая гарантированно портилась (уж не помню за давностью времен), поэтому после отгрузки периодически проверяя ее программы мои вылезали на выдачу сообщения. Переменная эта попадала испорченной и в снапшот, поэтому снапшот тоже оказывался нерабочим (хотя его можно было при желании отлечить).
Но у меня есть смутное воспоминание, что какая-то из Родионовских тулзей по волшебной кнопке вылетала в это сообщение сразу, еще до отгрузки, а отгрузка не выполнялась вовсе. Это я что-то перепутал, а если нет то любопытно как это было сделано ?
ram_scan, региcтр i #41 , или восьмую страницу памяти тереть , да думаю где то по старым журналам куча инфы.
Но у меня есть смутное воспоминание, что какая-то из Родионовских тулзей по волшебной кнопке вылетала в это сообщение сразу, еще до отгрузки, а отгрузка не выполнялась вовсе. Это я что-то перепутал, а если нет то любопытно как это было сделано ?
программа должна быть хитро написана и это возможно при стандартной прошивке.
стек практически постоянно находится в начале экрана.
после magic`a точка возврата считается из ПЗУ (в его конце полно #FF)
а там #FFFF JR
#0000 #F3
ну а дальше код перехвата
Barmaley_m
18.05.2019, 22:43
Ячейка была #5C00, после отработки Magic туда гарантированно записывается число #C9.
А такая защита, которая не позволяет делать отгрузку вовсе, основана на том, что обработчик Magic из ПЗУ TR-DOS бездумно и активно пользуется стеком. В частности, в начале своей работы он сохраняет туда кучу значений, а потом делает множество вложенных вызовов подпрограмм.
Таким образом, если стек размещен в ПЗУ, то первый же возврат из подпрограммы в недрах TR-DOS приведёт к возврату на неправильный адрес (т.к. стек в ПЗУ, и правильный адрес возврата не может быть туда записан при выполнении команды CALL) и сбою.
Но этот сбой можно контролируемо перехватить. А именно, как верно написал goodboy выше: размещаем стёк близко к началу экранной области. Тем самым мы сами можем пользоваться стеком в некоторой мере. Когда срабатывает Magic, то в стек записывается куча значений, и он начинает указывать на ПЗУ. А там, в конце прошивки TR-DOS, размещено много #FF. Первый же возврат из подпрограммы происходит по адресу #FFFF, туда ставим команду JR, которая попадает на адрес #FFF4, ну а туда уже размещаем код обработчика Magic, где делаем что угодно (издеваемся над пользователем).
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot