Сейчас на форуме: morgot, sashalogout, -Sanchez- (+3 невидимых)

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

Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

Создано: 30 января 2009 16:33 · Поправил: crc1
· Личное сообщение · #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

48de_25.01.2014_EXELAB.rU.tgz - CmpDisasm.rar



Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

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

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

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

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




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

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

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

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

-----
EnJoy!




Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

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

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




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

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

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

пожалст ;)

-----
EnJoy!




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

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

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




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

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

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

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

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 48.2 (посетитель), 49thx
Активность: 0.040
Статус: Участник

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

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

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



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

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

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



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

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

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

c23b_09.04.2009_CRACKLAB.rU.tgz - NCF.COM



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

Создано: 10 апреля 2009 01:20
· Личное сообщение · #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 (гость)
Активность: 0.010
Статус: Участник

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

crc1

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



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

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

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

-----
My love is very cool girl.




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

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

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


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

-----
Я медленно снимаю с неё UPX... *FF_User*




Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

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

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

-----
My love is very cool girl.




Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

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

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

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



Ранг: 133.4 (ветеран), 57thx
Активность: 0.110
Статус: Участник

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

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



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

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

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

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

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

-----
My love is very cool girl.




Ранг: 49.6 (посетитель), 9thx
Активность: 0.030
Статус: Участник

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

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



Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

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

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



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

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

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

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

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

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

-----
My love is very cool girl.




Ранг: 24.1 (новичок), 1thx
Активность: 0.010
Статус: Участник

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

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

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

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

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



Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

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

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

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




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

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

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

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

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

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

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




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

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

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

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

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

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 08 октября 2009 19:13
· Личное сообщение · #27

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



Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

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

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

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

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




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

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

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

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

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

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



Ранг: 133.4 (ветеран), 57thx
Активность: 0.110
Статус: Участник

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

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

Courier New 7 должен влезть. Дай возможность выбора, и пусть каждый сам заморачивается с этим.


<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 12 . 13 . >>
 eXeL@B —› Софт, инструменты —› CmpDisasm - Утилита для сравнения PE файлов в дизассемблированном виде
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати