PDA

Просмотр полной версии : Есть ли способ программе определить на z80 она выполняется или на его эмуляторе?



andrews
12.01.2021, 02:14
Есть ли способ программе определить на z80 она выполняется или на его эмуляторе?

NEO SPECTRUMAN
12.01.2021, 04:27
можно определить по некоторым неточностям\ошибкам эмуляции

но никто не гарантирует что защита от эмулятора потом не сработает на каком нибудь железном кривом клоне с железным кривым клоном z80
а эмуляторы потом вскоре пофиксят
и будет несколько обидно :)

в придачу в процессе определения что мы на эмуляторе
можно повесить как кривой эмулятор так и кривое железо...

goodboy
12.01.2021, 11:09
можно ловить на хитрых командах, но результаты различаются на реальных NMOS/CMOS
применительно к спеку можно устроить порчу ячеек памяти манипулируя с R (эмули на такое не способны)

andrews
12.01.2021, 11:45
А если дополнительно установить на плату чип, который невозможно сэмулировать? Есть идея майнить на спектрумах специальную криптовалюту, чтобы ее невозможно было майнить на эмулях. Иначе на мощных компах процесс пойдет в сотни раз быстрее и она обесценится. Ее же ( эту крипту) использовать в целях расчета между спектрумистами. Заодно будет и дополнительный стимул железом с z80 обзаводиться.

Evgeny Muchkin
12.01.2021, 13:14
можно ловить на хитрых командах, но результаты различаются на реальных NMOS/CMOS
применительно к спеку можно устроить порчу ячеек памяти манипулируя с R (эмули на такое не способны)

Где можно про такую порчу поподробнее почитать?

Raydac
12.01.2021, 13:35
применительно к спеку можно устроить порчу ячеек памяти манипулируя с R (эмули на такое не способны)
память может быть статическая

Error404
12.01.2021, 13:39
как вариант - посмотреть как это делают для FUZIX:
https://github.com/EtchedPixels/FUZIX/blob/master/Applications/util/cpuinfo.c
если честно, разбираться самому - лень (ввиду сомнительной полезности данных знаний), но чототам следующее из LD A,R и подобного

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

Ахах, там по тексту "вот тут должны быть пустые строки и процедура строго раньше вызова because of bug in {лучшем компиляторе} SDCC" :)))

Denn
12.01.2021, 14:33
Есть, и достаточно нехитрый способ. Причём тип процессора вообще не важен (речь про детект работы ПО под эмулятором, а не на реале). Но свою "находку" пока не могу рассказать :) В своём ПО активно использую, достоверность 146% !

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


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

Найти и обезвредить причинный участок кода никакая не проблема.

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


А если дополнительно установить на плату чип, который невозможно сэмулировать?

Всё равно финал всех заморочек будет в виде: "if <чего-то там> then <туда-то> else <досвидос>"

В отладчике эмулятора это ловится на раз-два, вместо "if" записывается "goto" и gotoво дело :)

goodboy
12.01.2021, 14:49
финал всех заморочек будет в виде: "if <чего-то там> then <туда-то> else <досвидос>"
В отладчике эмулятора это ловится на раз-два, вместо "if" записывается "goto" и gotoво дело
программно это можно запутать - компиляция/байткод - вычислить будет очень сложно.
..................
Denn, вот простой пример - адвентюра для +3 http://www.tzxvault.org/Spectrum/Disks/Myth.zip
попробуй обойти запрос на рег.данные

Titus
12.01.2021, 15:03
вычислить будет очень сложно.
Сложно - не значит невозможно.
То, что зашифровал один, потенциально может быть расшифровано другим)

Eltaron
12.01.2021, 15:03
А если дополнительно установить на плату чип, который невозможно сэмулировать? Есть идея майнить на спектрумах специальную криптовалют
Вот прямо этим чипом и надо майнить, тогда сработает. И прошивку никому не давать.
Вот только это будет не криптовалюта, а ерунда. Создатель будет знать алгоритм и иметь теоретическую возможность сделать себе в 1000 раз более быстрый майнер, чем у остальных.

Denn
12.01.2021, 15:05
вычислить будет очень сложно

Вопрос востребованности конкретного ПО и степени заинтересованности хакеров.



попробуй обойти запрос на рег.данные

Мои интересы только в плоскости ПРК "Орион", причём сугубо реалов. Ради спора изучать другую платформу и среду отладки для неё не готов.
Запутывание кода сам практикую, но прекрасно понимаю, что все эти защиты - на тему разнообразия инструментария и порога терпения взломщика, ничего невозможного там нет в принципе.

NEO SPECTRUMAN
12.01.2021, 15:06
сделать себе в 1000 раз более быстрый майнер, чем у остальных.
а почему просто нельзя приравнять майнеров к фальшивомонетчикам
и не жечь их на костре?

и проблемы нет :)

andrews
12.01.2021, 15:48
Сравниться по производительности с видеокартами и процессорами PC на Спектруме невозможно. Следовательно нужен какой-то другой подход. Сбор каких-то характеристик реального железа и маловероятные события при его функционировании. Программа же должна вносить нечто, чтобы требуемое для регистрации новой монеты случалось все же с ненулевой вероятностью после N<100 часов работы "реального железа"(при этом если на компьютере не происходило нечто осмысленное и он был просто включен, время возрастало непропорционально) Центральный сервер же должен, проанализировав блок данных, присланных регистрирующим, выносить вердикт и подтверждать регистрацию.

Цели такой "валюты" не инвестиционные и не анонимайзерские, а иные:
1) усилить интерес к реальному железу на z80;
2) к работе на этом реальном железе( следовательно и в новом софте);
3) дать людям средство для расчетов в своей среде, минуя деньги( хотя, если сделать это товаром<-> обмен на обычные деньги или обычную крипту, то первые два пункта уже не работают в полной мере.

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

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


Мои интересы только в плоскости ПРК "Орион", причём сугубо реалов.
видимо и эмуляторы там пока не столь изощренные как на Спектрумах, но при замене проца на z80 появляются и точки соприкосновения. Правда не в курсе, есть ли такая замена на ПРК "Орион"

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


Вот прямо этим чипом и надо майнить, тогда сработает
уже объяснился. Чтобы только не грузить основную систему не свойственными ей до этого задачами. Потом это по желанию владельца, как необязательная опция.

SoftLight
12.01.2021, 16:15
Где можно про такую порчу поподробнее почитать?
На оригинальном спектруме с раздельными полями памяти можно легко затестить:


ORG 32768
DI
LD B,0
L1: XOR A
LD R,A
DEC HL
LD A,H
OR L
JR NZ,L1
DJNZ L1
EI
RET

Ждем минуты три. Проверяем верхние 32 Кб памяти, например, графику UDG. Заряд из ячеек будет утекать и байты превращаться в $ff. Только первые несколько байтов для каждого блока в 256 байт остануться в нуле, потому, что рефреш для них выполнялся во время выполнения цикла. А нижние 16 Кб будут штатно зарефрешены ULA. Опыт не будет работать на эмуляторе.

andrews
12.01.2021, 16:33
Сбор каких-то характеристик реального железа
самое простое, что приходит в голову, это фиксировать время между запросом на прерывание и выходом из него

Denn
12.01.2021, 16:43
самое простое, что приходит в голову, это фиксировать время между запросом на прерывание и выходом из него

А как фиксировать время? Нужна временнάя "точка опоры".

Spectramine
12.01.2021, 17:46
На оригинальном спектруме с раздельными полями памяти можно легко затестить:
Только на 48к, на 128х вся память рефрешится юлой.
Ну и нет проблем заэмулить это. Только временные и качественные параметры порчи содержимого ячеек снять нужно тестовой программой, чтобы точнее было. Эмуль ZEsarUX даже эмулит, опция такая есть, но, судя по моим тестам, вообще от фонаря. Портится одна ячейка в начале верхней памяти)

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

CityAceE
12.01.2021, 17:55
Лет 20 назад тема определения эмуляторов была весьма популярна. Находили всё новые и новые особенности Z80, которые в мирной жизни были не нужны, а для отлова эмуляторов хорошо подходили. Проверки такого поведения некоторые программисты включали в свои игры и журналы, чтобы они могли запускаться только на реалах. Но со временем все эти штучки благополучно добавлялись в эмуляторы. Сейчас таких неописанных особенностей скорее всего и не осталось уже - всё давно копано-перекопано вдоль и поперёк. А даже если кто-то что-то подобное и найдёт, то, зная правильное поведение, добавить его в эмулятор большого труда не составит.

andrews
12.01.2021, 18:16
А как фиксировать время? Нужна временнάя "точка опоры"
внешняя схема может быть высокоточным таймером, где вывод прерывания zx заведен на старт или еще куда-то. Но просто четко выдерживать в секундах, минутах или еще чем-то наверное не совсем правильно(это надо моделировать). Пользователя можно попросить ввести датакод ряда его компонентов, обычно это номер недели в году и год.
На процессоре он точно стоит, на памяти вроде тоже. Для fpga наверное придется вводить ее датакод и еще у jtag микросхем вроде есть уникальный идентификатор чипа( но может я путаю, тогда придется просить их заводить регистр для идентификации изделия, чтобы быть участниками программы "zx012021-майнинга"). И идентификатор запрашивать у сервера регистрации.

Вероятность того, что на разных платах это совпадет довольно низкая. Эта инфа может быть передана программой в чип и на основе этой последовательности чип выберет свое локальное время. А редкое событие, которое будет равно 1 монете можно построить, пропуская n-ное кол-во прерываний, а далее зафиксировав время обработки очередного прерывания и соотнося его с текущим локальным временем этого чипа. Только формулу надо так построить, чтобы за 100 часов нажатия на клавиши клавиатуры, джойстика или кликанья мышью вероятность этого не была нулевой.
Этим мы зададим и масштаб валюты, поощряя реальную работу на реальном железе. Ну а курс с рублем может быть плавающим и отображаемым на этом же сервере( если все сделки этой крипты с рублем будут только на нем).

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


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

Raydac
12.01.2021, 18:22
сейчас можно более менее защитить что то только если приличная часть этого чего то расположена на территории разработчика например в его облаке

SoftLight
12.01.2021, 18:34
А даже если кто-то что-то подобное и найдёт, то, зная правильное поведение, добавить его в эмулятор большого труда не составит.
По Z80 и правда перекопано многое, но явно еще не все. До сих пор не знаю ни одного эмулятора, который проходил бы все тесты в zexall (https://ru.wikipedia.org/wiki/ZEXALL). Если нужно отличать выполнение на реале и на эмуляторе, нужно смотреть на эффекты флага CCF. Аналогично, это касается реализаций z80 на fpga. Как раз в конце минувшего лета в софтовом ядре T80 Miguel Angel Rodríguez Jódar нашел и исправил кривую реализацию инструкции IM 2: ED 7E, которая сидела в исходниках годами.

andrews
12.01.2021, 18:36
сейчас можно более менее защитить что то только если приличная часть этого чего то расположена на территории разработчика например в его облаке
Никому не возбраняется разрабатывать свою систему. Главное потом нести за нее ответственность.
Тут просто все носятся с "цифровым рублем", а я предположил, что скорее востребован "бартерный рубль", но чтобы не быть связанным c российским законом, надо назвать это как-то по другому, типа "zxbon" или как-то еще.

Spectramine
12.01.2021, 19:23
По Z80 и правда перекопано многое, но явно еще не все. До сих пор не знаю ни одного эмулятора, который проходил бы все тесты в zexall (https://ru.wikipedia.org/wiki/ZEXALL). Если нужно отличать выполнение на реале и на эмуляторе, нужно смотреть на эффекты флага CCF.
SpecEmu проходит все тесты zexall2, включая команды SCF/CCF. Запускать надо строго на 48к модели.

Raydac
12.01.2021, 19:38
Никому не возбраняется разрабатывать свою систему. Главное потом нести за нее ответственность.
Тут просто все носятся с "цифровым рублем", а я предположил, что скорее востребован "бартерный рубль", но чтобы не быть связанным c российским законом, надо назвать это как-то по другому, типа "zxbon" или как-то еще.
ух сколько у тебя уже скопилось идей, скоро можно книгу будет выпустить "идеи до которых так и не дошли руки" ))

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


SpecEmu проходит все тесты zexall2, включая команды SCF/CCF. Запускать надо строго на 48к модели.
там вроде есть тесты с учетом недокументируемых флагов и без учета, но в принципе можно стопудово сказать что невозможно сделать гарантированное определение эмулятора спека если автор эмуля положит неочень большие силы чтобы это было невозможно

Spectramine
12.01.2021, 19:47
там вроде есть тесты с учетом недокументируемых флагов и без учета,
Ну zexall тестирует с учетом недокументированных флагов, zexdoc - без учета. zexall2 включает тесты влияния команд SCF/CCF на флаги F3 и F5, не так давно открытую и исследованную особенность Z80.

andrews
12.01.2021, 20:00
ух сколько у тебя уже скопилось идей
у Леонардо Да Винчи было еще больше(нереализованных). Я же их не патентую. Если кому-то интересно, делайте. А чтобы мне делать надо реальный Спектрум, я пока не выбрал какой. Внутрисхемный эмулятор( его надо купить или разработать). Анализатор и осциллоскоп современный( тоже надо приобретать). Человек с паяльником( желательно с авто, так как неудобно к нам ехать, и приезжающий иногда с посуточной оплатой, что мало кого сейчас устроит). Ну и многое другое. Планы есть, но реальный бизнес в другой сфере и пока не позволяющий отвлекать больше 50 тыс. рублей в год на иные цели.

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

Teensy и micro:bit можем конечно поставлять, но есть раскрученная Амперка. Пока вот ковыряюсь с их софтом, так как партнер вообще далеко-далеко от всех этих технологий. Была бы техподдержка и софт можно бы было заняться.

ZXMAK
27.01.2021, 06:27
До сих пор не знаю ни одного эмулятора, который проходил бы все тесты в zexall (https://ru.wikipedia.org/wiki/ZEXALL).

ZXMAK2 очень давно проходит все тесты zexall, помоему еще со времен, когда эмуляция регистра MW была добавлена

SoftLight
27.01.2021, 13:37
ZXMAK2 очень давно проходит все тесты zexall (https://github.com/next-dev/nx/blob/master/etc/zexall.tap), помоему еще со времен, когда эмуляция регистра MW была добавлена
Скачал сорцы, собрал, затестил, и правда все тесты ok! Только выполняется даже на Maximum Speed в несколько раз дольше чем в Unreal, но это как раз норм.

krotan
27.01.2021, 17:58
Можно попробовать изменять данные или программный код, которые уже зашли на конвейер хоста. На Z80 такое будет работать, на эмуляторе нет.

SoftLight
27.01.2021, 18:21
На самом деле есть более злой тест z80full (https://www.dropbox.com/s/33he0chzu6v7xym/z80test-1.0.zip?dl=0). Вот его только JSpeccy и SpecEmu без ошибок выполняет. Была раньше на форуме тема, посвященная тестам эмуляторов.
Вот я для примера запустил его на последнем Unreal и ZXMAK2 и видим, что примерно одинаковый печальный результат, причем, на разных тестах разное: где-то фейлится Unreal а где-то ZXMAK2:

https://i.imgur.com/mXukaKM.jpg

ultra
27.01.2021, 18:57
А у Spectaculator всего 2, вот тебе и "коммерческая поделка".

andrews
27.01.2021, 19:26
Можно попробовать изменять данные или программный код, которые уже зашли на конвейер хоста. На Z80 такое будет работать, на эмуляторе нет.
Вы тогда детали никому пожалуйста не раскрывайте. А вдруг это действительно единственный способ различить живой z80 проц и эмулятор.

krotan
27.01.2021, 19:50
Вы тогда детали никому пожалуйста не раскрывайте. Хорошо, но птичка уже вылетела...

Black Cat / Era CG
27.01.2021, 23:31
А реальный проц на Эве проходит не все)))

goodboy
27.01.2021, 23:38
реальный проц на Эве проходит не все
там для некоторых команд важно содержимое ПЗУ (100раз уже рассказывали что нужна прошивка 1982)

NEO SPECTRUMAN
27.01.2021, 23:39
А реальный проц на Эве проходит не все)))
ну это тест кривой
не знает про цмосные процы
или жестко завязан на 48-х времянках...

ZXMAK
28.01.2021, 04:43
Вот я для примера запустил его на последнем Unreal и ZXMAK2 и видим, что примерно одинаковый печальный результат, причем, на разных тестах разное: где-то фейлится Unreal а где-то ZXMAK2:


в ZXMAK2 опкоды IN*/OUT* фейлятся потому что особенность гальванической связи выхода магнитофонного порта со входом не эмулируется. Но это фейл не эмуляции Z80, а эмуляции магнитофонного входа. Просто руки так и не дошли прикрутить полноценную эмуляцию обратной связи для магнитофонного порта. На разных моделях поведение порта немного отличается, поэтому нужно разбираться.

По поводу SCF/ССF подозреваю, что с такими-же кодами будет фейлится и на реальном Z80, т.е. это видимо фейл самого теста.
Помню были старые тесты в которых неправильный CRC был задан для SCF/CCF и они фейлились на реальном Z80, тест делали на эмуляторе и проверить на риале у автора возможности не было. В этом тесте видимо просто скопировали без исправлений CRC.

Если тест SCF/CCF на реальном Z80 проходит, тогда действительно ошибка эмуляции, это можно исправить. Но подозреваю дело в том, что тест ошибочно показывает фейл для корректного результата.

И да - этот тест чувствителен к содержимому ПЗУ, поэтому прошивка ПЗУ должна байт в байт соответствовать той, под которую в тесте контрольные суммы забиты.

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


Вы тогда детали никому пожалуйста не раскрывайте. А вдруг это действительно единственный способ различить живой z80 проц и эмулятор.

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

Визуальные эффекты с точностью до пиксела для модели Pentagon эмулировать проблематично. Помоему пока ни один эмулятор точно Pentagon не эмулирует. ZXMAK2 наиболее близко эмулирует, но особенность смены последовательности выборки ATTR/SCRN не эмулируется. Эта особенность помоему нигде не эмулируется. Но разница будет видна только визуально, программно разницу не заметить.

Spectramine
28.01.2021, 13:04
По поводу SCF/ССF подозреваю, что с такими-же кодами будет фейлится и на реальном Z80, т.е. это видимо фейл самого теста.
Помню были старые тесты в которых неправильный CRC был задан для SCF/CCF и они фейлились на реальном Z80, тест делали на эмуляторе и проверить на риале у автора возможности не было. В этом тесте видимо просто скопировали без исправлений CRC.

Если тест SCF/CCF на реальном Z80 проходит, тогда действительно ошибка эмуляции, это можно исправить. Но подозреваю дело в том, что тест ошибочно показывает фейл для корректного результата.
Нет, просто ZXMAK не эмулирует правильное поведение флагов F3 и F5 для команд SCF/CCF, эту особенность открыли и изучили не так давно. Где-то на вос-форуме была тема по этому поводу.

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

Кстати, есть тест zexall2, и на нем ZXMAK точно также фейлит проверку команд SCF/CCF.

andrews
28.01.2021, 15:55
нету способа, все можно эмулировать
понятно, если раскрыть детали алгоритма. Если проц на Alter-а там есть особенности, которые эмулятороваятелям могут быть неизвестны. То есть прочитать о них можно, но если не раскрыть какие именно будут использованы в алгоритме. Там и допкоманды легко подсунуть. Но тогда пострадают держатели обычных z80. Если вводить в программу защиты датакоды процессора и памяти, чтобы он вычислял по ним временной интервал каких-то прерываний или получал дополнительно некие данные от поставщика программы защиты

Black Cat / Era CG
28.01.2021, 17:09
Эва на фирменном 48 пзу. Запорото 7 из 152. И да. Это не тест cpu, если он критичен к пзу.

https://pic.maxiol.com/images2/1611842886.2989615885.screenshot17testz8.png

goodboy
28.01.2021, 17:34
Эва на фирменном 48 пзу. Запорото 7 из 152. И да. Это не тест cpu, если он критичен к пзу.
для проверки команд чтения из порта выбран порт #FE, он (практически на всех) наших клонах реализован не совсем корректно.
кстати если на `фирме` во время теста именно этих команд нажать любую клавишу - будет сбой.
что покажет PRINT IN 254 ?
........
наберётся с десяток игрушек в которых (из-за неправильно выставленного бита) не работает опрос клавы.
например (скорее всего) на Evo в этой игре https://vtrd.in/gamez/s/SMU128_.ZIP нельзя будет выбрать пункты в меню.
это именно фирменная версия, в других опрос клавы уже исправлен

Spectramine
28.01.2021, 17:36
Это не тест cpu, если он критичен к пзу.
Он не только к ПЗУ (он его использует как данные), он ещё и к аппаратным особенностям компа критичен. Ну логично, если он проверяет команды IN/OUT, он будет критичен к аппаратным особенностям.

ZXMAK
31.01.2021, 04:51
Кстати, есть тест zexall2, и на нем ZXMAK точно также фейлит проверку команд SCF/CCF.

Может ошибаюсь, но на реальном железе он вроде должен фейлить проверку с точно такими-же CRC. Может там от типа процессора зависит?

Сейчас уже нет ссылки на оригинальную страницу с тестом, много лет прошло, но там было указано что тест писался на эмуляторе и когда потом был запущен другим чуваком на реальном железе оказалось, что он фейлится на SCF/CCF. При этом прогон на реальном Z80 должен давал такие CRC:
SCF: 9e4dbc94
CCF: 363b6874

У меня проверить возможности нет - нет железа. Точнее сам процессор может еще где-то лежит, если не потерялся. Есть мысли попробовать подключить его к отладочному модулю STM32 и подебажить его работу. Но не уверен что Z80 понравятся уровни 3.2V логики. Но в любом случае прогнать тест будет проблематично, т.к. прийдется эмулировать всю остальную обвязку.

Black Cat / Era CG
31.01.2021, 13:11
Может ошибаюсь, но на реальном железе он вроде должен фейлить проверку с точно такими-же CRC. Может там от типа процессора зависит?
Может, на моей Эве только 7 штук фейлит, картинка выше. Но проц не виноват, как мне объяснили :)

Barmaley_m
31.01.2021, 15:40
Всякие тесты магнитофонного входа - они и на многих реалах (клонах) не пройдут. То же касается и порчи памяти от отсутствия регенерации. Подавляющее большинство советских клонов 48К делалось на одной линейке 565РУ5. Соответственно, регенерация шла от видеоконтроллера, а не от процессора, и остановить её программно невозможно.

А ограничивать работоспособность программы только на фирменных реалах - какой смысл?

Bedazzle
01.02.2021, 13:15
у Леонардо Да Винчи было еще больше(нереализованных).

У Леонардо кроме идей немалая пачка вполне себе завершённых проектов.

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


понятно, если раскрыть детали алгоритма.

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

goodboy
02.02.2021, 14:06
Амигу 68000 ловят элементарно


*******************************************
*** EMULATOR CHECK ***
*******************************************

; checks if running on an emulator like WinUAE and displays a
; warning requester if an emulator is detected

CheckUAE
lea .mod(pc),a0
move.w #$7001,(a0)
.mod moveq #0,d0
beq.b .amiga

; emulator detected, display warning requester
lea .txt(pc),a0
lea .but(pc),a1
lea .ttl(pc),a2
bsr Requester
rts

.amiga moveq #1,d0
rts


.ttl dc.b "Attention!",0
.txt dc.b "Emulator detected! Proceed at your own risk!",0
.but dc.b "Understood|QUIT",0
CNOP 0,4