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

User Tag List

Страница 16 из 23 ПерваяПервая ... 121314151617181920 ... ПоследняяПоследняя
Показано с 151 по 160 из 221

Тема: ROM-формат: автозапуск, защита, секреты

  1. #151
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,116
    Спасибо Благодарностей отдано 
    795
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    403 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не помню где я слышал, но засело в памяти, что дескать у Вектора такой крутой формат, что блоки можно в любом порядке и сколько хочешь раз. Я вроде знаю, что это не совсем так и в этой теме это уже не раз обсуждалось. Но я все же проверил еще раз сам и пришел к тем же выводам, что и предыдущие исследователи. Два важных принципа стандартных загрузчиков: 1) номера последовательных блоков обязаны быть равны (повтор) или уменьшаться на один (нумерация идет от максимального до 1) и 2) перейти к очередному блоку невозможно, если текущий не был загружен полностью. Понятно, что альтернативные загрузчики могут грузить более расслабленно, но если делать какой-то трюк для стандартного Вектора, рассчитывать на это нельзя.

    Ограничение, причем двойное (ах ты номер увеличил, а данные пропустил, ну так вот тебе пункт 2), мне кажется совершенно бессмысленным. Как-то вот просто чтобы было "тупо зло". Зачем мне это я не знаю, видимо просто внутреннее неприятие зла
    Больше игр нет

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

  3. #152
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,844
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,821
    Поблагодарили
    1,045 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ограничения есть, но все же формат сравнительно гибкий, видео Tim0xИ, которое теперь недоступно, меня в свое время впечатлило.

  4. #153
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,116
    Спасибо Благодарностей отдано 
    795
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    403 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Это другое, подблоки можно грузить в произвольном порядке и грузить данные поверх экрана можно, если при этом не забывать включать в эти данные то, что загрузчик распознает, как "блок загружен". Но вот целые блоки переставить местами, или например загрузить блок по адресу 0, а другой по адресу $8000 -- никак, ни за что. Опять же, в этом не много практического смысла было бы в любом случае, но чему служит такое напряженное отношение к последовательности блоков я тоже понять не могу.

    Тут можно поспекулировать, что если мы сопротивляемся дефектам на пленке, например, повторять блоки друг за другом, то есть вероятно в одной области повреждения, может быть менее надежно, чем повторять запись целиком, когда повторные копии физически отстоят друг от друга на большом расстоянии. Хотя психологически это не воспринимается так эффектно, конечно. Это же тогда просто вторая копия.

    У меня есть версия, что может быть фрагменты кода как-то повторно использовались в возможных экспериментах с ЛВС и они может быть боялись, что допустим будут принимать пакеты не тому адресату, но почему бы тогда не включить в формат пакета собственно адресата. В общем это левая идея.

    Есть еще загадочный фрагмент кода по крайней мере в одной из версий загрузчиков (который называется newrom v(2.0)), который делает так:
    Код:
            ; пересылка 32 байт (с очисткой источника?)
            ; h = &src[0]
            ; b = &dst[0]
            ; в процессе производятся странные ритуалы - может быть это связано с кодом в ПЗУ? не понятно
            PUSH    D       ; push: d = число блоков e = cs0
            PUSH    B       ; push: b = org_hi
            INX     H       ; HL=нач.данных (ABUFF + 2, 32 байта, остаеется еще checksum_data)
            LXI     D,207EH ; из буфф. в озу  d = 32 байта, e = $7e = битмап столбика в карте загрузки 
    LOA14:  MOV     A,M     ; a = *src -  взять из буфф.
            STAX    B       ; *dst = a - поместить в озу
            LDAX    B       ; a = *dst - взять из озу  -- ну зачем это все ?.. 
            XRA     M       ; a ^= *src -  чего это все ради? может быть потому что ПЗУ?
            MOV     M,A     ; *src = a  -- что? -- уст.ошибку в буфф.
    LOA15:  INX     H       ; src++
            INR     C       ; dst++ (только младший байт, мы внутри блока B) 
            DCR     D       ; счет байт
            JNZ     LOA14   ; D<>0
            POP     B       ; восст.(BC)
            MOV     L,C     ; (BC)=(HL)
            MOV     H,B     ; --//--
    тут вперемешку фарш из комментариев из архива с моими. Понятно, что так ничего не понятно: это процедура окончательного копирования прочитанного подблока с уже верифицированной контрольной суммой из буфера $DED0 (многозначительно, исп. el dedo = палец) в память. Казалось бы, можно ли тут изобрести что-то новое? Но вот чему могли бы служить инструкции ldax b \ xra m \ mov m, a, кроме как быть частью какого-то мрачного ритуала ? Комментарий "уст.ошибку в буфф." наводит мысли на то, что предыдущий исследователь тоже уже слишком долго вглядывался в бездну.
    Больше игр нет

  5. #154
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,844
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,821
    Поблагодарили
    1,045 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    чему служит такое напряженное отношение к последовательности блоков я тоже понять не могу.
    Я бы поставил на то, что авторы хотели побыстрее написать загрузчик влезающий в 512 байт и упростили себе задачу.
    Цитата Сообщение от svofski Посмотреть сообщение
    Но вот чему могли бы служить инструкции ldax b \ xra m \ mov m, a, кроме как быть частью какого-то мрачного ритуала ?
    Если все без ошибок (чтение из памяти и запись в память), то в итоге область источника будет обнулена.

  6. #155
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,116
    Спасибо Благодарностей отдано 
    795
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    403 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Если все без ошибок (чтение из памяти и запись в память), то в итоге область источника будет обнулена.
    Хорошо, тогда у меня такие вопросы:
    - обнулена область будет при отключенном ПЗУ или адресах, куда ПЗУ не отображается. При включенном ПЗУ в младших адресах мы считываем назад не то, что записали. Значит загрузка в младшие адреса -- это "ошибка" ?
    - что если все же с ошибками? Разве это тест ОЗУ? Может быть я не нашел, но вроде бы область буфера на нули нигде не проверяется.

    Но в общем я согласен, что время было ограниченно, а средства разработки неприступны. Скорее всего замариновали ту версию, которая наконец заработала.

    Последовательность загрузки все же по-моему задачу не упрощает. Это больше похоже на ложную цель, не знаю есть ли у этого какое-то классическое название. Когда ты при выполнении задачи зацикливаешься на достижении чего-то, что почему-то запало как нечто архиважное, но на самом деле не имеющего к делу никакого отношения.
    Больше игр нет

  7. #156
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,844
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,821
    Поблагодарили
    1,045 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    - обнулена область будет при отключенном ПЗУ или адресах, куда ПЗУ не отображается. При включенном ПЗУ в младших адресах мы считываем назад не то, что записали. Значит загрузка в младшие адреса -- это "ошибка" ?
    - что если все же с ошибками? Разве это тест ОЗУ? Может быть я не нашел, но вроде бы область буфера на нули нигде не проверяется.
    А я не смотрел newrom v(2.0), возможно это предполагаемое обнуление (или необнуление в случае пересылки в область пзу) никак и не проверяется дальше. Вещь в себе. Может бездумно скопипастили с другого компа фрагмент.

  8. #157
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,116
    Спасибо Благодарностей отдано 
    795
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    403 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ага. Мне просто он попался под руку. Не нашел с ходу записи с прошлого разбора загрузчиков, когда делал автостарт для loadfm. Заглянул и удивился.
    Больше игр нет

  9. #158
    Veteran
    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,657
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    301
    Поблагодарили
    212 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А мне кажется, что это "защита" загружаемой информации.
    Штатный загрузчик принимает данные с ленты и помещает их в буфер на экране. Это потенциальная уязвимость. Поскольку данные можно переписать с экрана, и восстановить их даже если они защищены от копирования.
    Собственно так вскрывались начальные загрузчики программ, записанных на ленту в собственном формате... их загрузчик переписывался из экранного буфера на листочек, набирался, модифицировался, и игрушка копировалась.
    А тут, экранный буфер практически сразу после заполнения модифицируется (при его копировании на положенное место), и данные "переписать" значительно сложнее.
    Я так думаю.

  10. #159
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,116
    Спасибо Благодарностей отдано 
    795
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    403 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от KTSerg Посмотреть сообщение
    их загрузчик переписывался из экранного буфера на листочек, набирался, модифицировался, и игрушка копировалась
    Если их загрузчик по любому грузился стандартным загрузчиком, не было проще загрузить этот промежуточный загрузчик своим измененным не-стандартным загрузчиком и спокойно разобрать его устройство? Идея взламывать чего-то перерисовывая с экрана битмапы, со скоростью 50 кадров в секунду мне кажется достойным комментария на хабре.

    Ну и кроме того, неиспорченные данные ведь уже успели промелькнуть к этому моменту на экране по любому, значит их можно было успеть перерисовать.
    Больше игр нет

  11. #160
    Veteran
    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,657
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    301
    Поблагодарили
    212 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    ... Идея взламывать чего-то перерисовывая с экрана битмапы, со скоростью 50 кадров в секунду мне кажется достойным комментария на хабре.
    На заре, даже кваза ещё не было. Выкручивались как могли. До получения исходников начального загрузчика или хотя-бы самого кода загрузчика было ещё ой как далеко.
    А написать амому загрузчик с лены, это не тривиальная задача, даже имея описание формата ром-а в Вектор-Юзере.

    Ну и кроме того, неиспорченные данные ведь уже успели промелькнуть к этому моменту на экране по любому, значит их можно было успеть перерисовать.
    Когда данные не уничтожаются, то есть достаточно времени нажать БЛК+ВВОД, что-бы "поймать" кадр с нужным битмапом, перед тем как он будет переписан новыми данными, а вот когда он сразу после получения уничтожается (при копировании), поймать будет значительно сложнее.
    Для современных технологий, знаний, и опыта, такой "финт" конечно выглядит не понятно, или наивно. Но если-бы такое было изначально в штатном загрузчике...

    Я только не понял, причём тут 50 кадров в секунду?

Страница 16 из 23 ПерваяПервая ... 121314151617181920 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Секреты Last Battle
    от captain cobalt в разделе Игры
    Ответов: 9
    Последнее: 18.03.2017, 05:08
  2. Защита авторских прав.
    от multimax в разделе Разный софт
    Ответов: 27
    Последнее: 10.02.2008, 11:51
  3. автозапуск .SCL в Spin & Spectaculator
    от ultra в разделе Эмуляторы
    Ответов: 0
    Последнее: 10.02.2008, 06:07
  4. Секреты в Soldier of Fortune
    от kmatveev в разделе Игры
    Ответов: 2
    Последнее: 14.09.2005, 14:54

Ваши права

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