Сейчас на форуме: morgot, sashalogout, -Sanchez- (+3 невидимых) |
eXeL@B —› Софт, инструменты —› CmpDisasm - Утилита для сравнения PE файлов в дизассемблированном виде |
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 12 . 13 . >> |
Посл.ответ | Сообщение |
|
Создано: 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 *Изменил интерфейс (кнопки переместил в тулбар) *По дефолту, заголовок выключен из сканирования *Исправил баги которые были отправлены в ПМ и которые нашел сам *Исправил грамматическую ашыпку * 13 апреля 2013 v 0.81 * Исправил ошибку при перетаскивании нескольких файлов драг-дропом и некоторые другие * Добавил сравнение файлов вперед и назад * 8 декабря 2013 v 0.83 * Убрал ошибки * Добавил импорт\экспорт * 25 января 2014 v. 0.84 * Добавил командную строку ; использовать: CmpDisasm.exe file1 file2 48de_25.01.2014_EXELAB.rU.tgz - CmpDisasm.rar |
|
Создано: 05 февраля 2009 17:10 · Личное сообщение · #2 Isaev пишет: Если правится 2 байта, то и справа 2 байта должно быть (аналогично при выделении) С раскраской пока не все ясно, дело в том, что при изменении кода, длина команд в некоторых случаях становиться разной, адресация сбивается и не понятно, какие команды выделять. Вернее визуально понятно, но как реализовать пока еще не вкурил. |
|
Создано: 05 февраля 2009 17:23 · Поправил: theCollision · Личное сообщение · #3 crc1 1. Добавить выбор не только exe, dll но и scr, sys, [*.*] All Files 2. Добавить горячие клавиши, к примеру Alt+F1 это открытие файла для левого окна, а Alt+F2 для правого 3. Если это PE-файлы, то имеет смысл добавить сравнение хидеров в одной вкладке, а сравнение кода в другой - имхо конечно 4. Если выбираешь одну строку в одном окне, то надо показывать также выбор и в другой, если оно различно, то показывать где оно в другом окне 5. если файлы сильно различны, то смысл ваще грузить, может сразу сказать об этом ? 6. Карту образов надо бы добавить, т.е. меж двумя панелями две картиночки с ползунками одна за левый другая за правый образ и пусть показывает ползунок где смотрим и цветами на них в местах различий ----- My love is very cool girl. |
|
Создано: 05 февраля 2009 17:31 · Личное сообщение · #4 >>но как реализовать пока еще не вкурил. мне думается так: 1. берешь код левого, если различается то ищешь похожую команду в правом образе 2. при нахождении сразу же сравниваешь и след. команду левого со след. командой после найденого 3. Все что меж ними найдеными командами в правом условно считать "что не обходимо для того чтобы левый стал правым" 4. найденные это одинаковость и следовательно надо зеленым т.е. одинаковое а то что надо добавить к примеру светлофиалетовым На заметку: Иногда при анализе важно знать не только различие в структуре кода, но и изменении некоторых вычислений! К примеру есть команда в двух образах mov eax,[ebp+0x12312] , но если в них будет вычеслено разное значение дельта-смещения, то будут указывать на разные области ! Думаю это также следует показать ;) ----- My love is very cool girl. |
|
Создано: 05 февраля 2009 17:33 · Поправил: theCollision · Личное сообщение · #5 |
|
Создано: 05 февраля 2009 17:59 · Поправил: crc1 · Личное сообщение · #6 Спасибо за отзывы theCollision пишет: Добавить выбор не только exe, dll но и scr, sys, [*.*] All Files Это можно, кроме All Files, т.к. в txt или ico кода нету theCollision пишет: Добавить горячие клавиши Попробуем theCollision пишет: Если это PE-файлы, то имеет смысл добавить сравнение хидеров А зачем хидеры сравнивать на отдельной вкладке, я их программно сравниваю, и если они отличаются, то сравнения не будет theCollision пишет: то смысл ваще грузить, может сразу сказать об этом ? Попробуй закинь разные файлы Над остальным буду думать, но как бля не хватает времени Про баг с прокруткой знаю, писал выше, что реализовано криво. Поэтому и просил исходники |
|
Создано: 05 февраля 2009 18:02 · Личное сообщение · #7 theCollision пишет: Иногда при анализе важно знать не только различие в структуре кода, но и изменении некоторых вычислений! К примеру есть команда в двух образах mov eax,[ebp+0x12312] , но если в них будет вычеслено разное значение дельта-смещения, то будут указывать на разные области ! Это уже больше похоже на отладчик. Таких целей себе не ставил |
|
Создано: 05 февраля 2009 18:11 · Личное сообщение · #8 |
|
Создано: 05 февраля 2009 18:29 · Личное сообщение · #9 crc1 пишет: С раскраской пока не все ясно, дело в том, что при изменении кода, длина команд в некоторых случаях становиться разной, адресация сбивается и не понятно, какие команды выделять. Вернее визуально понятно, но как реализовать пока еще не вкурил. А всё просто до безобразия... Считаешь сколько байт команда слева, берёшь из другого файла столько же байт начиная с того же адреса и дизассемблируешь... всё ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh |
|
Создано: 06 февраля 2009 10:31 · Поправил: crc1 · Личное сообщение · #10 theCollision пишет: Завязываться на расширение файла не совсем корректно Блин, суть то в том что, сравниваются фалы в дизассемблированном виде, и какой смысл если мы сравним два txt(или другого не PE формата файла) в дизассемблированном виде. Поэтому и ограничение в выборе файлов. Согласен, нужно добавить .com, .scr, .ocx, .sys, .drv А остальные нах не нужны. Мое ИМХО. Isaev пишет: А всё просто до безобразия Все просто, да не так просто. Просто нету времени. Помнишь, как у Розенбаума "Нету времени, пообщаться с друзьями евреями" |
|
Создано: 06 февраля 2009 10:56 · Поправил: theCollision · Личное сообщение · #11 |
|
Создано: 06 февраля 2009 11:28 · Поправил: crc1 · Личное сообщение · #12 |
|
Создано: 18 марта 2009 10:51 · Личное сообщение · #13 |
|
Создано: 26 марта 2009 11:27 · Поправил: crc1 · Личное сообщение · #14 Вот, выкроил время, кое-чего поправил CmpDisasm 0.3 Add Сделал раскраску всех отличающихся байт Добавил All Files при выборе файлов (хотя и раньше это можно было обойти драг дропом) Добавил горячие клавиши В текстовый файл записываются все различия Пофиксил несколько жучков З.Ы. Прошу высказаться на счет раскраски |
|
Создано: 26 марта 2009 11:44 · Поправил: Ray · Личное сообщение · #15 |
|
Создано: 26 марта 2009 11:49 · Поправил: BoRoV · Личное сообщение · #16 |
|
Создано: 26 марта 2009 11:51 · Личное сообщение · #17 |
|
Создано: 26 марта 2009 11:54 · Личное сообщение · #18 |
|
Создано: 26 марта 2009 12:07 · Поправил: theCollision · Личное сообщение · #19 нашел время потестить ) пожал RLpack 1.20.1f два exe-файла , один LZMA другой APlib и решил сравнить, прога упала ))) Замечания: 1. Информацию принято выводить не вверху в топе, а как это не парадоксально, внизу 2. Завести схемы раскраски, задать стандартную. Ну а юзер сам себе настроит так как ему надо 3. Буквы под курсором тоже можно менять цветом, ну и в выделенных областях. А то сейчас сплошной черный, имхо не есть гуд. 4. Если мы стоим на конкретом куске, имеет смысл сделать его немного с более жирным цветом, чем другие команды 5. На весь экран и возможность изменения размеров 6. Возможность "поверх всех окон" также будет удобна 7. сделать выбор сравниваемых файлов не по отдельности, а в одном диалоге. Если вдруг один остается а второй заменяется, то на этой панели сделать правой кноккой мыши меню "открыть" или "заменить" файл и заново сравнить Новой фичи: 1. Предлагаю сравнивать область памяти с содержимым указанного файла на диске ----- My love is very cool girl. |
|
Создано: 26 марта 2009 12:44 · Личное сообщение · #20 ИМХО явно не достает функционала. В таком виде подходит только для поиска пропатченых мест или с натяжкой для работы со сдампленными образами. Необходимо добавить возможность сравнивать файлы с разным смещением (возможность задавать RVA или FO). Да и длина сравнения или конечный адрес не помешают. Т.к. в файл сбрасывает долго и много безполезной информации. Кому нужно то для того сделать галку "Все" с блокировкой поля для задания длины. Аналогично и сполями смещения. Реализуется это легко, а пользы прибавится. ----- 127.0.0.1, sweet 127.0.0.1 |
|
Создано: 26 марта 2009 13:43 · Личное сообщение · #21 BoRoV пишет: вобщем неплохо, но вот есть один баг Не понял, а в чём баг? crc1 Слелать возможность открывать файл, уже занятый другой программой или просто запущенный. Сделать сравнение и других секций, но не дизассемблировать, а выводить в виде hex и symbol дампа (в идеале иметь возможность выбора - в каком виде отображать). Возможность брать образ процесса из памяти. |
|
Создано: 26 марта 2009 14:22 · Личное сообщение · #22 |
|
Создано: 26 марта 2009 14:53 · Личное сообщение · #23 Ray пишет: Разные раскраски? Про разные я не говорил, имел ввиду будут выделены все разлиающиеся байты. BoRoV пишет: но вот есть один баг Если ты имеешь в виду про "дырки" в коде, то это сделано чтобы адреса не разезжались. Если их не делать адреса сместятся и будет непонятно... Скорее это фича, а не баг theCollision пишет: решил сравнить, прога упала ))) Закинь куда-нибудь эти файлы theCollision пишет: Информацию принято выводить не вверху в топе, а как это не парадоксально, внизу Ну это спорный вопрос и не принципиальный. По пункту 3 и 4 - я использую контрол, который не поддерживает работу отдельно с символами и словами. Только со всей строкой или столбцом. Пункт 5 и 6 - это можно theCollision пишет: 7. сделать выбор сравниваемых файлов не по отдельности, а в одном диалоге. Как ты себе это представляешь? Я использую стандартный win диалог выбора файла. Что, свой диалог писать? А если файлы находятся в разных каталогах? OKOB Эта утиль ни коим образом не претендует на супер-пупер прогу. Писалась для себя, просто надоело в своих же патчах искать отличия в оле, когда прога обновляется часто. Если хочется много функционала, на первой странице SniperOK давал сцылку на крутую прогу подобного плана. Начало и конец блока для сравнения прикрутить можно (может даже и нужно, чтобы секции с данными, ресурсами и пр. не сравнивать) |
|
Создано: 26 марта 2009 15:02 · Личное сообщение · #24 >>theCollision пишет: >>7. сделать выбор сравниваемых файлов не по отдельности, а в одном диалоге. >>Как ты себе это представляешь? Я использую стандартный win диалог выбора файла. Что, свой диалог >>писать? А если файлы находятся в разных каталогах? Уже не однократно говорил, поставь себе WinMerge. Там когда жмешь на "Открыть" появляется отдельный диалог и там "Левый", "Правый", "Фильтр". Не изобретай велосипед, если хошь сделать удобную тулзу, то следуй по принципу "Наименьшего удивления", если народ привык видеть некоторые вещи на конкретных местах в подобного рода тулзах, то он и будет искать их там, хоть пристрели ;) >>Ну это спорный вопрос и не принципиальный. Закон юзабилити однако! ;) Почитай книгу, очень даже интересная наука ;) ----- My love is very cool girl. |
|
Создано: 26 марта 2009 15:51 · Поправил: OKOB · Личное сообщение · #25 crc1 пишет: на первой странице SniperOK давал сцылку на крутую прогу подобного плана Да BinDiff'ом я пользовался и до появления топа. Отличие в том, что то плагин к ИДЕ и не всегда для того чтобы глянуть одну функу рационально ИДИть два файла. Каждой тулсе своя область применения и если ты свою позиционируешь таким образом, то и назови PatchRemember. Не прими за сарказм. Как уже написал реализуется легко, а проку много. ----- 127.0.0.1, sweet 127.0.0.1 |
|
Создано: 26 марта 2009 16:05 · Личное сообщение · #26 |
|
Создано: 26 марта 2009 17:15 · Личное сообщение · #27 >>Уже не однократно говорил, поставь себе WinMerge. Там когда жмешь на "Открыть" появляется отдельный диалог и там "Левый", "Правый", "Фильтр". Вон ты про что. WinMerge давно стоит. Просто я тебя не понял. Думал из одного стандартного диалогового (тьфу блин, хрен выговоришь) окна файлы выбирать. Ну а в чем разница? Там две кнопки, тут две. Сделать это легко. Отдельную форму прикрутить. Только надо ли? Подумаю. OKOB я написал выше, Начало и конец блока для сравнения сделаю. А про "возможность сравнивать файлы с разным смещением" тут я тебя не понял, поясни. ManHunter пишет: Может "Compare in File" переименовать? Типа "Save differences in file" -больно длинно SVLab пишет: Слелать возможность открывать файл, уже занятый другой программой или просто запущенный. Геморно все это, подскажи простой вариант Если только через копирование SVLab пишет: выводить в виде hex и symbol дампа Я думал над этим, выводить в другой вкладке HEX дамп... |
|
Создано: 26 марта 2009 17:24 · Личное сообщение · #28 |
|
Создано: 26 марта 2009 17:34 · Личное сообщение · #29 BoRoV пишет: а пустые строки - это разве нормально? Ну а каким ещё образом синхронизировать последующие строки если команд получается разное количество? crc1 пишет: Геморно все это, подскажи простой вариант Не рублю в программировании , но ведь для других прог это не проблема. Можно открыть файл в Оле и одновременно запустить его самостоятельно, посмотреть в Peid, die, PE Explorer и пр. |
|
Создано: 26 марта 2009 17:40 · Поправил: OKOB · Личное сообщение · #30 crc1 пишет: А про "возможность сравнивать файлы с разным смещением" тут я тебя не понял, поясни. Это и имелось в виду начало рассматриваемого блока, но возможность задавать разное для окон и с переключателем: в виде File Offset или RVA, т.к. ты адрес выводишь уже с учетом базы загрузки и размещения секций в памяти. Или для окна отображения сделать переключатель File Offset или RVA (как в hiew). ----- 127.0.0.1, sweet 127.0.0.1 |
|
Создано: 26 марта 2009 19:26 · Личное сообщение · #31 |
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 12 . 13 . >> |
eXeL@B —› Софт, инструменты —› CmpDisasm - Утилита для сравнения PE файлов в дизассемблированном виде |