| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > найти дельту изменений exe |
| Автор: Nutz 1.2.2010, 15:18 |
| Доброго времени суток. В общих чертах нужно написать приложение, которое бы сравнивало старую версию программы с новой (exe) и выводило бы дельту изменений. т.е. как я понял нужно сравнивать бинарный код exe'шников и вывести блоки вставки. |
| Автор: Snowy 1.2.2010, 17:29 |
| Что такое "дельта изменений"? Чем не подходит родная виндовая fc /b file1 file2 |
| Автор: Nutz 1.2.2010, 18:06 |
| delta изменений - это условно. попробую объяснить иначе: есть 2 exe (оригинал и его измененная копия). к примеру в оригинале по нажатию на кнопку выводится сообщение "Hello World". в копии же все тоже самое но текст сообщения другой, например "Привет Мир". Нужно сравнить и вывести участки бинарного кода с несоответвием. |
| Автор: Snowy 1.2.2010, 18:27 |
| Для этого в Windows (и даже в DOS) есть родная комманда - fc сравнивает текстовые и бинарные файлы. работает в стандартной консоли набрать fc /? - все про себя расскажет с ключём /b сравнивает бинарные файлы вывод стандартный. Можно перенаправить в файл или захватить пайпом. Я и спрашиваю, чем не устраивает родной инструмент? |
| Автор: former 1.2.2010, 18:31 |
| В дополнение к предложению Snowy, можно посмотреть, как это реализовано в различных редакторах с открытым исходным кодом (типа Notepad++). |
| Автор: Nutz 1.2.2010, 18:43 |
вывода собственно самих участков с несоответствями не наблюдаю. выводится весь бинарный код, что для первого, что для второго. Добавлено через 3 минуты и 9 секунд блин не туда посмотрел. все верно. а как перенаправить найденный различия в файл |
| Автор: former 1.2.2010, 18:49 |
http://www.sql.ru/forum/actualthread.aspx?tid=640643 |
| Автор: Nutz 1.2.2010, 18:59 |
| В продолжение темы... Допустим, я получил различия. Как мне применить изменения к старой версии exe (file1), чтобы file1 = file2 |
| Автор: bems 1.2.2010, 23:23 |
| скопировать файл2 в файл1 с заменой |
| Автор: Nutz 2.2.2010, 14:33 |
Все бы и хорошо, но при значительных изменнениях, результутирующий файл после выполнения команды оказывается, как минимум, в 10-15 раз больше собственно самого исполняемого (который сравниваем). Если даже просто вставить один доп. байт в начало второго файла, то в итоге получится различие не в одном байте, а во всех. Нужен более продвинутый анализ различий с учетом возможности вставки или удаления кусков. |