PDA

Просмотр полной версии : Детект эмуляторов



krt17
11.02.2018, 22:33
Простая программка обнаруживающая добрую половину эмулей. Точная эмуляция говорили они, ну да, ну да...

Bedazzle
11.02.2018, 22:49
Спектакулятор хвалит, на Эмузвин ругается.

krt17
11.02.2018, 23:03
По хорошему надо несколько раз понажимать, если будет хоть один 0, то точно эмулятор. Еще и на отжатие можно потестить... Анрил всегда детектится :)

zebest
11.02.2018, 23:25
50 раз потестил один и тот же эмуль) от 0 shit до 1822, ну и куча промежуточных. любую цифру наверное поймать можно.

- - - Добавлено - - -

нерелевантно

jerri
11.02.2018, 23:51
и чо оно тестит?

krt17
12.02.2018, 00:00
и чо оно тестит?

Смотрит в какой момент фрейма нажата клавиша, предполагается что рендер идет с начала фрейма и клава по факту опрашивается в самом начале один раз, выставляя порты на все 20 мс. Набросал проверить анрил, а оказалось что не он один такой кривой.

Spectramine
12.02.2018, 00:53
Мда, прикольно. До сих пор об этом не парился, для игр опроса клавы 50 раз в секунду хватает. Учту.

- - - Добавлено - - -

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

- - - Добавлено - - -


По хорошему надо несколько раз понажимать, если будет хоть один 0, то точно эмулятор. Еще и на отжатие можно потестить... Анрил всегда детектится :)

Ну, по-хорошему, и на реале можно ноль поймать, если повезет :)

- - - Добавлено - - -


50 раз потестил один и тот же эмуль) от 0 shit до 1822, ну и куча промежуточных. любую цифру наверное поймать можно.

- - - Добавлено - - -

нерелевантно

Это что за эмуль? Как раз разные значения говорят о хорошей эмуляции клавиатуры.

- - - Добавлено - - -

EmuzWin дает жару - в большинстве случаев дает 0, но довольно часто и другие значения.

krt17
12.02.2018, 01:26
Для некоторых эмуляторов наверное важным будет быстродействие хоста, возможно они выставляют актуальное значение портов, и если сам эмуль тормозной а тачка слабая то и будет как у zebest'а

ZXMAK
12.02.2018, 02:25
сделать эмуляцию такого поведения не сложно - запустить опрос клавиатуры в отдельном потоке, но смысла в этом особого нет. Только лишняя нагрузка на процессор.
Когда-то в ZXMAK клавиатура два раза за фрейм опрашивалась.

goodboy
12.02.2018, 11:01
сразу вспомнилась одна игра - там для чита надо было нажать в меню одновременно "metalkid"
PCклава - отдыхает.

b2m
12.02.2018, 19:49
Плохой тест. На мой самый плохой эмулятор ни разу не ругался :)

goodboy
12.02.2018, 19:55
вспоминаю что был какой-то трюк с засылкой определённых значений в регистр R
на реале данные в памяти точно портились.
эмулям такое не под силу.

Spectramine
12.02.2018, 20:32
вспоминаю что был какой-то трюк с засылкой определённых значений в регистр R
на реале данные в памяти точно портились.
эмулям такое не под силу.

По идее, если постоянно в цикле заносить в регистр R одно и то же значение, содержимое ОЗУ должно сыпаться на реалах. ULA обновляет медленную память, так что сыпаться должна быстрая. Это касается только фирменных машин, с регенерацией на процессоре. Был бы реал, проверил. Сэмулировать это тоже можно, в принципе. И даже вроде эмулятор ZEsarUX это делает.

Бука
12.02.2018, 22:45
PCклава - отдыхает.

Я эту грустную истину понял когда другу купили 386й и мы на нем попытались вдвоем Golden Axe пройти...

Spectramine
12.02.2018, 23:06
ZX клава в этом плане тоже отдыхает из-за матричного эффекта. На одном полуряде можно нажимать хоть 5 клавиш, а вот на нескольких будут наводки полурядов друг на друга. Суть в том, что если совпадает хоть одна позиция нажатых клавиш в полурядах - спектрум считает, что совпадают по позициям все нажатые клавиши в этих полурядах. Т.е. зажимаем 1-2-3-Q - спектрум считает, что нажаты 1-2-3-Q-W-E.

https://www.youtube.com/watch?v=F9f0AnfbAtc

- - - Добавлено - - -

Нашел первый эмуль, который не LIKE A SHIT в плане эмуляции клавы - новый Spud выдает каждый раз разные числа.

b2m
13.02.2018, 00:45
Нашел первый эмуль, который не LIKE A SHIT в плане эмуляции клавы - новый Spud выдает каждый раз разные числа.
Ну тогда мой второй будет :v2_rolley

Spectramine
13.02.2018, 00:54
Вообще, в случае эмуляции Спектрума на PC, чтобы отловить эмуль, достаточно попросить пользователя нажать одновременно все 5 кнопок одного полуряда (например, 12345). Единственный эмуль, который справится с этим, насколько я знаю - ZEsarUX, и то с помощью графической мышеклавиатуры.

- - - Добавлено - - -


Ну тогда мой второй будет :v2_rolley

Ну тогда твой первый будет, а Spud второй :) Я имел ввиду из тех, что я лично проверил.

- - - Добавлено - - -

Проверил - таки да, EMU от b2m этот тест проходит без изъянов, в отличие от Spectaculator и прочих мегаэмулей.

IanPo
13.02.2018, 10:32
Простая программка обнаруживающая добрую половину эмулей. Точная эмуляция говорили они, ну да, ну да...
Эмуляторы писались в расчете на существующие тогда программы и игры. Если они запускаются нормально, то обнаружение эмуляторов данным тестом некритично.

ZX_NOVOSIB
13.02.2018, 10:36
Это ж можно писать игры и встраивать в них многоуровневую защиту от эмулей, а продавать только на физ.носителях. И никаких denied и никаких разборок )

Shiny
13.02.2018, 11:05
denied необходимо. Некоторые попытки внедрить запреты доводят до абсурда.

Titus
13.02.2018, 11:40
Это ж можно писать игры и встраивать в них многоуровневую защиту от эмулей, а продавать только на физ.носителях. И никаких denied и никаких разборок )
Все защиты взламываются, если что. Так что защита - не защита.

ZX_NOVOSIB
13.02.2018, 13:02
Все защиты взламываются, если что. Так что защита - не защита.
Из активных спектрумистов взломать хорошую защиту способны сколько человек? И сколько из них реально станут делать это? И главное зачем? :)

Titus
13.02.2018, 13:19
Из активных спектрумистов взломать хорошую защиту способны сколько человек? И сколько из них реально станут делать это? И главное зачем? :)
Это уже философия. Откуда мы знаем, кто станет, а кто нет?
Но людей таких немало, я думаю.

Spectramine
13.02.2018, 13:28
Да чего их там ломать, и раньше никто не парился, и сейчас не будет - мультифейсом сдампить, сжать, и новый загрузчик прицепить. Код проверки на эмуль найти не проблема любому, кто более-менее в ассемблере шарит.

- - - Добавлено - - -

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

Vadim
13.02.2018, 13:52
ZX клава в этом плане тоже отдыхает из-за матричного эффекта. На одном полуряде можно нажимать хоть 5 клавиш, а вот на нескольких будут наводки полурядов друг на друга.
Есть схема с диодами, которая этот эффект блокирует, всё создано ещё в начале 90х. Схема тут на сайте не раз бывала

Titus
13.02.2018, 16:55
Есть схема с диодами, которая этот эффект блокирует, всё создано ещё в начале 90х. Схема тут на сайте не раз бывала
На клаве с диодами есть эффект фантомных клавиш.
Например, если в четырехугольнике нажаты три клавиши, то состояние четвертой нельзя определить.
Т.е. если, например, нажата 1 2 и Q, то состояние W - неизвестно.

Barmaley_m
16.02.2018, 01:51
Например, если в четырехугольнике нажаты три клавиши, то состояние четвертой нельзя определить.
Т.е. если, например, нажата 1 2 и Q, то состояние W - неизвестно.
Чего это вдруг? Ты ничего не перепутал?

Диодная матрица позволяет разрешить любую комбинацию нажатых клавиш при условии, что каждая клавиша снабжена диодом. На этом принципе делались масочные ПЗУ, в которые можно было записать любую информацию. ПЗУ строятся в виде диодной матрицы, а принцип считывания такой же, как на клавиатуре: активизировать линию одной строки и смотреть, какие сигналы присутствуют на столбцах.

- - - Добавлено - - -

Кстати, не рекомендую реализовывать в эмуляторах эффект "добавления" четвертой клавиши при нажатии трех. У меня и у друзей на реалах были диоды на всех клавишах, и это в некоторых ситуациях очень помогало работе с клавиатурой. Использовались комбинации вроде "Caps+Symb+space", которые на клавиатуре без диодов приведут к ложному срабатыванию еще одной клавиши.

shurik-ua
16.02.2018, 01:51
Из активных спектрумистов взломать хорошую защиту способны сколько человек? И сколько из них реально станут делать это? И главное зачем?
если защита будет претендовать на звание "неломаемой", то я её точно поковыряю - ради спортивного интереса )

Barmaley_m
16.02.2018, 02:14
Это ж можно писать игры и встраивать в них многоуровневую защиту от эмулей, а продавать только на физ.носителях.
Ты серьезно считаешь, что кто-то сегодня готов платить за спектрумовские игры? И готов быть ограниченным запускать их только на реале?

Защиту, конечно, можно любую взломать. Хотя бы аппаратно. Сделать на базе микроконтроллера устройство, подключаемое к системному разъему, которое бы дампило (через DMA) всю память, а еще оно могло бы с помощью NMI или просто подставляя процессору нужную последовательность команд, которых на самом деле нет в памяти, считывать регистры. Еще можно заменить Z80 FPGA со встроенными функциями "отладки". Тогда состояние процессора и все остальное будет у взломщика как на блюдечке.

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

- - - Добавлено - - -

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

- - - Добавлено - - -

Я думаю, что лучшая защита - это аппаратная реализация части функций программы. Типа как было на дендиевских картриджах, которые содержали аппаратные "добавки" к стандартной схеме денди. Если используется хорошо защищенный микроконтроллер - то скопировать такое устройство сможет далеко не каждый. А проверка на эмулятор - это всё игрушки.

Titus
16.02.2018, 04:07
Чего это вдруг? Ты ничего не перепутал?

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

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

creator
16.02.2018, 05:22
на Амиге было именно так, а там клавиатура как раз с диодами.
Увы, не на всех Амигах. Например в A1200 клавиатура плёночная, никаких диодов там нет в принципе.

Titus
16.02.2018, 05:57
Увы, не на всех Амигах. Например в A1200 клавиатура плёночная, никаких диодов там нет в принципе.
Похоже, я ошибся.
Как раз без диодов если нажать 3 клавиши в прямоугольнике, нажмется 4-я)

ZX_NOVOSIB
16.02.2018, 08:48
если защита будет претендовать на звание "неломаемой", то я её точно поковыряю - ради спортивного интереса )
Само собой. Вот только:
- тебе придется сначала купить физ.носитель с игрой.
- проверки на эмуль могут быть не в одном месте, а равномерно раскиданы на всём протяжении игры... )
- предположим ты пропотел несколько месяцев дизассемблируя хитроумный код (хитроумно переплетённый с данными, для пущего спортивного интереса). И что дальше? Ты вот так запросто выложишь denied-игру Санчеса, Ориджина или Барского? Сомнительно, это ж очень не красиво будет.
- даже если выложишь анонимно, то что мешает каждую копию сделать уникальной? Какой-нибудь незаметный штрих в мелодию вложить например. Или какой-нибудь лишний пиксель в определенный тайл с определенными координатами.
- пока суть да дело, товар уже может быть распродан в приемлемых количествах )

- - - Добавлено - - -


Ты серьезно считаешь, что кто-то сегодня готов платить за спектрумовские игры? И готов быть ограниченным запускать их только на реале?
Пример с "Мечом Ианны" говорит об обратном. Там картриджы по 40 евро разлетелись как пирожки ) За кривые поделки люди конечно не готовы платить, а вот за топ-игры не только готовы, но и уже платят... )

shurik-ua
16.02.2018, 16:59
И что дальше? Ты вот так запросто выложишь denied-игру Санчеса, Ориджина или Барского? Сомнительно, это ж очень не красиво будет.
не совсем понял что значит denied игры - но как я уже говорил интерес чисто спортивный - не коммерческий и не с целью навредить разрабам. )

Barmaley_m
17.02.2018, 19:59
проверки на эмуль могут быть не в одном месте, а равномерно раскиданы на всём протяжении игры... )
Интерактивные проверки не раскидаешь незаметно. Если каждый раз игра будет просить пользователя нажать комбинацию клавиш - то это неудобно для пользователя, а взломщику каждое такое место легко поймать с помощью NMI.

Раскидать проверки по всей программе - это очень тяжело (для разработчика). Очень редко такое встречается. Я встречал такое в музыкальном редакторе ASM - там на всём протяжении драйвера файловой системы разбросаны хитроумные проверки на нажатие меджика, которые замаскированы и срабатывают не совсем явно. И что - помогло это защите? Нет. Все, кто хотел, копировал ASM и без меджика. А я обнаружил все проверки во время дизассемблирования, это оказалось не очень сложно. Страшно представить, сколько времени ASC мучался, добавляя в код эти проверки. Ведь каждая проверка может сломать работающий код, а на последних этапах разработки добавлять защиту обычно лень. Чисто психологически. Хочется просто быстрее закончить.

Можно сделать автоматическое добавление проверок на уровня компилятора или ассемблера, но это тоже тяжело. Когда же тогда саму игру делать?

- предположим ты пропотел несколько месяцев дизассемблируя хитроумный код (хитроумно переплетённый с данными, для пущего спортивного интереса). И что дальше?
Да, собственно, ничего. Я просто не буду ничего дизассемблировать. И ломать тоже не буду. Скучное это дело. Когда ты копаешься в чужом коде, то не создаешь ничего своего. Ты можешь испытать радость победы над защитой, но не испытаешь радости творения.

Пример с "Мечом Ианны" говорит об обратном. Там картриджы по 40 евро разлетелись как пирожки ) За кривые поделки люди конечно не готовы платить, а вот за топ-игры не только готовы, но и уже платят... )
Хм, прикольно. Ну что ж, удачи тогда всем авторам! А насчет защиты - картридж наше всё. Только картридж взломать сложнее, чем его создать. Для программной защиты усилия на ее создание многократно (в десятки и сотни раз) превышают затраты на ее взлом.

nihirash
21.03.2018, 13:10
Интересно, а эмуляторы типа Zx Evo или Zx Next оно ловит как эмуляторы?

DJs3000
21.03.2018, 13:48
Макс(krt17) чет не могу тебе в личку написать, отпишись пожалуйста сам.

Skurikhin
19.04.2018, 10:07
Здравствуйте! Как в Ubuntu 17.10, на эмуляторе Fuse запустить файл tap?

Bolt
19.04.2018, 10:13
Если в файле программа с автозапуском, то

fuse-sdl --tape file.tap
Загрузка и запуск сразу, без запросов.
Или после запуска нажать F1, media, tape, open. Потом LOAD "", F1, media, tape, play.

Ответил, а потом понял что вопрос вообще не в тему.

Skurikhin
19.04.2018, 12:53
Если в файле программа с автозапуском, то

fuse-sdl --tape file.tap
Загрузка и запуск сразу, без запросов.
Или после запуска нажать F1, media, tape, open. Потом LOAD "", F1, media, tape, play.

Спасибо!

Skurikhin
19.04.2018, 21:24
Или после запуска нажать F1, media, tape, open. Потом LOAD "", F1, media, tape, play.

.

У меня в эмуляторе только не пропечатываются двойные кавычки. :(


Ответил, а потом понял что вопрос вообще не в тему.

ладно, я не буду оффтопить. :)