В рамках священной борьбы с разнообразием взор непременно обращается к форматам файлов. На моем винте около 5000 разных расширений файлов, 800 из которых встречаются 10 и чаще раз. Часть из них созданы неизвестно кем, часть непонятно для чего, еще часть неведомо как читать
(
Read more... )
Comments 16
Reply
Reply
Reply
Buffer Overrun in DFDL Processing Could Allow Code Execution
Reply
Такое ощущение, что разработчики ни разу не видели реального формата данных (не искуственного, который сделан для длгосрочного промежуточного хранения и interoperability, а реального, повседневно используемого).
И вообще, декларативный подход к описанию форматов - работает только на совсем-совсем синтетике.
Пока, единственный практичный способ описания форматов - это шаблоны 010. (Если интересно, могу привести несколько примеров из реальной жизни). Да, оно ужасно - но работает.
Аналогично, в реальной жизни не работает FLIRT, уже лет шесть как. Да, можно что-то определить с его помощью, если в .exe вкомпилена статическая библиотека без модификаций. На практике, такое происходит очень редко. Даже простое включение link-time code generation делает половину библиотечных функций нераспознаваемыми. Так что, если хочется результатов - приходится писать .idc, который матчит не коды команд, а куски CFG и call graph
Reply
Reply
Я в качестве примера самого сложного формата для своих велосипедов использовал PE. Вроде бы DFDL его парсит, если я ничего не пропустил. Знаете формат сложнее или что не распарсит DFDL?
Почему именно 6 лет?
Не согласен с вашим мнением о декларативном подходе. Мой велосипед создавался из си-кода преобразованием в несколько облегченный AST (что делаем в этой точке парсинга, в каком виде данные, куда их кладем), вполне декларативное описание парсера файла, более удобное, чем собственно си-код, возможностью остановок по требованию и проверок, возможностью подключения вместо компиляции.
Reply
Reply
(The comment has been removed)
Reply
Reply
Leave a comment