Вот оригинал, что говорил breeze в "защищённой прессе". А далее уже там начались безуспешные поиски не битой версии журнала. Только название журнала - Welcome Press #2, естественно.
Последний раз редактировалось Rindex; 19.06.2009 в 22:11.
Может, мы обидели кого-то зря,
Сбросив пару лишних мегатонн,
И горит зелёным пламенем земля,
Там, где был когда-то Пентагон!..
Profi-576 v3.2/AY-3-8912A GI/FDD-5.25'
Немного опишу свою защиту im2REMix.
Все начинается в бейсике, где путем подмены № оператора для RETURN происходит достаточно банальный запуск кода, следующего за REM. Мелочи типа отличия реальных адресов от визуальных даже не буду упоминать )
Далее в коде идет замена адреса тела бейсик программы, которое находится в адресном пространстве сохранной переменной, идет замена в стеке адреса возврата на № оператора.
Следует невнятный и не очевидный возврат в бейсик, подмена адреса потока вывода на экран, вновь подменяется номер оператора для return на оператор, следующий после REM, запуск конечного кода происходит по команде PRINT `USR0, где usr0 - переменная которая ложно заменяется в раннее выполненном коде на что то, имеющее вид осмысленного и адекватного, а на деле нужна лишь инициализация видео вывода, что достигается символом "`"
А! Вспомнил!
Там еще поток обработки ошибки подменяется, и если не учесть подмененный видео поток идет ложная ветвь кода, вызванная сообщением об ошибке - "переменная не найдена"
А сама переменная пытается замениться стринговой, якобы дающей право запустить код.
Т.е. выполнение бейсика происходит не однократно, тело бейсика находится в разных адресах, и каждый раз переход в код и возврат в бейсик выполняется весьма нетрадиционно.
Многочисленные ложные запуски приводят к кускам пересекающимся кода, которые в итоге выводят на ксорки не имеющие адекватного исполнения, т.к. привязаны к IM2 и R
Богато используются дефолт значения регистров и переменных (бейсик и системных).
Адресация IX,IY + недокументированные команды.
Выполняется код, проходящий через текстовую надпись в бейсике.
Используются штатные куски ПЗУ, даже, простигоподи, чертов язык калькулятора используется.
После реального запуска кода идет сложный, имеющий вид невнятного, пересекающийся с уже ранее исполняемыми (в том числе - ложные ветви) участками кода. Код путанный и самозаменяемый по ходу выполнения. Код петляет несколько циклов прерываний.
Наличие конструкций типа LDIR с перекрытием самой себя, отхватыванием по im2 зависшего длинного цикла, пространные куски самогенерируемого кода, недокументированные команды достаточно усложняют понимание.
В итоге - выход на ксорки, которые защищены от переноса в памяти, самомодифицируемы и защищены привязкой к R, что делало невозможным их отладку до выхода STS
Ксорок было что то порядка 30-40 шт. )
Ксорки ставились автоматически путем подсчета счетчика R для сгенерированной цепочки и параллельного написания ксорящей конструкции с учетом расчета абсолютной привязки и коррекции по R.
В итоге- выход на лоадер сектора, защищенного по фиксированному ключу, а вот это самое слабое звено всего процесса.
Сие творение писалось долго и кропотливо, местами – в два лица. Богато используется опыт снятия фирменных защит.
Цель была одна – порадовать истинных взломщиков компиляцией чужих и собственных разработок.
Последний раз редактировалось klondike; 28.07.2009 в 17:59.
написано заманчиво
2klondike: А "живой" защиты не осталось, чтобы посмотреть так сказать в действии?)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Конечно осталась!
В разделе RIP Group - http://zxaaa.untergrund.net/RIP.html
На счет наличия последней версии не уверен, поэтому не описывал ее тонкости:
В последней версии была защита от nmi путем размещения минимально возможного стека в экранной области.
Так же была реализована защита от популярной прошивки, не помню ее название, там где ресет - вызывал выход в бейсик и по nmi был размещен простенький монитор, плюс в бейсике были команды +- для скорости tape загрузки, и по * вызывался все тот же монитор.
При нажатии на ресет был реализован переход по нужному адресу с выводом сообщения "nmi/reset pressed"
Так же у меня на образах, любезно перенесенных с реала alexeenko, сохранилась утилита, которая ставила защиту.
Сегодня уезжаю в отпуск, вернусь 14.09 - могу выложить.
Звучит очень заманчиво!
Боюсь, что самым сложным при создании такой защиты было написание протектора, т.е. программы, которая ставит все эти ксорки.
Держу пари, что у автора защиты была также книга Яна Логана и Френка О Хары "Полный дизассемблер ПЗУ".
К сожалению, исполнение текстовых строк из ПЗУ сделает защиту неработоспособной на иных прошивках, кроме стандартной.
Жаль, в те времена не было так распространено самогенерирование кода и полиморфные ксорки, как сейчас!
Уже лень делать какую-либо защиту на тех принципах![]()
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)