Важная информация

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 14

Тема: Быстрое самоуничтожение

  1. #1
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,055
    Спасибо Благодарностей отдано 
    219
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Быстрое самоуничтожение

    Задача - как можно быстрее затереть содержимое памяти (чтобы хакер не успел нажать 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 секунды.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,550
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    264
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    167 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Прыкольно! Только для практической применимости (затереть только что отработавший кусок допустим защиты, "пока хакер не успел нажать NMI") нужно остановку предусмотреть. Типа dec+retz на #D5D5...
    Прихожу без разрешения, сею смерть и разрушение...

  4. #3
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,055
    Спасибо Благодарностей отдано 
    219
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Этот фрагмент срабатывает только тогда, когда обнаружена чрезвычайная ситуация (например, код обработки NMI в ПЗУ бейсика нестандартный) - в этом случае приходится жертвовать работоспособностью программы ради защищенности

  5. #4
    Activist
    Регистрация
    15.01.2005
    Сообщений
    201
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    инструкции в DE занести POP'ом.

  6. #5
    Banned Аватар для psndcj
    Регистрация
    22.02.2005
    Адрес
    triebkraft
    Сообщений
    712
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    может я и чайник - но почему бы не стирать PUSH'ами с конца подпрограммы? без всякого ADD.. быстрее же на порядок

  7. #6
    Activist Аватар для himik
    Регистрация
    19.04.2005
    Адрес
    Izhevsk
    Сообщений
    424
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    10
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    щас вспомню, блин, я уже и код то забыл, как команды правильно писать

    Код:
             ld sp,sux_1
    sux_1    pop hl
             ex (sp),hl
    такты и прочее считайте сами, мну не помнит ни фига.
    Последний раз редактировалось himik; 21.09.2007 в 20:54.
    Himik's ZxZ/PoS-WT
    Izhevsk. Russia. Planet 'Earth'. Sun system.
    The Pusher. Crack music system.
    Turbo-Sound at 1995 year.

  8. #7
    Activist
    Регистрация
    15.01.2005
    Сообщений
    201
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    psndcj, расшифруй - что сказал?

    himik, у тебя медленно (29 тактов на 2 байта) забивает вперед память и сбрасывается на 0 адресе пзу

  9. #8
    Activist Аватар для himik
    Регистрация
    19.04.2005
    Адрес
    Izhevsk
    Сообщений
    424
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    10
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от char Посмотреть сообщение
    psndcj, расшифруй - что сказал?

    himik, у тебя медленно (29 тактов на 2 байта) забивает вперед память и сбрасывается на 0 адресе пзу
    зато коротко
    в STS обман хорошо вставлять, пока страницу не обновишь при трассировке фиг увидишь подмену...
    Himik's ZxZ/PoS-WT
    Izhevsk. Russia. Planet 'Earth'. Sun system.
    The Pusher. Crack music system.
    Turbo-Sound at 1995 year.

  10. #9
    Veteran Аватар для valeron
    Регистрация
    19.11.2006
    Адрес
    г.Слоним Гродненской области
    Сообщений
    1,283
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от himik Посмотреть сообщение
    зато коротко
    в STS обман хорошо вставлять, пока страницу не обновишь при трассировке фиг увидишь подмену...
    Хитр! А главное - коварен!
    Только к чему эти подстраховки если в эмуляторе, в том же Анрыле можно посмотреть все что хочешь и сохранить снапшот. В чем актуальность?

  11. #10
    Activist Аватар для himik
    Регистрация
    19.04.2005
    Адрес
    Izhevsk
    Сообщений
    424
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    10
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от valeron Посмотреть сообщение
    Хитр! А главное - коварен!
    Только к чему эти подстраховки если в эмуляторе, в том же Анрыле можно посмотреть все что хочешь и сохранить снапшот. В чем актуальность?
    ну это же не сию минуту придумано
    я это из недр башни своей вытащил, давным давно, когда писюков еще столько не было, когда свопились софтом через снейл мейл, а интернет был чем-то заоблачным...
    мы все разбирали в ручную в том же STS, и вот чтоб обходить таких умельцев мы делали разного рода защиты. Сей код кусочек защиты, троссируя которую на обычном реале, ты не замечаешь подвоха, а он есть
    Himik's ZxZ/PoS-WT
    Izhevsk. Russia. Planet 'Earth'. Sun system.
    The Pusher. Crack music system.
    Turbo-Sound at 1995 year.

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •