Перейти к содержанию
    

bitstream -> netlist -> синтезируемый hdl

Предлагаю обсудить насколько актуальным и коммерчески применимым может быть возможность создания полноценно синтезируемого hdl только по прошивке fpga. Самое очевидное применение это модификация уже готовых closed source устройств. Подобный полностью автоматический инструментарий для virtex 5,6,7 неспешно разрабатывается для собственных (не напрямую коммерческих) целей, точные нетлисты и lut эквиваленты доступны уже достаточно давно. Дальнейшее развитие было бы значительно быстрее при каком либо коммерческом применении.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

И где такое доступно?

В моем инструментарии доступно, этого пока не достаточно для создания 100% эквивалентного и рабочего ncd (ncd, ngd и прочие xdm xdb тоже вскрыты и частично документированы). Насколько за пределами "теоретически пригодится за бесплатно" есть необходимость в этом вот и вопрос...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Предлагаю обсудить насколько актуальным и коммерчески применимым может быть возможность создания полноценно синтезируемого hdl только по прошивке fpga. Самое очевидное применение это модификация уже готовых closed source устройств. Подобный полностью автоматический инструментарий для virtex 5,6,7 неспешно разрабатывается для собственных (не напрямую коммерческих) целей, точные нетлисты и lut эквиваленты доступны уже достаточно давно. Дальнейшее развитие было бы значительно быстрее при каком либо коммерческом применении.
Если смотреть на обычные программы то дезассемблирование является аналогом предложенного к обсуждению.

Соответственно можно предположить что для восстановленноых HDL может быть такое же применение.

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

- Анализ логики работы каких то интересных узлов. (важным является возможность восстанавливать стандартные высокоуровневые библиотечные модули а так же инструменты удобного объединения мелких кусков в нечто большее и осмысленное. Т.е. выделение модулей и иерархических частей.)

- Генерация кастомных прошивок для защиты своего проекта. Когда кодовые данные зашиваются прямо в битрим без раскладки. Аналог 1ого применения но для своей прошивки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Если смотреть на обычные программы то дезассемблирование является аналогом предложенного к обсуждению.
Имхо - увы, результат синтеза RTL "немного" отличается от компиляции программы - и если по ассемблеру еще можно (но далеко не всегда) как-то востановить высокоуровневую структуру (довольно мал набор паттернов) - то из gate-level "поднять" наверх что то вменяемое наверно будет нельзя - уж больно сильно размазывается логика дизайна по гейтам.

А ковырять gate-level то еще удовольствие. Я как то пару раз занимался похожим :01: - да и то там был не чистый нетлист а результат после MAP - хоть часть структуры и имен оставалась.

 

Соответственно можно предположить что для восстановленноых HDL может быть такое же применение.

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

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

 

- Анализ логики работы каких то интересных узлов. (важным является возможность восстанавливать стандартные высокоуровневые библиотечные модули а так же инструменты удобного объединения мелких кусков в нечто большее и осмысленное. Т.е. выделение модулей и иерархических частей.)
Иногда глядя на исходники RTL не понимаешь что и как должно работать.

Как представлю свой последний дизайн для Virtex7 в виде чистого gate-level и необходимость поменять там что-то - ужас - наверное сегодня ночью не засну.

 

- Генерация кастомных прошивок для защиты своего проекта. Когда кодовые данные зашиваются прямо в битрим без раскладки. Аналог 1ого применения но для своей прошивки.

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

 

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я как то баловался тем, что по нетлисту восстанавливал функции, используя перл и библиотеку Verilog-perl. В принципе, ничего сложного здесь нет - из флопа записать конструкцию always, а из логики восстановить и записать assign-функцию. Используя десяток подобных шаблонов можно любой нетлист сконвертить. Конечно, результат будет то же что и обфусцированый верилог - разобраться что есть что, очень тяжело. С другой стороны, такой верилог гораздо информативнее и компактнее нетлиста: если кто то задался целью реверс инжиниринга, подобный конвертер будет крайне полезен. Но очень сомневаюсь что на этом можно заработать, скорее проблем наживете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за ответы.

Поясню подробнее: я подразумеваю создание ncd (для ise) файла идентичного пршивке, значит bitgen из него создаст идентичный до каждого бита файл.

Редактировать нетлист врчную затруднительно поэтому нужны hdl файлы соотвествующие ему логичеки, схематически и по требуемым задержкам. Т.е при синтезе стандартными средствами ise будет получаться прошивка аналогичная оригинальной которую сразу можно использовать на реальном устройстве. Среди элементов автоматизировано можно распознать простые схемы понятного назначения, вероятные независимые блоки, кандидаты на известные ядра (частично распознавание уже реализовано). Кроме этого легко выделить части жестко привязанные к изначальному типу плис отдельно и остальную легко переносимую логику. Для реверс инженеринга (и не только) можно добавлять внутрь прошивки живого железа дополнительные блоки анализаторы и уже вручную разбираться как что работает на реальных примерах без необходимости разбираться в обфусцированых hdl кодах.

Далее названия с опечатками специально...

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

Соответственно можно предположить что для восстановленноых HDL может быть такое же применение.

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

Ближе к attach+debug а не просто дизассемблированию, а также аналог hex-rays (asm -> c). Любые изменения можно вносить стандартными средствами ise для v5,6,7 или даже перенести на другие плис. Я не ограничиваюсь xlinx, просто в данный момент для них уже многое сделано и сам ise хороший донор данных.

- Генерация кастомных прошивок для защиты своего проекта. Когда кодовые данные зашиваются прямо в битрим без раскладки. Аналог 1ого применения но для своей прошивки.

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

Я не очень понял что имеется в виду и что не получится сделать сейчас в полностью своем проекте на ise/vivdo/quatus? Кстати паралельно с реверсным процессом по возможности делается нормальный процесс (p&r netlist)->verify->timing analyse->bitstream без использования ПО производителя, аналогично на v5,6,7

из gate-level "поднять" наверх что то вменяемое наверно будет нельзя - уж больно сильно размазывается логика дизайна по гейтам.

А ковырять gate-level то еще удовольствие.

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

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

 

Высказывайте предложения какую прошивку от реального устройства разобрать и опубликовать здесь результаты

Пока только vitex lx 5 6 7, впринципе можно spatan6, kitex7,atix7. Само собой устройство не должно быть засекречено и прошивка (bin,bit,xsvf,mcs) не зашифрована и доступна автору предложения. Результаты не в ближайший месяц, я уже упоминал что много мелочей для полноценного ncd не готово, настройки от pci-e и gtx буду делать в последнюю очередь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не очень понял что имеется в виду и что не получится сделать сейчас в полностью своем проекте на ise/vivdo/quatus?
Генерация некой пары прошивка - ключ. Т.е. некой аппаратой струтуры которую можно открыть только заданным ключём. Причём делать это без перераскладки.

 

Возможно это можно сделать и сейчас. Я могу не знать всех доступных тонкостей.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

...

Я не очень понял что имеется в виду и что не получится сделать сейчас в полностью своем проекте на ise/vivdo/quatus?

Я имел ввиду что генерация кастомной прошивки без полного P&R возможна уже имеющимися средствами

Например закладывая реализацию части логики в виде BRAM и затем обновление содержимого этой BRAM непосредственно в выходном нетлисте.

 

...

Кстати паралельно с реверсным процессом по возможности делается нормальный процесс (p&r netlist)->verify->timing analyse->bitstream без использования ПО производителя, аналогично на v5,6,7

...

А вот это (если я Вас правильно понял на счет P&R) как раз более перспективное направление - если сделаете P&R лучше чем родной то сам Xilinx его и купит :)

 

Успехов! Rob.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день. Тема не обновлялась 4 года смотрю. 

Есть что-нибудь новое в этом направлении? :) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...