Сравнить два exe файла

Обновлено: 05.07.2024

В этой статье описывается, как использовать утилиту Windiff.exe, средство, которое графически сравнивает содержимое двух файлов ASCII или содержимое двух папок, содержащих файлы ASCII, для проверки того, являются ли они одинаковыми. Количество byte файла и дата создания не являются надежными указаниями.

Применяется к: Windows Server 2012 R2, Windows 10 — все выпуски
Исходный номер КБ: 159214

Сводка

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

Дополнительная информация

В Microsoft Windows 2000 и более поздних Windiff.exe в исходном CD-диске в папке Средства \ поддержки. Чтобы установить средства поддержки, запустите Setup.exe из папки Средства \ поддержки. Windiff.exe также находится в Support.cab файле. Support.cab входит в каждый пакет службы.

В microsoft Windows NT, Windiff.exe включен в набор ресурсов Windows NT 4.0. Чтобы скачать Windows NT 4.0 Средства поддержки комплекта ресурсов, посетите следующий веб-сайт Microsoft:
Средства поддержки набора ресурсов Windows NT ms Windows NT 4.0

Утилита Windiff.exe графически иллюстрирует различия между текстовыми файлами ASCII, которые вы указываете, или разницей между папками, которые содержат текстовые файлы ASCII, и особенно полезна для сравнения исходных кодов программы. Вы можете использовать Windiff.exe для сравнения целых деревьев подмостки. На дисплее показана сводка состояния сравнения списка файлов (режим контура) или подробное сравнение файлов (расширенный режим).

Чтобы сравнить два файла с помощью Windiff.exe, выполните следующие действия:

В меню File нажмите кнопку Сравнение файлов.

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

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

Сведения в правой области указывают, есть ли разница в файле.

Чтобы просмотреть фактические различия в файлах, щелкните первую строку в результатах Windiff.exe, а затем в меню Расширение нажмите кнопку Только левый файл, только правый файл , или Оба файла.

Полученные в цвете результаты указывают на различия в файле.

Чтобы сравнить две папки с помощью Windiff.exe, выполните следующие действия:

В меню File щелкните Сравнение каталогов.

В диалоговом окне Выбор каталогов введите два имена папок, которые необходимо сравнить в полях Dir1 и Dir2. Если вы хотите включить подмостки, щелкните, чтобы выбрать контрольный ящик Include subdirectories.

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

Чтобы просмотреть фактические различия в файлах, щелкните строку, которую вы хотите в результатах Windiff.exe вывода, а затем в меню Расширение нажмите кнопку Только левый файл, только правый файл , или Оба файла .

Полученные в цвете результаты указывают на различия в файле.

Вы также можете Windiff.exe из командной строки. Сведения о том, как это сделать, или дополнительные сведения об использовании Windiff.exe см. в Windiff.exe справке (Windiff.hlp).

Существуют и другие утилиты, доступные помимо Windiff.exe, которые можно использовать для сравнения локальных ASCII и двоичных файлов или сравнения локального файла с сомнительным файлом на удаленном сайте.

Чтобы сравнить два файла или группы файлов на локальном сайте, можно использовать команды Fc.exe и Comp.exe файлов. Обе команды запускаются из командной подсказки.

Вы можете использовать Fc.exe для сравнения двух ASCII или двоичных файлов на основе строки за строкой. Он предлагает несколько вариантов командной строки. Например, используйте команду fc /b для сравнения двух двоичных файлов. Полный список параметров введите fc /? в командной подсказке.

Вы можете Comp.exe для сравнения ASCII и двоичных файлов и сравнения групп файлов в двух разных папках. Например, чтобы сравнить все .dll в одной папке со всеми файлами .dll в одной папке на другом компьютере, введите следующее в командной подсказке:

Чтобы сравнить локальный файл с удаленным, можно использовать утилиту, например, сторонний Pkzip.exe. Для этого используйте Pkzip.exe почтовый индекс файла на локальных и удаленных сайтах. Так как отжимание большого файла может занять некоторое время, быстрее использовать параметр pkzip-e0 (без сжатия). После того как вы заперли файлы, используйте команду, чтобы изучить значение проверки циклической pkzip -v избыточности (CRC32) для .zip файлов. Если значения CRC32 одинаковы для удаленных и локальных сайтов, файлы одинаковы.

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

Запуск .ехе файлов
Изучаю C++ полгода.Программирую на Visual Studio 2010. Windows XP,7.Недавно познакомился с.


запуск ехе файлов
Доброго всем вечера. Кто знает, чем отличается запуск ехе файла через ярлык на рабочем столе от.


Выгрузка и установка файлов из ЕХЕ
Эти программисты, Вы действительно уникальные люди, столько вопросов и Вы в состоянии ответить.

xAcTiViSioNx,
если под Windows то там всегда есть утилита fc.exe (files compare) используй эту утилиту с ключом /b и она укажет где находится разница Пробовал, выдает изменения в конце файла в нескольких строчках, что явно не то что мне нужно. Ради интереса менял вручную, ничего не изменилось. Как же они практически одинаковые, если даже размер на 30k отличается?

Длинна файлов немножко различается, один короче другого (чуть чуть), по этому и видно что 00 меняется на **. В хекс редакторе все и так видно. Но программа не показывает какие различия в начале файла. а они наверняка есть. Можете и сами проверить. Мне кажется тут нужно переводить все это дело в ассемблер, но в нем я ноль.

Добавлено через 7 минут
1.1 файл: 3,22 МБ (3*380*224 байт)
1.2 файл: 3,22 МБ (3*378*688 байт)

Может мне стоит написать в другой раздел? Тут посещаемость явно заниженная.

Вы заблуждаетесь. Бинарно, они полностью различны. Причем различаются даже совпадающие по размеру секции.

Опишите задачу более внятно - что есть ваши "магические значения" и как они влияют на поведение, тогда будет понятнее, где их искать. В текущей постановке задача бессмысленна. Например, прямое сравнение только секций AUTO для файлов 1.1 и 1.2 (они одинакового размера) 2,789,376 байт,

> Comparing files Crashday 1.1.001.[AUTO ] and Crashday 1.2.001.[AUTO ]

показывает более 2,000,000 различающихся байт. Причем, при визуальном сравнении видно, что эти изменения разбросаны по всему файлу.

Да действительно у вас показывает различия. В общем, ни на что не влияющее значение версии игры в онлайн режиме. Если версия клиента не совпадает с версией хоста, зайти на сервер не получится. Я видел что кто-то уже менял версию на 1.3-1.8, но ехе файл был зашифрован неизвестной программой (сжат в 3 раза до 1 мб), могу выложить если надо.
"BROWSERVERSION" - под этим отображается версия игры хоста.
"BROWSERSERVERVERSION" - под этим отображается версия игры клиента.
WinHex смог только вырубить показ версии хоста, и я видел все сервера как 0.0, больше ничего добиться не смог.

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

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

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

а с чего ты решил что игры разных версий одинаковы?
там могут(и скорее всего) исправлены разные глюки, переписаны функции, добавлен функционал, может даже переписан протокол
не зря ведь разные версии сервак не видит

На хабре уже было много статей о распределенных системах управления версиями (DVCS), их сравнений, а также сравнений GUI-клиентов для них. Также были обсуждения плагинов к IDE для работы с git и mercurial. Но практически не было информации об инструментах визуального сравнения и разрешения конфликтов слияния.

diff and merge


Недавно я «перескочил» с mercurial (который до сих пор считаю более удобным и логичным) на git, потому что, подавляющее большинство проектов, которые мне интересны, используют git и хостятся на github. В связи с этим, встал вопрос о пересмотре арсенала инструментов, в частности вопрос выбора инструмента визуального сравнения и слияния (diff and merge). Дабы восполнить недостаток информации на хабре, я решил написать этот мини-обзор. Как говориться — по горячим следам.

KDiff3

  • бесплатен;
  • поддерживает трехстороннее слияние;
  • умеет сравнивать директории;
  • с различными кодировками работает нормально;
  • без дополнений не подсвечивает синтаксис.

DiffMerge

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

WinMerge

  • Open Source;
  • никаких проблем с кодировками;
  • подсветка синтаксиса без лишних телодвижений;
  • сравнение директорий.
  • инструмент слияния является двусторонним, что может создавать неудобства в некоторых случаях;
  • Windows only.
  • GPL v2;
  • двустороннее и трехстороннее слияние файлов;
  • сравнение директорий;
  • подсветка синтаксиса (при установленном GtkSourceView).
  • для установки под Windows требуется установить Python, GTK+, Glib, GtkSourceView, что не каждому понравиться.

Diffuse

  • GPL;
  • поддержка 2-way, 3-way и n-way (произвольное количество файлов) слияния;
  • подсветка синтаксиса;
  • отлично работает с UTF-8;
  • неограниченная глубина отмен (Undo);
  • удобная навигация по коду.
  • разве что, невозможность сравнивать директории.

TKDiff

  • GPLv2;
  • можно добавлять закладки для различий;
  • с кодировками работает нормально;
  • интерфейс менее удобен и выглядит очень бедно (см. скриншот), чем у других продуктов.
  • нет подсветки синтаксиса;
  • не умеет сравнивать директории.

SmartSynchronize

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

BeyondCompare

  • трехстороннее слияние;
  • может сравнивать файлы, директории, удаленные директории, архивы, а также MP3-файлы, изображения и др. Но последние пункты — это в принципе не нужный функционал.
  • ShareWare;
  • нет версии под Mac.

Araxis Merge

  • трехстороннее слияние;
  • нет проблем с кодировками;
  • подсвечивает синтаксис;
  • помимо файлов, может сравнивать директории и синхронизировать их;
  • хорошо работает на сравнении больших файлов (гигабайты) и больших директорий;
  • генерация отчётов по результатам сравнения. (если это можно назвать плюсом).
  • ShareWare;
  • нет версии под Linux.

Git и DiffMerge

1) Добавим в директорию c:/Git/libexec/git-core/mergetools/
файл diffmerge следующего содержания:


2) Теперь добавим в файл c:/Users/swipe/.gitconfig
следующие строки:


3) Создадим конфликт и вызовем DiffMerge для его разрешения


tree


diff


conflict


merge

Git и WinMerge

1) Добавим в директорию c:/Git/libexec/git-core/mergetools/
файл winmerge следующего содержания:


Когда Git не может автоматически объединить изменения, происходит конфликт слияния и в конфликтующий файл добавляются маркеры слияния (<<<<<<<, =======, и >>>>>>>). Они необходимы для разрешения конфликта с помощью сторонних инструментов.
Рассмотрим файл readme.txt который образуется в результате выполнения слияния веток master и new в приведенном выше примере:


Мы можем открыть файл конфликтов с помощью программы WinMerge для разрешения конфликта.

open

После этого откроется средство двухстороннего слияния:

winmerge

Исходя из описанной логики перепишем команду слияния merge_cmd следующим образом:

По сути, оба приведенных варианта эквивалентны.

2) Отредактируем .gitconfig

последняя строчка отменяет сохранение backup-файлов в директории репозитория.

3) Создадим конфликт при слиянии двух веток (см. пример с использованием DiffMerge).

0x01 File Compare v0.1

0x01 File Compare - Программа предназначена для сравнения файлов в бинарном режиме (поиска различий) и (или) расчета CRC32. Сравнению подлежат только файлы одинакового размера. Рассчитывать CRC32 можно как для одного, так и для двух файлов сразу. Результаты сравнения можно сохранить в файл.

Особенности:
- Маленький размер исполняемого файла;
- Интерфейс Drag & Drop;
- Неограниченный размер сравниваемых файлов;
- Достаточно высокая скорость выполнения операций.

0x01 File Compare v0.1j

0x01 File Compare - File compare and CRC32, MD5, SHA-1 calculator.
Comparing files over 4Gb, high speed. Compare files of different lengths.

Implement file arguments (0x01 File Compare 0.1.exe file1.exe file2.exe program opens, do the comparison automatically).

Created by DonDD

文件数据对比工具 v1.0


File Compare v2.8


File Compare - программа для сравнения PE файлов одинаковой длины, отображает имеющиеся различные байты. Найденные отличия отображаются для каждого адреса (смещения). При этом в строке состояния отображается общее количество различий. Кроме основного назначения позволяет создавать патчи, файл CRK и Win32 GUI патч. Вы можете написать свое имя, название программы для своего патча.

CompareInfo v1.0


CompareInfo - утилита для сравнения двух файлов на различия, после анализа программа отображает список всех имеющихся различных байтов PE файла, также отображается такая информация как смещение файла, RVA / RVA адреса и количество измененных байт участков где файлы различаются.

CmpPE+ v0.4 Beta


CmpPE+ - простая утилита для сравнения PE файлов, сканирует участки кода на наличие разных значений, отображает различия VA, которые найдены при сравнении двоичных файлов. Вы можете просмотреть различия или сохранить их в файл журнала после завершения сравнения.

File Compare v2.0 (SCkhey)



File Compare v1.0 Screen

TCCT File Compare v1.1


TCCT File Compare - программа для сравнения двух исполняемых файлов на наличие в них различий, после сравнения программа отображает все найденные различия в виде таблицы со старыми и новыми значениями байт и их смещение, полученные данные можно сохранить в текстовый документ.

文件数据对比工具 v1.3


支持格式 exe txt等所有格式文件

Ver 1.0 Beta
对比功能基本实现
Ver 1.0
修复了字符相同的问题
Ver 1.1
增加了对PE内存地址的获取
优化了部分代码
修复了一些已知BUG 介于论坛规定,已将QQ删掉
Ver 1.1B
加入"写出日志功能"
Ver 1.2 优化版
优化对比代码,对比更加准确
优化写出日志
Ver 1.3 加入汇编代码分析

PE Compare Tools v1.1


PE Compare Tools - утилита для поиска изменений в исполняемых файлах, разработанa на базе движка Monstra PE Engine.

Возможности:
- Мультипоточное сравнение испольняемых модулей
- Поддержка сравнения один ко многим
- Возможность сравнивания файлов и произвольных модулей процесса
- Возможность выравнивания результатов
- Поддержка 32 и 64 битных модулей
и т.д.

PE Compare Tools - небольшая консольная утилита, задачей которой является поиск динамических патчей данных и кода исполняемых приложений. Утилита выполняет сравнение секций данных модуля из файла и процесса, находит различия и запоминает их.

Основные возможности:
- Поддержка релокаций (релокации не вносятся в список изменений)
- Возможность выбора секций для сканирования
- Сканирование выполняется произвольное время

Так же важно отметить что изменения отслеживаются не в реалтайме, циклически выполняется ReadProcessMemory и сравнение с оригиналом, поэтому некоторые изменения могут быть упущены. Ещё нужно учитывать то, что изменения записываются так как есть, не учитывая выравнивания. Т.е. если какие то данные 0x11223344 были изменены на 0x11224444, то программа определит изменение 1 байта.

PeDiffEr v1.0


Pediffer - улучшенное приложение pediff.dll-GUI с некоторыми расширенными функциями. С помощью этой утилиты вы можете сравнить два PE файла (exe, dll, . ). Pediff.dll использует алгоритм левенштейна для поиска идентичных и/или подобных функций в двух двоичных файлах. Есть возможность импортировать .map файл для первого двоичного файла и экспортировать перенастроенный .map для второго модуля.

REPT File Compare v0.94с


HexComp v1.0


HexComp - Program can compare binary files and display difference as hex output.

Why another comparer?
Because:
- In addition of basic comaring has special mode "by lines". Useful if you want see changed bytes as one patch
- Posibility change start offset (shift)
- Can display equivalent characters along with hex numbers
- Display not only changed bytes but also number of changed locations. Example: changed 10 bytes - this can represent e.g. 3 changes in file.

Read more in Readme.txt!

Hex Comparison v4.0


Hex Comparison - is a binary file comparison and hex editor. It helps you to compare files in binary format, serving as a hex editor.

Features:
- Allow quickly compare two files.
- Quickly find every different.
- Show different with customizing color.
- Allow save comparison result to file.
- Go to any offset of file quickly.
- Create new binary file.
- Find synchronous position by double click.
- Scroll every different.
- Modify binary file or text file easily.
- Find binary or ASCII string easily.

Compare It! v4.2.2221


Compare It! - универсальная программа, предназначенная для сравнения текстовых файлов, анализа различий и объединения версий. Результаты сравнения выводятся в удобной и очень наглядной форме. Работает практически со всеми известными форматами текстовых файлов: .txt, .doc, .xls, .xml и др.

HexCmp v2.34


HexCmp - хорошая программа для сравнения бинарных файлов в шестнадцатеричном (hex) режиме. Позволяет синхронно прокручивать сравниваемые файлы, имеет настраиваемую функцию подсветки найденных различий, мощную систему поиска, поддерживает работу с "горячими клавишами". Программа поддерживает работу с файлами размером до 4 Гб.

PEDiff v1.0 (diablo2oo2)


PEDiff - графическая оболочка для бесплатной библиотеки beaengine (на базе которой работает и CmpDisasm). Сравнивает PE файлы и отображает отличия в виде команд ассемблера. Менее функциональна по сравнению с CmpDisasm, в первую очередь из-за отсутствия подсветки.

CmpDisasm v0.84


CmpDisasm - мощная программа для сравнения PE файлов, показывает различия между файлами в виде команд ассемблера и HEX виде, адресация может быть как VA, так и OFFSET. Имеет подсветку найденных отличий, позволяет сохранить результаты сравнения в текстовый файл. Очень удобно для анализа изменений файлов после применения патчей.

Читайте также: