eXeLab
eXeL@B ВИДЕОКУРС !

Курс видеоуроков «Программирование и взлом 2O18»
Обновлен 13 сентября 2O18 года
Свежие инструменты, новые видеоуроки!

  • 300+ видеоуроков
  • 800 инструментов
  • 100+ свежих книг и статей

УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: Gmc, Belg (+6 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Софт, инструменты —› CmpDisasm - Утилита для сравнения PE файлов в дизассемблированном виде
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 12 . 13 . >>
Посл.ответ Сообщение

Ранг: 138.7 (ветеран)
Статус: Участник

Создано: 30 января 2009 16:33 · Поправил: crc1 New!
Цитата · Личное сообщение · #1

В HEX виде много разных утилей для сравнения файлов. В дизассемблированном не встречал. Наваял свою.
Баг-репорты приветствуются
******************************************
Выравнивания на длину инструкции НЕ БУДЕТ
******************************************
History:
* 30 января 2009 г. v 0.1
* Собственно первый глючный вариант

* 29 марта 2009 г. v 0.35
* Добавлен пункт меню "Copy address to clipboard" в контекстном меню
* Добавлена примочка "stay on top", запоминается в реестре.
* Окно проги разворачивается на весь экран
* Добавлена цветовая схема, цвет запоминается в реестре
* Открывает занятые файлы + возможность работать с этими файлами в других приложениях
* Добавлено отображение адреса VA, либо Offset. Менять можно через меню, либо щелкнув по шапке столбца адреса
* Добавлена информация о секциях, различия выделяются цветом

* 16 октября 2009 г. v 0.5
* Добавлены HEX дампы файлов
* Добавлена возможность сравнивать диапазоны файлов

* 20 января 2010 г. v 0.6
* Поставил ScintillaGadget для вывода HEX дампов
* Исправил некоторые баги
* Добавил выбор двух последних файлов

* 3 февраля 2010 г. v 0.65
* Добавил выбор двух последних файлов, после драг-дропа
* Убирал дублирующиеся записи в логе

* 5 марта 2011 г. v. 0.7
* Заменил двиг на beaengine x86-64 Можно сравнивать 64 битные файлы
* Исправил крешь при запуске на win7

* 6 апреля 2011 г. v. 0.71
* Изменил фейс главного окна
* Сделал выделение цветом различий в File Info в главном окне
* Добавил пункт меню Исключить PE Header из анализа
* Добавил пункт меню "Save differences as"

* 16 октября 2011 v. 0.75
* Добавил просмотр заголовков файлов
* Автоматическое переключение disasm\hex вкладок, в зависимости от код\данные
* Исправил обнаруженные баги

*30 августа 2012 v. 0.76
* Пофиксил баги

*17 декабря 2012 v. 0.77
* Пофиксил баги
* Проверил на win xp sp3, win 7 x32/x64 win 8 x64

*4 апреля 2013 v 0.79
*Изменил интерфейс (кнопки переместил в тулбар)
*По дефолту, заголовок выключен из сканирования
*Исправил баги которые были отправлены в ПМ и которые нашел сам
*Исправил грамматическую ашыпку
--> Link <--

* 13 апреля 2013 v 0.81
* Исправил ошибку при перетаскивании нескольких файлов драг-дропом и некоторые другие
* Добавил сравнение файлов вперед и назад
--> Link <--

* 8 декабря 2013 v 0.83
* Убрал ошибки
* Добавил импорт\экспорт
--> Link <--

* 25 января 2014 v. 0.84
* Добавил командную строку ; использовать: CmpDisasm.exe file1 file2

{ Атач доступен только для участников форума } - CmpDisasm.rar

Ранг: 138.7 (ветеран)
Статус: Участник

Создано: 27 марта 2009 12:01 New!
Цитата · Личное сообщение · #2

Bronco пишет:
А то бэкапить файлО приходитЦо, что б в Ольку загрузить и пройтись по этим адресам.
И сделай пожалуйста:
- Copy address to clipboard

Сделаю
Jupiter
Расшарить файл при CreateFile не проблема, можно просто после маппирования, закрывать хендл.
Вопрос вроде стоял в другом
SVLab пишет:
Слелать возможность открывать файл, уже занятый другой программой или просто запущенный.

Я почитал Ms-Rem'a - "3 метода работы с занятыми файлами" и стало немножко тоскливо


Ранг: 558.3 (!)
Статус: Модератор
Research & Development

Создано: 27 марта 2009 16:13 New!
Цитата · Личное сообщение · #3

crc1 crc1 пишет:
возможность открывать файл, уже занятый другой программой или просто запущенный

мой пример как раз для такого случая
не поленись, реализуй то, что я написал

Ранг: 138.7 (ветеран)
Статус: Участник

Создано: 31 марта 2009 14:19 · Поправил: crc1 New!
Цитата · Личное сообщение · #4

Jupiter
Не поленился и действительно, с такими параметрами
CreateFile(file$,#GENERIC_READ,#FILE_SHARE_READ,NULL,#OPEN_EXISTING,#F ILE_ATTRIBUTE_NORMAL,NULL)
Получает хендл занятого файла и дает возможность раотать с этим файлом другим приложениям.
Спасибо.


Ранг: 558.3 (!)
Статус: Модератор
Research & Development

Создано: 31 марта 2009 17:34 New!
Цитата · Личное сообщение · #5

атрибуты файла получай через GetFileAttributes (проверяй на FILE_ATTRIBUTE_READONLY) и его передавай ф-ции CreateFile, т.к. бывают скрытые и системные файлы

пожалст ;)

Ранг: 3.6 (гость)
Статус: Участник

Создано: 7 апреля 2009 08:41 New!
Цитата · Личное сообщение · #6

Хотелось бы еще, чтобы были кнопки вперед на шаг, назад на шаг, чтобы перемещаться непосредственно в программе.
И хорошо бы чтоб Compare in file выводил диалог, куда сохранить текстовик, а не клал тупо в ту папку, из которой работает.


Ранг: 752.3 (! !)
Статус: Участник
Student

Создано: 7 апреля 2009 13:25 New!
Цитата · Личное сообщение · #7

gar_Maxx пишет:
а не клал тупо в ту папку, из которой работает.

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

Ранг: 48.2 (посетитель)
Статус: Участник

Создано: 7 апреля 2009 14:57 New!
Цитата · Личное сообщение · #8

gar_Maxx пишет:
И хорошо бы чтоб Compare in file выводил диалог, куда сохранить текстовик, а не клал тупо в ту папку, из которой работает.

Лучше уж тогда чтоб сохранял в папку первого сравниваемого файла

Ранг: 3.6 (гость)
Статус: Участник

Создано: 7 апреля 2009 22:14 New!
Цитата · Личное сообщение · #9

LIZARD
Да пожалуй так тоже хорошо

Ранг: 13.4 (новичок)
Статус: Участник

Создано: 9 апреля 2009 13:41 New!
Цитата · Личное сообщение · #10

А может сделать как в старой досовской утилитке NCF? По-моему удобно и наглядно

{ Атач доступен только для участников форума } - NCF.COM

Ранг: 48.8 (посетитель)
Статус: Участник

Создано: 10 апреля 2009 01:20 New!
Цитата · Личное сообщение · #11

в тему о сравнении файлов:

research.eeye.com/html/tools/RT20060801-1.html

"The eEye Binary Diffing Suite (EBDS) is a free and open source set of utilities for performing automated binary differential analysis. This becomes very useful for reverse engineering patches as well as program updates."

иногда юзаю, т.к. bindiff штука платная

Ранг: 2.6 (гость)
Статус: Участник

Создано: 30 июня 2009 10:36 New!
Цитата · Личное сообщение · #12

crc1

Хотел спросить как у тебя с проектом,что-то движется?или ветка умерла?

Ранг: 271.5 (наставник)
Статус: Участник
Packer Reseacher

Создано: 30 июня 2009 10:46 New!
Цитата · Личное сообщение · #13

Скоко не слежу, автор нихера нового не постит, следовательно ЗАБИЛ

Ранг: 203.3 (наставник)
Статус: Участник
UPX Killer -d

Создано: 30 июня 2009 11:11 New!
Цитата · Личное сообщение · #14

darkeagle пишет:
в тему о сравнении файлов:


В тему о сравнении файлов, в частности сорцев: AptDiff

Ранг: 271.5 (наставник)
Статус: Участник
Packer Reseacher

Создано: 30 июня 2009 11:18 New!
Цитата · Личное сообщение · #15

AlexZ
>> тему о сравнении файлов, в частности сорцев: AptDiff
не в тему! То что ты предложил это обыкновенная хрень которую лучше заменит какой-нить WinMerge . А эта тема про нахождение различий в коде ;)

Ранг: 138.7 (ветеран)
Статус: Участник

Создано: 21 августа 2009 15:30 · Поправил: crc1 New!
Цитата · Личное сообщение · #16

theCollision пишет:
Скоко не слежу, автор нихера нового не постит, следовательно ЗАБИЛ

Не, не забил. Просто проект крупный подвернулся, со временем напряг.
Вот, кое-что доделал.
CmpDisasm v. 0.35
;add
; Добавлен пункт меню "Copy address to clipboard" в контекстном меню
; Добавлена примочка "stay on top", запоминается в реестре.
; Окно проги разворачивается на весь экран
; Добавлена цветовая схема, цвет запоминается в реестре
; Открывает занятые файлы + возможность работать с этими файлами в других приложениях (OllyDbg...)
; Добавлено отображение адреса VA, либо Offset. Менять можно через меню, либо щелкнув по шапке столбца адреса
; Добавлена информация о секциях, различия выделяются цветом
Может еще чего...

Ранг: 133.4 (ветеран)
Статус: Участник

Создано: 21 августа 2009 19:34 New!
Цитата · Личное сообщение · #17

Попробовал сравнить два файла, ан не получилось, пишет слишком разные файлы. В секции кода различия незначительны, просто после небольшой правки ресурсов в рестораторе измениляся размер секции ресурсов, и последующие секции тоже сместились. Можно ли посекционно задавать диапазон сравнения? Что-то непонятно в окне Section Information, на что влияют чекбоксы, и в чем различие кнопок OK и Cancel?

Ранг: 271.5 (наставник)
Статус: Участник
Packer Reseacher

Создано: 21 августа 2009 20:21 · Поправил: theCollision New!
Цитата · Личное сообщение · #18

crc1
Пользоваться не возможно! взял запаковал krypton v0.4 krypton 0.5 и указал секции, а фигу!

Вобщем, мое видение :
1. сравнивать чисто код начиная с AddressOfEntryPoint
2. сравнивать чисто ресурсы
3. Сравнивать указанного адреса либо как код, либо как данные
4. Можно добавить не большую эмуляцию, которая будет бегать по jmp, jX / jNX . Ну и с возможностью убрать команды к примеру EB , т.е. своего рода лог трейсера, это бы помогло разгребать полиморфики ;)

По поводу ГУИ:
1. Информацию из заголовка, лучше выводить по запросу, как сделано в hiew по ф8, у тебя может другая кнопка будет. С экономишь рабочее пространство
2. При старте проги, чтобы выплывало окно с выбором путей для сравнения или два прошлых стравнения чуть по ниже на этом же окне

Ранг: 49.6 (посетитель)
Статус: Участник

Создано: 21 августа 2009 23:26 New!
Цитата · Личное сообщение · #19

crc1
Неплохо было бы добавить возможность перемещения по JCC, JMP и CALL, а также сделать поле для ввода адреса перехода

Ранг: 138.7 (ветеран)
Статус: Участник

Создано: 24 августа 2009 08:37 New!
Цитата · Личное сообщение · #20

SVLab пишет:
на что влияют чекбоксы
Пока ни начто, просто показывают, что в данной секции есть код.
кнопки OK и Cancel это на будущее. Для сравнения диапазонов.
По поводу отказа сравнения: сделаю пункт меню "Сравнивать любые файлы. Можно будет сравнивать хоть winword с notepad'ом
theCollision
1. Согласен, сравнивать в disasm'е нужно только код, остальное в HEX виде. на счет "начиная с AddressOfEntryPoint" не согласен. В делфях EP в конце секции кода. Иногда и в хидер код пихают.
2. Этот пункт не понял.
3. Пишу модуль для сравнения HEX дампов
4. Прыжков по джампам и калам не будет по ряду причин.
Офтоп: в субботу лосося поймал на 16 кг. 20 минут воевал

Ранг: 271.5 (наставник)
Статус: Участник
Packer Reseacher

Создано: 24 августа 2009 16:46 · Поправил: theCollision New!
Цитата · Личное сообщение · #21

>>2. Этот пункт не понял.
В ресурсы можно закинуть что угодно, к примеру код трояна или еще чего-нить, тогда имеет смысл сравнить два файла по содержимому в ресурсах.

>>а счет "начиная с AddressOfEntryPoint" не согласен.
К примеру, кто-то файл заразил(пакер к примеру), а на первом байте jmp еще что-то более хитрое(лже-сигнатура), тогда мне твоя точка входа WinMain или аналог ничего не даст! Она будет иметь смысл, если буду сравнивать работу чистых, распакованных файлов!

>>3. Пишу модуль для сравнения HEX дампов
Просто сравнить дампы я и спомощью fc смогу, да и другие также! А вот чтобы сравнить код, то придется открывать один packed1.exe в одном экземпляре hiew и packed2.exe в другом. Затем переходить по нужным смещениям и сравнивать. Но зачем так мудренно? Вот тут-то и начинаю искать сравниватель кода. Поэтому и возникает нужда в DarunGrim2 к примеру.

>>4. Прыжков по джампам и калам не будет по ряду причин.
И многое потеряешь! Если присмотришься к утиллитам BinDiff, IdaCompare, то увидишь что они сравнивают блоками, которые разграничивают до перехода и после перехода. А то что различается помечают красным, очень удобно!

Ранг: 24.1 (новичок)
Статус: Участник

Создано: 28 августа 2009 18:57 · Поправил: RedAbishai New!
Цитата · Личное сообщение · #22

1. Можно было бы задавать пути/имена файлов аргументами командной строки при запуске программы. Запускать из файл-менеджера так было бы быстрее.

2. Запустил CmpDisasm.exe, открыл два экзешника, сравнил, потом открыл другие два экзешника - а первые два так и остались заблокированы, ни удалить ни переместить никуда. Баг?

3. При запуске после выбора первого и второго файла сравнение можно было бы производить автоматом, не дожидаясь, пока юзер нажмет на кнопку "Compare" - очевидно, что в 99% случаев так и должно быть.

4. Да и разворачивать во весь экран было бы все-таки неплохо.

Ранг: 138.7 (ветеран)
Статус: Участник

Создано: 28 сентября 2009 13:34 New!
Цитата · Личное сообщение · #23

1. RedAbishai пишет:
Можно было бы задавать пути/имена файлов аргументами командной строки при запуске программы. Запускать из файл-менеджера так было бы быстрее.

Что, драг дропом бросить на форму два файла это долго?
2. При выборе файла он сразу маппируется в память и хендл файла освобождается. Так что файлы блокироваться не должны.
3. Файлы дизассемблируются не полностью, а только те участки где есть различия. Кнопка "Compare" служит для перехода к следующему различию.
4. Давно уже реализовано.
RedAbishai возможно ты скачал старую версию?


Ранг: 254.8 (наставник)
Статус: Участник
Advisor

Создано: 29 сентября 2009 08:19 New!
Цитата · Личное сообщение · #24

crc1
По ходу за пределами секции кода, отображает листинг кода, уже с не правильными адресами.

Ранг: 138.7 (ветеран)
Статус: Участник

Создано: 8 октября 2009 15:15 · Поправил: crc1 New!
Цитата · Личное сообщение · #25

Bronco если ты имеешь ввиду такой листинг

то эт нормально, т.к. кода нету и х.з. че там дизассемблировалось. Адреация разезжается, потому как длины команд разные. Для этотих случаев я прикручу к тулзе HEX-дамп, чтобы можно было глянуть разницу в ASCII кодах.


Ранг: 254.8 (наставник)
Статус: Участник
Advisor

Создано: 8 октября 2009 18:59 New!
Цитата · Личное сообщение · #26

crc1 пишет:
если ты имеешь ввиду такой листинг

Типо этого, тока код рабочий, не таблицы с данными.
crc1 пишет:
че там дизассемблировалось

VA адрес секций ведь в заголовке прописан.


Статус: Пришелец

Создано: 8 октября 2009 19:13 New!
Цитата #27

crc1
Скачал прогу. Понравился дизайн. Не понравилось вот что. Тулза ругается что размеры, названия и флаги секций различаются, не давая возможность форсировать анализ. Желательно сделать возможность сравнивать две секции (я же точно знаю что это один и тот же файл, просто дампы разные). А размеры у них разные только потому что в одном выравнивание 0x200, а в другом 0x1000.

Ранг: 138.7 (ветеран)
Статус: Участник

Создано: 8 октября 2009 21:55 · Поправил: crc1 New!
Цитата · Личное сообщение · #28

Bronco пишет:
crc1 пишет:че там дизассемблировалось

Bronco пишет:
VA адрес секций ведь в заголовке прописан.

Не пойму, если в одном файле в секции данных стоит "Пошел на Йух", а в другом файле по этому же адресу "Я тебя люблю", то каким образом это можно дизассемблировать? И при чем здесь VA адрес, если кода нету?
progopis форсировать анализ это шорошо, но занимаюсь этой утилитой урывками. Сам знаю, что не хватает сравнения отдельных диапазонов, но пока нет времени (кризис мля, закзчик душит) Ведь писал ее для себя, по бырому, задолбало уже... А на счет форсировать думаю поборем


Ранг: 254.8 (наставник)
Статус: Участник
Advisor

Создано: 9 октября 2009 14:39 New!
Цитата · Личное сообщение · #29

crc1, да дизассемблит пучком, и file offset в яблочко, а вот если это за пределами секции кода, то с VA фигня какя-то.
проверил "калькуляторы" в PE Tools и CFF Explorer, вычесляют аналогично. Сам теперь кумекаю, а как же правильно посчитать ????

Ранг: 138.7 (ветеран)
Статус: Участник

Создано: 10 октября 2009 02:36 · Поправил: crc1 New!
Цитата · Личное сообщение · #30

Bronco не бзди, все будет хорошо. Скоро добавлю дамп в hex виде, а там разберемся.
Мужики, кто в теме, подскажите. Сравнение hex дампов сделал на второй вкладке, но бля затык, по горизонтали не влезют два окошка по размеру(по ширине экрана) Мерял на ноуте 15" с макс разрешением экрана. Можно эти окна сделать друг над другом, но это чет не айс. Шрифты менял, минимальный читабельный это - 8 Шрифт Courier New. Для больших мониторов поблем нет, развернул на полный экран и фсе, а для ноутов я х.з. Советуйте...
Bronco, не будь голословным, выкладывай файлы где у тебя непонятки с адресами, буду разбираться
Не удержаля глядя на аватар Bronco offtop Курить мы будем, НО пить не бросим end offtop

Ранг: 133.4 (ветеран)
Статус: Участник

Создано: 10 октября 2009 10:53 New!
Цитата · Личное сообщение · #31

crc1 пишет:
Шрифты менял, минимальный читабельный это - 8 Шрифт Courier New

Courier New 7 должен влезть. Дай возможность выбора, и пусть каждый сам заморачивается с этим.
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 12 . 13 . >>
 eXeL@B —› Софт, инструменты —› CmpDisasm - Утилита для сравнения PE файлов в дизассемблированном виде

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS