реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> bitstream -> netlist -> синтезируемый hdl, Насколько это актуально?
efg
сообщение May 11 2018, 12:11
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 34
Регистрация: 11-05-18
Пользователь №: 103 956



Предлагаю обсудить насколько актуальным и коммерчески применимым может быть возможность создания полноценно синтезируемого hdl только по прошивке fpga. Самое очевидное применение это модификация уже готовых closed source устройств. Подобный полностью автоматический инструментарий для virtex 5,6,7 неспешно разрабатывается для собственных (не напрямую коммерческих) целей, точные нетлисты и lut эквиваленты доступны уже достаточно давно. Дальнейшее развитие было бы значительно быстрее при каком либо коммерческом применении.
Go to the top of the page
 
+Quote Post
Maksim
сообщение May 11 2018, 13:01
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 164
Регистрация: 27-06-04
Пользователь №: 194



"точные нетлисты и lut эквиваленты доступны уже достаточно давно"
И где такое доступно?


--------------------
qwerty
Go to the top of the page
 
+Quote Post
efg
сообщение May 11 2018, 13:23
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 34
Регистрация: 11-05-18
Пользователь №: 103 956



Цитата(Maksim @ May 11 2018, 16:01) *
"точные нетлисты и lut эквиваленты доступны уже достаточно давно"
И где такое доступно?

В моем инструментарии доступно, этого пока не достаточно для создания 100% эквивалентного и рабочего ncd (ncd, ngd и прочие xdm xdb тоже вскрыты и частично документированы). Насколько за пределами "теоретически пригодится за бесплатно" есть необходимость в этом вот и вопрос...
Go to the top of the page
 
+Quote Post
MegaVolt
сообщение May 11 2018, 13:27
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783



Цитата(efg @ May 11 2018, 15:11) *
Предлагаю обсудить насколько актуальным и коммерчески применимым может быть возможность создания полноценно синтезируемого hdl только по прошивке fpga. Самое очевидное применение это модификация уже готовых closed source устройств. Подобный полностью автоматический инструментарий для virtex 5,6,7 неспешно разрабатывается для собственных (не напрямую коммерческих) целей, точные нетлисты и lut эквиваленты доступны уже достаточно давно. Дальнейшее развитие было бы значительно быстрее при каком либо коммерческом применении.
Если смотреть на обычные программы то дезассемблирование является аналогом предложенного к обсуждению.
Соответственно можно предположить что для восстановленноых HDL может быть такое же применение.
- Взлом чужих прошивок. (по хорошему должна быть поддержка внесения мелких изменений в исходный битстрим). HDL только для облегчения анализа.
- Анализ логики работы каких то интересных узлов. (важным является возможность восстанавливать стандартные высокоуровневые библиотечные модули а так же инструменты удобного объединения мелких кусков в нечто большее и осмысленное. Т.е. выделение модулей и иерархических частей.)
- Генерация кастомных прошивок для защиты своего проекта. Когда кодовые данные зашиваются прямо в битрим без раскладки. Аналог 1ого применения но для своей прошивки.
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение May 11 2018, 14:30
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(MegaVolt @ May 11 2018, 16:27) *
Если смотреть на обычные программы то дезассемблирование является аналогом предложенного к обсуждению.
Имхо - увы, результат синтеза RTL "немного" отличается от компиляции программы - и если по ассемблеру еще можно (но далеко не всегда) как-то востановить высокоуровневую структуру (довольно мал набор паттернов) - то из gate-level "поднять" наверх что то вменяемое наверно будет нельзя - уж больно сильно размазывается логика дизайна по гейтам.
А ковырять gate-level то еще удовольствие. Я как то пару раз занимался похожим 01.gif - да и то там был не чистый нетлист а результат после MAP - хоть часть структуры и имен оставалась.

Цитата(MegaVolt @ May 11 2018, 16:27) *
Соответственно можно предположить что для восстановленноых HDL может быть такое же применение.
- Взлом чужих прошивок. (по хорошему должна быть поддержка внесения мелких изменений в исходный битстрим). HDL только для облегчения анализа.
Для сколь нибуть приличного дизайна время и cтоимость такого взлома будет просто нереальна.

Цитата(MegaVolt @ May 11 2018, 16:27) *
- Анализ логики работы каких то интересных узлов. (важным является возможность восстанавливать стандартные высокоуровневые библиотечные модули а так же инструменты удобного объединения мелких кусков в нечто большее и осмысленное. Т.е. выделение модулей и иерархических частей.)
Иногда глядя на исходники RTL не понимаешь что и как должно работать.
Как представлю свой последний дизайн для Virtex7 в виде чистого gate-level и необходимость поменять там что-то - ужас - наверное сегодня ночью не засну.

Цитата(MegaVolt @ May 11 2018, 16:27) *
- Генерация кастомных прошивок для защиты своего проекта. Когда кодовые данные зашиваются прямо в битрим без раскладки. Аналог 1ого применения но для своей прошивки.

Это можно и нужно закладывать на уровне дизайна и частично можно делать уже сейчас имеющимися средствами.

Удачи! Rob.
Go to the top of the page
 
+Quote Post
Shivers
сообщение May 11 2018, 16:04
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950



Я как то баловался тем, что по нетлисту восстанавливал функции, используя перл и библиотеку Verilog-perl. В принципе, ничего сложного здесь нет - из флопа записать конструкцию always, а из логики восстановить и записать assign-функцию. Используя десяток подобных шаблонов можно любой нетлист сконвертить. Конечно, результат будет то же что и обфусцированый верилог - разобраться что есть что, очень тяжело. С другой стороны, такой верилог гораздо информативнее и компактнее нетлиста: если кто то задался целью реверс инжиниринга, подобный конвертер будет крайне полезен. Но очень сомневаюсь что на этом можно заработать, скорее проблем наживете.
Go to the top of the page
 
+Quote Post
efg
сообщение May 13 2018, 09:44
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 34
Регистрация: 11-05-18
Пользователь №: 103 956



Спасибо за ответы.
Поясню подробнее: я подразумеваю создание ncd (для ise) файла идентичного пршивке, значит bitgen из него создаст идентичный до каждого бита файл.
Редактировать нетлист врчную затруднительно поэтому нужны hdl файлы соотвествующие ему логичеки, схематически и по требуемым задержкам. Т.е при синтезе стандартными средствами ise будет получаться прошивка аналогичная оригинальной которую сразу можно использовать на реальном устройстве. Среди элементов автоматизировано можно распознать простые схемы понятного назначения, вероятные независимые блоки, кандидаты на известные ядра (частично распознавание уже реализовано). Кроме этого легко выделить части жестко привязанные к изначальному типу плис отдельно и остальную легко переносимую логику. Для реверс инженеринга (и не только) можно добавлять внутрь прошивки живого железа дополнительные блоки анализаторы и уже вручную разбираться как что работает на реальных примерах без необходимости разбираться в обфусцированых hdl кодах.
Далее названия с опечатками специально...
Цитата(MegaVolt @ May 11 2018, 16:27) *
Если смотреть на обычные программы то дезассемблирование является аналогом предложенного к обсуждению.
Соответственно можно предположить что для восстановленноых HDL может быть такое же применение.
- Взлом чужих прошивок. (по хорошему должна быть поддержка внесения мелких изменений в исходный битстрим). HDL только для облегчения анализа.

Ближе к attach+debug а не просто дизассемблированию, а также аналог hex-rays (asm -> c). Любые изменения можно вносить стандартными средствами ise для v5,6,7 или даже перенести на другие плис. Я не ограничиваюсь xlinx, просто в данный момент для них уже многое сделано и сам ise хороший донор данных.
Цитата(MegaVolt @ May 11 2018, 16:27) *
- Генерация кастомных прошивок для защиты своего проекта. Когда кодовые данные зашиваются прямо в битрим без раскладки. Аналог 1ого применения но для своей прошивки.

Цитата(RobFPGA @ May 11 2018, 17:30) *
Это можно и нужно закладывать на уровне дизайна и частично можно делать уже сейчас имеющимися средствами.

Я не очень понял что имеется в виду и что не получится сделать сейчас в полностью своем проекте на ise/vivdo/quatus? Кстати паралельно с реверсным процессом по возможности делается нормальный процесс (p&r netlist)->verify->timing analyse->bitstream без использования ПО производителя, аналогично на v5,6,7
Цитата(RobFPGA @ May 11 2018, 17:30) *
из gate-level "поднять" наверх что то вменяемое наверно будет нельзя - уж больно сильно размазывается логика дизайна по гейтам.
А ковырять gate-level то еще удовольствие.

Цитата(Shivers @ May 11 2018, 19:04) *
Конечно, результат будет то же что и обфусцированый верилог - разобраться что есть что, очень тяжело. С другой стороны, такой верилог гораздо информативнее и компактнее нетлиста: если кто то задался целью реверс инжиниринга, подобный конвертер будет крайне полезен.

Вручную заниматься hdl эквивалентом gate-level я конечно не предлагаю, тем более просто в тексте без живого железа. С текстом можно работать в структурированном виде с кандидатами на блоки и ядра. Вариантов распознанных кандидатов будет сильно больше одного, особенно в ранних версиях, но в любом случае это лучше жуткого мяса из лутов и триггеров. Кандидат подразумевает полную синтезируемость и работоспособность проекта, соотвественно и возможность проверки на железе. Алгоритмы восстановления осмысленных блоков сами являются частью другого "материнского" проекта и втч. для их проработки и развития я ищу возможности коммерческого применения.

Высказывайте предложения какую прошивку от реального устройства разобрать и опубликовать здесь результаты
Пока только vitex lx 5 6 7, впринципе можно spatan6, kitex7,atix7. Само собой устройство не должно быть засекречено и прошивка (bin,bit,xsvf,mcs) не зашифрована и доступна автору предложения. Результаты не в ближайший месяц, я уже упоминал что много мелочей для полноценного ncd не готово, настройки от pci-e и gtx буду делать в последнюю очередь.
Go to the top of the page
 
+Quote Post
MegaVolt
сообщение May 15 2018, 13:37
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783



Цитата(efg @ May 13 2018, 12:44) *
Я не очень понял что имеется в виду и что не получится сделать сейчас в полностью своем проекте на ise/vivdo/quatus?
Генерация некой пары прошивка - ключ. Т.е. некой аппаратой струтуры которую можно открыть только заданным ключём. Причём делать это без перераскладки.

Возможно это можно сделать и сейчас. Я могу не знать всех доступных тонкостей.
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение May 15 2018, 13:57
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!
Цитата(efg @ May 13 2018, 12:44) *
...
Я не очень понял что имеется в виду и что не получится сделать сейчас в полностью своем проекте на ise/vivdo/quatus?
Я имел ввиду что генерация кастомной прошивки без полного P&R возможна уже имеющимися средствами
Например закладывая реализацию части логики в виде BRAM и затем обновление содержимого этой BRAM непосредственно в выходном нетлисте.

Цитата(efg @ May 13 2018, 12:44) *
...
Кстати паралельно с реверсным процессом по возможности делается нормальный процесс (p&r netlist)->verify->timing analyse->bitstream без использования ПО производителя, аналогично на v5,6,7
...
А вот это (если я Вас правильно понял на счет P&R) как раз более перспективное направление - если сделаете P&R лучше чем родной то сам Xilinx его и купит sm.gif

Успехов! Rob.


Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th June 2025 - 13:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.0144 секунд с 7
ELECTRONIX ©2004-2016