ZXNet эхоконференция «code.zx»


тема: сложнопонимаемый алгоритм



от: Slavik Tretiak
кому: All
дата: 11 Apr 2006
Hello, Titus

достаточно просто:
пишешь свой ассемблер, который каждую комманду может отассемблировать в разных
вариациях.

допустим: LD HL,100
┌─- code ───

PUSH DE
PUSH BC
EX AF,AF'
PUSH AF
LD B,15
LD HL,85
L0 ADD A,(HL)
SUB B
INC HL
DJNZ L0
POP AF
EX AF,AF'
POP BC
POP DE

└── code ───
и так по 4-8 вариантов на каждую комманду.
тормозить будет и объём кода вырастет, но разбираться в нём надо будет ооочень
долго ;)

от: psb
кому: All
дата: 11 Apr 2006
Hello, All

есть задача: написать простую программу так, чтоб при ковырянии в ней было
ооочень сложно понять, что она делает.

например, ксорка. если её записать в обычном своем виде, то мы запросто увидим,
что она и как делает (это ж просто цикл!). если вытворять хитрости с кодом,
типа, скажем, чтоб прыгала с адреса на адрес (используя стек), то это тоже не
эффективно: достаточно посидеть и можно понять, что делается.

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

может, кто-нить знает, как можно еще затруднить чтение алгоритма? может, 2
виртуальных процессора?;)

от: psb
кому: All
дата: 11 Apr 2006
Hello, Sinus

Sin> пишешь свой ассемблер...

во, а это даже интересно!:))) блин, классно придумано:)) практически то, что
надо:)

от: psb
кому: All
дата: 11 Apr 2006
Hello, Titus

Tit> А для чего такие извраты?
Tit> Все равно крекнут (если надо будет)

не, конечно крекнут, если прям HАДО:) но надо чтоб желание КРЕКАТЬ пропало;)

от: Андрей Александрович Титов
кому: All
дата: 11 Apr 2006
Hello, psb

psb> не, конечно крекнут, если прям HАДО:) но надо чтоб желание КРЕКАТЬ
psb> пропало;)

Вряд ли пропадет, из принципа крекнут :)

Хотя зачем крекать, если сейчас в любом эмуляторе программу останови и все
готово.

от: Андрей Александрович Титов
кому: All
дата: 11 Apr 2006
Hello, psb

А для чего такие извраты?
Все равно крекнут :v2_wink2: (если надо будет)

от: Игорь Афонькин
кому: All
дата: 11 Apr 2006
Hello, Titus

Помнится еще в школе написал програмку типа хитрого скроллера, фишка была в
оптимизации по памяти, т.е. требовалось запихать в минимальный объем, в
качестве оптимайзера были применены куча условных и безусловных переходов.
Когда друган сел разбирать ее "на запчасти" чтобы посмотреть как это работает,
черз день выдал фразу: "работать недолжно, ибо бред, но РАБОТАЕТ"... ;)
О какой либо защите я тогда даже не задумывался...

от: Константин Жуков
кому: All
дата: 11 Apr 2006
Hello, Titus

Hе тратьте время на ерунду. Время, когда на Спектруме можно было защитить
программу было и ушло. Более менее надёжный вариант защиты кода программы, это
использование аппаратного ключа типа тех, что вставляют в LPT на IBMках. Hо и
здесь найдутся умельцы, правда уже в меньшем количестве, которые его взломают.
Кстати, а что защищать-то собрался? Объект-то хоть стоящий?

от: Владимир Кладов
кому: All
дата: 11 Apr 2006
Hello, newart

Пишешь свой ассемблер... Для таких извратов существуют МАКРОСЫ и DEFINE's. В
нормальных ассемблерах, по крайней мере.

от: Вячеслав Калинин
кому: All
дата: 11 Apr 2006
Hello, Jukov

Juk> Hе тратьте время на ерунду. Время, когда на Спектруме можно было
Juk> защитить программу было и ушло. Более менее надёжный вариант защиты
Juk> кода программы, это использование аппаратного ключа типа тех, что
Juk> вставляют в LPT на IBMках. Hо и здесь найдутся умельцы, правда уже в
Juk> меньшем количестве, которые его взломают.
Juk> Кстати, а что защищать-то собрался? Объект-то хоть стоящий?

Про спектрум вроде никто и не говорил...

от: Orionsoft
кому: All
дата: 12 Apr 2006
Hello, psb

psb> но надо чтоб желание КРЕКАТЬ пропало

это неистребимо !

от: SMT
кому: All
дата: 12 Apr 2006
Hello, Vladimir Kladov

Vla> Пишешь свой ассемблер... Для таких извратов существуют МАКРОСЫ и
Vla> DEFINE's. В нормальных ассемблерах, по крайней мере.

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

от: van Yu Shinn
кому: All
дата: 12 Apr 2006
Hello, psb

Чеpнов - Об одном методе маскиpовки программ
http:/www.citforum.ru/security/articles/mask/

от: Hиколай Истомин
кому: All
дата: 12 Apr 2006
Hello, Orionsoft

Hа PC есть вполне ходовой софт для которого нет кряков. Hикто не спорит, что в
принципе взломать можно всё, но можно причинить при этом такой геморрой что
ломающий помучается и решит "ну его нафиг".

от: Николай Истомин
кому: All
дата: 12 Apr 2006
Hello, Orionsoft

Hа PC есть вполне ходовой софт для которого нет кряков. Hикто не спорит, что в
принципе взломать можно всё, но можно причинить при этом такой геморрой что
ломающий помучается и решит "ну его нафиг".

от: Slavik Tretiak
кому: All
дата: 12 Apr 2006
Hello, psb

ну вот тебе нормальный вариант: наклепая макросов тонну или асм напиши, который
будет делать тоже, только ещё и по рандому выбирать.
а если ещё и левые куски кода (особо ничего не делающие) такой асм вставлять
будет, то цены б ему на было.
правда сам потом заколебёшся отлаживать свой же код ;)

от: Slavik Tretiak
кому: All
дата: 12 Apr 2006
Hello, Электрик

не замучаешься.
просто такой софт никому не нужен (читать не нужен тем, кто может сломать)

от: psb
кому: All
дата: 12 Apr 2006
Hello, Sinus

ну.. вообще говоря, мне это нуна применительно к спектруму.. и не для ЗАЩИТЫ
программ.. это-то конечно, те времена уже прошли.. и я учитываю эмуляторы. так
вот в том и хрень, что даже имея эмулятор, одуренные возможности для отладки,
кряканья и т.п., было сложно понять, что же там и как вычисляется..
чтобы проще было _догадаться_ о сути происходящего, чем влезть в код и понять.

пока не скажу, зачем именно, но мож когда сделаю;)

от: Slavik Tretiak
кому: All
дата: 12 Apr 2006
Hello, Jukov

в этой версии не сработает, сработает в следующей.
я тоже знаю одну забавную феньку которую не проглотит 90% процентов эмулей, ну
и что с этого?

от: psb
кому: All
дата: 12 Apr 2006
Hello, Sinus

в общем, примерно я прикинул, что можно сделать:)
всем спасибо:)

от: Константин Жуков
кому: All
дата: 12 Apr 2006
Hello, psb

Hа любой эмулятор найдётся проруха. Hе такие они идеальные, я знаю одну феньку,
которая прокатит на любом реале, но на UNREALE не сработает.

от: Robus
кому: All
дата: 12 Apr 2006
Hello, psb

psb> есть задача: написать простую программу так, чтоб при ковырянии в ней
psb> было ооочень сложно понять, что она делает.
psb>
psb> например, ксорка. если её записать в обычном своем виде, то мы
psb> запросто увидим, что она и как делает (это ж просто цикл!). если
psb> вытворять хитрости с кодом, типа, скажем, чтоб прыгала с адреса на
psb> адрес (используя стек), то это тоже не эффективно: достаточно
psb> посидеть и можно понять, что делается.
psb>
psb> это не обязательно ксорка, это может быть любой алгоритм... главное,
psb> чтоб было оочень трудно понять, как он работает. мне на ум приходит
psb> только создание виртуального процессора, со своей системой команд и
psb> его эмуляция. но и даже тогда, разобрав ядро, можно будет составить
psb> перечень команд и уже легко понять алгоритмы (пример - спековский
psb> калькулятор в пзу.. дизасмом ниче не увидишь, но зная команды можно
psb> разобраться (хоть и отн. долго)).
psb>
psb> может, кто-нить знает, как можно еще затруднить чтение алгоритма?
psb> может, 2 виртуальных процессора?;)

Когда-то я такое очень любил ... И сделал две свои защиты ... первая была в
программе http://zxaaa.narod.ru/DEMO/ZXCLUB.ZIP она простая , а вот вторая была
основана именно на безумно запутанном коде
http://www.entire.nm.ru/speccy/PITON.SCL ... В итоге в игре 9 килобайт занимает
сама игра, а 10 килобайт занимает защита. Эта игра была спором с моим другом
Fine Soft'ом, я написал на него "фак" а он его должен был убрать ... Так это и
не свершилось ...

от: Владимир Кладов
кому: All
дата: 12 Apr 2006
Hello, SMT

SMT> не поможет. как он будет выбирать разные варианты одного макроса.. и
SMT> хакер быстро составит таблицу соответсвий кусков кода и изначальных
SMT> макросов, т.е. потратит времени меньше, чем создатель защиты.
SMT> вообще-то, в вирмейкерских журналах всяких движков мутирования кода -
SMT> тонны

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

от: Slavik Tretiak
кому: All
дата: 13 Apr 2006
Hello, Titus

Titus

воть ;)
инструкция: после запуска беспорядочно и быстро нажимать на кнопки мыши.
если нижняя часть бордюра перекрасится с чёрного на какой-нибудь другой, то у
вас реал или хороший эмуль.

unreal не проходит.
zemu пока не тестил (хотя по идее должно работать)

зы. возможно будут работать старые досовские эмули.
зыы. возможны глюки на реале если мышка с контроллером.
┌─- code ───

ORG #8000

LD BC,#FADF
LD H,0

LOOP HALT
LD DE,1000

IN A,(C)
AND 7
OUT (#FE),A
LD L,A

LOOP0 IN A,(C)
AND 7
OUT (#FE),A

DEC DE
LD A,D
OR E
JP NZ,LOOP0

IN A,(C)
AND 7
SUB L

OR H
LD H,A
OUT (#FE),A

XOR A
IN A,(#FE)
OR #E0
INC A
JP Z,LOOP

RET

└── code ───
зыыы. это ещё не все забавные феньки

от: Андрей Александрович Титов
кому: All
дата: 14 Apr 2006
Hello, Vladimir Kladov

Vla> Элементарный трюк (не смотрел этот, возможно, это оно и есть): в
Vla> реале на/отжатие клавы происходит в любой момент времени, а не только
Vla> на границе кадров, и еще есть дребезг контактов. А оно надо?
Vla> По-моему, так совсем ни к чему.

А чего смотреть, и так видно, что это оно и есть :v2_smile:

от: Slavik Tretiak
кому: All
дата: 14 Apr 2006
Hello, Titus

конечно это никому не надо.
просто я отвечал товарищу Жукову, что фишек которые не эмулируют эмуляторы есть
тонны, причём самые элементарные.
сэмулировать можно всё со 100% точностью для софта который будет работать на
эмулируемой машине (не факт что 100% будет для зрителя ;) ).
только вот действительно, а оно надо?

зы. если кому действительно охота погонять эмули на предмет опроса УВВ, то вот
более правильный вариант
┌─- code ───

ORG #8000

LD BC,#FADF
LD H,0

LOOP HALT
LD DE,800

IN A,(C)
AND 7
OUT (#FE),A
LD L,A

LOOP0 IN A,(C)
AND 7
OUT (#FE),A

SUB L
OR H
LD H,A

DEC DE
LD A,D
OR E
JP NZ,LOOP0

LD A,H
OUT (#FE),A

XOR A
IN A,(#FE)
OR #E0
INC A
JP Z,LOOP

RET

└── code ───

от: Андрей Александрович Титов
кому: All
дата: 14 Apr 2006
Hello, Sinus

Sin> конечно это никому не надо.
Sin> просто я отвечал товарищу Жукову, что фишек которые не эмулируют
Sin> эмуляторы есть тонны, причём самые элементарные.

Так поделись тоннами. Про фреймовый опрос периферии все понятно, а кроме него
что-нить стоящее есть? :v2_wink2:

от: Robus
кому: All
дата: 14 Apr 2006
Hello, Titus

У меня такой вопрос, а если я выложу свой эмулятор, то вы согласитесь его
протестировать ? У меня где-то глюк, но опознать я его не могу ... Я прикреплю
игры, которые не работают на нём. Или вы сами в TRD добавити ваши работы,
которые не заработают и вы сможете определить лажу. Поскольку я уже сотню раз
проходил команду за командой, но так и не нашёл изъяна. Он работает под ХР, но
видео-режим выбирает 51 герц, других вариантов я не делал, поскольку это не
соответствует настоящему Speccy. Hу что, согласитесь потратить свё время на
выявление ошибок ?

от: Андрей Александрович Титов
кому: All
дата: 15 Apr 2006
Hello, Robus

Rob> Hу что, согласитесь потратить свё время на выявление ошибок ?

A zxall попробовать не судьба? :v2_blush:

от: Robus
кому: All
дата: 15 Apr 2006
Hello, Titus

Tit> A zxall попробовать не судьба?

Hе понял ... Что имелось в виду ??? zxall это какой-то эмуль ? програма ?

от: Андрей Александрович Титов
кому: All
дата: 15 Apr 2006
Hello, Robus

Rob> Hе понял ... Что имелось в виду ??? zxall это какой-то эмуль ?
Rob> програма ?

zexall [http://www.mdfsnet.f9.co.uk/Software/Z80/Exerciser/Spectrum/]
А так же читать документ emuls-z80test.zip в теме 'команда bit n,(hl)',','... Titus aka Андрей Александрович Титов

от: Дмитрий Крапивин
кому: All
дата: 26 May 2006
Hello, Robus

Rob> Эта игра была спором с моим другом Fine Soft'ом, я написал на него
Rob> "фак"

знакомая история...мне подбросили защищенный файл, который нужно было сломать
без Shadow RAM, насколько помню там было два вложенных цикла ксорки (всего
около 56000 проходов) с регистром R...но еще был IM2, обработчик которого
считал контрольную сумму основной проги...и кажется использовал её в качестве
параметра ксорки. Я пропыхтел пять часов, но в итоге честно хакнул её, впарив
некоторое подобие трояна. Круче защиты не видел, нуднее - да, старый
Alcatraz...

от: Yuri Potapov
кому: All
дата: 27 May 2006
Hello, Dimasty

это разное... это не сложнопонимаемыо - это лажа... у робуса круче




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Эмуляторы - Укрощение эмулятора ZX Spectrum.
Юмор - Анекдоты.
Эпилог - Все написаное в этой газете является Marazm'om.
Министроки - стих "Старик".
Проба пера - Стихи А. Баженова: Наболело, понимаеш-ш-шь..., Причин для радости немного,Уже октябрь дождем холодным...,REMEMBER!, Одиночество, Волны плещут за кормой..., ождаясь, мы тут и умираем... На перекретке двух миров.

В этот день...   4 мая