Двоичный файл шаблона - PullRequest
       18

Двоичный файл шаблона

1 голос
/ 05 декабря 2011

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

Каков наилучший способ реверс-инжиниринга бинарного файла?Как выяснить, какой язык / шифрование используется, или мне вообще нужно?Как только я это сделаю, какая программа лучше (бесплатная, предпочтительная) для получения информации?Это в системе Windows, но я запускаю Linux-систему OpenSUSE, которую я не против использовать для помощи в решении проблемы.

1 Ответ

5 голосов
/ 08 ноября 2012

Комментарий, сделанный примерно год назад, является основой того, что я хотел бы сделать, а именно - провести обратный инжиниринг формата. Рассматривайте устаревшую программу как черный ящик. Я предполагаю, что вы все еще можете запустить устаревшую систему. Самое первое - это превратить всю унаследованную программу в подпрограмму, которую можно как-то вызывать. Это может означать создание сценариев, запуск их внутри виртуальной машины, моделирование и / или симуляцию устройств и т. Д .; что бы ни работало. Задайте отдельный вопрос для вашей конкретной ситуации, если вы уже не знаете, как это сделать. Однако цель состоит в том, чтобы автоматизировать использование устаревшего программного обеспечения, чтобы вы могли запускать тестирование и тестирование комплектов против него.

Вы упоминаете, что может использоваться шифрование. Разберись с этим первым. Сильные шифры обладают так называемым свойством лавины: изменение одного бита на входе изменяет 50% битов на выходе, что равносильно псевдослучайному перевороту битов. Вы хотите использовать свойство лавины, чтобы (1) проверить наличие шифрования и (2) выяснить структуру шифрования. Например, если база данных зашифровывает строку за раз, то изменение одного бита сохраненной строки в любом месте приведет к изменению средней половины бит зашифрованной строки. Ясно, что если изменение одного бита приводит к изменению всего файла, у вас возникает проблема другого типа, чем при изменении только нескольких битов ( например, контрольных сумм, и т. Д. ). Если у вас есть шифрование в любой форме, вам может понадобиться запустить наследие под отладчиком и выяснить алгоритм таким образом; это может не стоить того.

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

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

...