![]() |
Быстрое самоуничтожение
Задача - как можно быстрее затереть содержимое памяти (чтобы хакер не успел нажать NMI).
Вот так решил ее ASC: SELF_DESTRUCT: LD DE,0D5D5H LD HL,DESTRU LD SP,HL LD BC,-4 DESTRU: PUSH DE PUSH DE ADD HL,BC JP (HL) Команды PUSH DE заполняют память кодами D5 (PUSH DE). С каждым проходом цикла команд PUSH DE становится все больше. Таким образом, память затирается практически непрерывной серией команд PUSH, которые на Z80 являются наиболее быстрым способом записи в память. Можно заметить, что команд PUSH DE этим фрагментом генерируется больше, чем используется. Андрей Гетало (FOCAL Soft) придумал, как это оптимизировать: SELF_DESTRUCT: LD SP,DESTRU LD DE,0D5D5H DESTRU: PUSH DE LD HL,0 ADD HL,SP JP (HL) Теперь все коды D5 (PUSH DE), которыми заполняется память, выполняются при каждом последующем проходе цикла. Их количество растет экспоненциально (как 3^n). 64кб адресного пространства Z80 перетираются (если пренебречь последними командами цикла) за 32768*11 = ~360448 тактов. При частоте 3.5МГц это ~0,1 секунды. |
Прыкольно! Только для практической применимости (затереть только что отработавший кусок допустим защиты, "пока хакер не успел нажать NMI") нужно остановку предусмотреть. Типа dec+retz на #D5D5...
|
Этот фрагмент срабатывает только тогда, когда обнаружена чрезвычайная ситуация (например, код обработки NMI в ПЗУ бейсика нестандартный) - в этом случае приходится жертвовать работоспособностью программы ради защищенности :)
|
инструкции в DE занести POP'ом.
|
может я и чайник - но почему бы не стирать PUSH'ами с конца подпрограммы? без всякого ADD.. быстрее же на порядок
|
щас вспомню, блин, я уже и код то забыл, как команды правильно писать :)
Code:
ld sp,sux_1 |
psndcj, расшифруй - что сказал?
himik, у тебя медленно (29 тактов на 2 байта) забивает вперед память и сбрасывается на 0 адресе пзу ;) |
Quote:
в STS обман хорошо вставлять, пока страницу не обновишь при трассировке фиг увидишь подмену... |
Quote:
Только к чему эти подстраховки если в эмуляторе, в том же Анрыле можно посмотреть все что хочешь и сохранить снапшот. В чем актуальность? |
Quote:
я это из недр башни своей вытащил, давным давно, когда писюков еще столько не было, когда свопились софтом через снейл мейл, а интернет был чем-то заоблачным... мы все разбирали в ручную в том же STS, и вот чтоб обходить таких умельцев мы делали разного рода защиты. Сей код кусочек защиты, троссируя которую на обычном реале, ты не замечаешь подвоха, а он есть :) |
| All times are GMT +4. The time now is 21:16. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.