![]() |
eXeL@B —› Софт, инструменты —› Interactive Delphi Reconstructor (IDR). Миттельшпиль |
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 ... 47 . 48 . >> |
Посл.ответ | Сообщение |
|
Создано: 06 декабря 2009 17:29 · Поправил: crypto · Личное сообщение · #1 IDR (Interactive Delphi Reconstructor) – декомпилятор исполняемых файлов (EXE) и динамических библиотек (DLL), написанных на языке Delphi и выполняемых в среде 32х-разрядных операционных систем Windows. ![]() Программа, прежде всего, предназначена для компаний, занимающихся разработкой антивирусного программного обеспечения. Она также может в значительной мере помочь программистам в восстановлении утраченных исходных текстов программ. Текущей версией программы могут обрабатываться файлы (как GUI, так и консольных приложений), скомпилированные компиляторами версий Delphi2 – Delphi2010. Ведется работа по поддержке Дельфи 2011. Конечной целью проекта является разработка программы, способной восстановить большую часть исходных Delphi-текстов из скомпилированного файла, но пока IDR, как и другие Delphi-декомпиляторы, сделать этого не может. Тем не менее, IDR может значительно облегчить такой процесс. По сравнению с другими декомпиляторами анализ, выполненный IDR, отличается наибольшей полнотой и достоверностью. Кроме того, высокая интерактивность делает работу с программой комфортной и (не побоимся этого слова) приятной. IDR выполняет статический анализ (анализируемый файл не запускается на выполнение), что позволяет безопасно изучать вирусы, трояны и прочие приложения, запуск которых опасен или нежелателен. Программа не требует установки и не делает никаких записей в реестр Windows. Официальный сайт: [Note] Недоступен после трагической Гитхаб Скачать: Dropbox автора https://www.dropbox.com/sh/9ran313nidqtagb/AADl_m_9GVYSiXUviZtDQWQHa?dl=0 Актуальная версия программы: Внимание! Требует наличия вспомогательных файлов и баз знаний!!! Базы данных качать по Для работы необходимо скачать базу знаний + последнюю версию программы ![]() |
|
Создано: 14 сентября 2010 11:33 · Поправил: crypto · Личное сообщение · #2 |
|
Создано: 28 сентября 2010 07:03 · Поправил: gazlan · Личное сообщение · #3 Выбрал время посмотреть. IDR выполняет статический анализ В подавляющем большинстве случаев дизассемблер используется в связке с отладчиком. И чем больше информации он может разделить с ним (или другими инструментами), тем продуктивнее работа. 1. Вкладки "Units", "RTTI", "Forms" - не хватает выгрузки в текстовый файл списков по правому клику. 2. Вкладка "ClassViewer". Дерево классов это замечательно, но нет не только выгрузки в текстовый файл, но даже и просто копирования хотя бы названий. 3. Вкладка "Strings". Ну, вы уже догадались. 4. Меню "Tools | Map generator". В отличие от DeDe, нет поясняющих маркеров '->', '<-', '*'. Весьма не помешали бы. 5. В сгенерированной карте не указан виртуальный адрес первого сегмента (CODE). Между тем, он не всегда дефолтный (особенно, для DLL). Это затрудняет автоматическую обработку карты каким-либо скриптом. 6. В той же карте, имена функций указаны БЕЗ прототипов - why?? Весь интерес в загрузке этой карты в IDA или SI, и прототипы функций будут очень нелишними. 7. DeDe умеет аттачиться к уже запущенному процессу. Не помешало бы. Резоны понятны. ![]() |
|
Создано: 28 сентября 2010 20:01 · Личное сообщение · #4 gazlan Сделать выгрузку в файл совсем не сложно, но я как-то не задумывался о необходимости таких списков. Ну, скажем, список юнитов я планировал использовать, чтобы сгенерировать базу знаний конкретно для изучаемой программы (в нее можно было бы включить специфические юниты, которые в существующие базы не входят). А что за поясняющие маркеры? Я, видишь ли, редко пользуюсь отладчиками с использованием карты. С DLL еще есть недоработки (пока не используется информация об экпортируемых функциях), про адрес - это я учту. Про прототипы уже говорили - добавить не проблема. Аттачиться - быть может будет плагин, который кто-нибудь сваяет. ЗЫ Ну а положительное (кроме дерева классов) в программе что-нибудь есть? ![]() ![]() |
|
Создано: 28 сентября 2010 20:05 · Личное сообщение · #5 |
|
Создано: 28 сентября 2010 20:18 · Личное сообщение · #6 IDR штука классная, уже не раз помогала. crypto если не сложно добавь ассоциацию файлов .idp ещё хотелось бы иметь api для работы с базой и возможность запускать плагины по горячим клавишам было бы неплохо подключать сторонние визуализаторы вместо листбокса с дизасмом так гляди и граф. вид как в иде можно было бы сделать, или просто текстовой с подсветкой ![]() |
|
Создано: 28 сентября 2010 21:04 · Поправил: gazlan · Личное сообщение · #7 crypto пишет: Ну а положительное (кроме дерева классов) в программе что-нибудь есть? Чтобы ответить полноценно, нужно бы поработать. Я только на пробу декомпилировал простенькую программу - что попалось под руку. Понравилось, что есть сохранение и повторная загрузка проекта, визуальный просмотр форм - не надо рыскать по DFM и скриптам. Прочее (кроме уже сказанного) интересовало мало, тк основной дизассемблер для меня - IDA и все что требуется от остальных - это дать список адресов обработчиков. Т..е. на дизасм я даже не смотрел. А что за поясняющие маркеры? Например, так: Code:
Code:
Таким образом, без заглядывания в дизассемблерный листинг, по карте можно сразу найти интересующие вызовы. Особенно полезны при этом ссылки на члены класса, так как вызовы функций и так будут удовлетворительно распознаны Идой. Пример (импортировано из списка ссылок, созданного DeDe): Code:
В эташе пример, взятый из DeIDA package (старый, еще до того, как в DeDe появились маркеры). ![]() ![]() |
|
Создано: 28 сентября 2010 21:23 · Личное сообщение · #8 gazlan Зря ты на дизасм не посмотрел... А если бы посмотрел, то, например, увидел бы, что маркер * в IDR по сути не нужен - у распознанного члена класса есть комментарий. Еще бы ты увидел список распознанных членов класса, для которых есть списки ссылок, по которым можно переходить в нужное место кода (кстати, в новом билде в списке ссылок будут маркеры, по которым можно будет узнать места кода, в которых происходит присваивание этихсамых членов) - я что-то не припомню, в каких программах эта фича есть. А еще бы ты увидел распознанные косвенные вызовы виртуальных методов классов, динамических методов (через вызов CallDynaInst), имел бы возможность посмотреть прототип любой функции из базы знаний, информацию о типе (в том числе поля рекордов и коассов). ЗЫ А в новом билде появятся две новых фичи, связанных с просмотром форм: 1. Список всех событий всех контролов формы (и самой формы в том числе) (нажатие правой клавиши мыши с нажатым Alt) 2. Про вторую не скажу пока, только намекну, что она позволит значительно улучшить "просматриваемость" форм (я с ее помощью могу теперь смотреть формы, для которых прежний визуализатор показывал пустую форму) И м.б. 3. Возможность выбора "недоступных" закладок в контролах вроде TNotebook, TPageControl ![]() |
|
Создано: 28 сентября 2010 21:31 · Поправил: gazlan · Личное сообщение · #9 crypto пишет: то, например, увидел бы Все это очень хорошо. И если будет еще добавлена возможность экспорта этой информации в текстовый файл станет еще лучше. Потому что при всех удобствах вьверов и визуализаторов, старый добрый grep по проекту все еще остается самым простым и быстрым способом отыскания "болевой точки". Повторюсь, чтобы не быть понятым неправильно. Эстеты, наверняка, обойдутся "голым" Hex-редактором и "дизассемблированием в уме". Остальным время дорого. Если есть инструмент, решающий специфическую проблему лучше других - он будет использован. Такм образом, даже при анализе одних только Delphi-файлов, во многих случаях, будет задействован не только IDR, например, а набор инструментов (отладчик, редактор ресурсов итд). И если этот "набор" можно превратить в "связку", так что выход одного используется другим, то удобство и скорость работы возрастают. Как пример: карту от DeDe (или exe2dpr) "скармливаем" IDA, исправляем и переименовываем как необходимо, карта уже от IDA конвертируется в формат, пригодный для SI - и, вуаля, работаем в отладчике уже с нашими символьными именами. Пока нет экспорта в совместимый формат (лучше всего в plain text, обладающий, как $ уникальной конвертируемостью во все остальное), утилита (сколь угодно хорошая) остается "вещью в себе". Экспорт и импорт делают ее частью универсума. ![]() |
|
Создано: 28 сентября 2010 22:42 · Личное сообщение · #10 |
|
Создано: 29 сентября 2010 00:27 · Личное сообщение · #11 |
|
Создано: 29 сентября 2010 18:14 · Личное сообщение · #12 |
|
Создано: 06 октября 2010 09:29 · Личное сообщение · #13 Слил потестил на реальных проектах (на простеньких, где и Ольки/ИДЫ хватит всё работает). Не работает на программах, скомпиленых в рантайм режиме. Говорит что не Delphi приложение. Не работает с программами с покореженными секциями, например, если все секции слиты в одну. Ни одну из 7 опробованных программ не открыл. DeDe открыл все (пусть не все корректно, но нужное я от него получил). При проблеме с секциями выводит, что EP неверный, при вводе адреса EP падает с ошибкой доступа к памяти. Кстати не указано что вводить RVA или VA (вводил и так и так), не проверяется принадлежность адреса загружаемому образу. Итог: К сожалению для реальных проектов софт пока не подходит, надеюсь в скором времени это исправится. Пожелание: При невозможности корректно вскрыть файл, вытащить из него хоть что то. Хотябы названия юнитов и формы. Даже ресторатор (не предназначеный для таких целей) показывает юниты, а софт под это заточенный вообще не показывает ничего. ----- Yann Tiersen best and do not fuck ![]() |
|
Создано: 06 октября 2010 13:36 · Личное сообщение · #14 |
|
Создано: 06 октября 2010 14:04 · Личное сообщение · #15 |
|
Создано: 06 октября 2010 14:24 · Личное сообщение · #16 |
|
Создано: 06 октября 2010 14:44 · Личное сообщение · #17 Проверил. Сильно удивлен. Мало того, что он открыл все файлы, так еще и выдрал с них то, что DeDe в упор не видел. Ему пофиг на объединение секций и на рантайм мод. Рантайм правда открывает с ошибками вида: Code:
Code:
Но всё таки открывает и декомпилит. ----- Yann Tiersen best and do not fuck ![]() |
|
Создано: 06 октября 2010 14:53 · Личное сообщение · #18 PE_Kill Прошу прощения за оффтоп, но могу сказать, что GPcH мне показывал результаты не Lite версии - это шедевр) - восстанавливает исходный код. Т.е. не ассемблер, а нормальный код на делфи. Поэтому я смотрю на crypto и как долго он пишет свой инструмент, и пока только остаются слабые надежды на более сильные результаты. И GUI пока не так удобен, как хотелось бы. ![]() |
|
Создано: 06 октября 2010 15:07 · Личное сообщение · #19 |
|
Создано: 06 октября 2010 15:24 · Личное сообщение · #20 PE_Kill Скажу честно - я верю в crypto и верю что у него получится отличный проект. Кстати совсем недавно он поделился со мной наработками для разбора dcu новых версий дельфей, но я банально уже два месяца не могу найти время чтобы их портировать. PE_Kill пишет: Проверил. Сильно удивлен. Самое смешное, что это билд 2007 года и оно работает ![]() ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! ![]() |
|
Создано: 06 октября 2010 18:15 · Поправил: crypto · Личное сообщение · #21 |
|
Создано: 06 октября 2010 19:53 · Личное сообщение · #22 crypto ты извини, если обидел. Когда я говорил про реальные проекты, я имел ввиду те, с которыми я имею дело каждый день. Они либо запакованы и после анпака их IDR не открывает, либо скомпилены в райнтайм режиме и их тоже не открывает. А те, что ты перечислил не требуют ежедневного копания в них, да и если упакованы, то не извратно. Т.е. вот например реальная задача. Программа запакована морфокриптодерьмопатчером. Дампим ее, пусть даже восстанавливаем до рабочего состояния (хотя и не обязательно). Дальше нужно узнать какой компонент/юнит использовался для шифрования. Запускаем IDR - он говорит это не Delphi. Запускаем DeDe, декомпиль от гпч, да даже ресторатор, и находим нужные нам данные. Именно поэтому я и предложил: PE_Kill пишет: Пожелание: При невозможности корректно вскрыть файл, вытащить из него хоть что то. Хотябы названия юнитов и формы. Даже ресторатор (не предназначеный для таких целей) показывает юниты, а софт под это заточенный вообще не показывает ничего. ----- Yann Tiersen best and do not fuck ![]() |
|
Создано: 06 октября 2010 20:04 · Личное сообщение · #23 |
|
Создано: 06 октября 2010 20:24 · Личное сообщение · #24 |
|
Создано: 06 октября 2010 20:26 · Личное сообщение · #25 Я ничего посоветовать не смогу. У меня полностью статический анализ. Декомпилятору вообще все равно есть ли секции и запускается ли файл. Нужно лишь корректное оер и восстановленные ресурсы. Остальное ищется по сигнатурам по всему файлу с последующей сложной анализацией и фильтрацией. ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! ![]() |
|
Создано: 08 октября 2010 21:18 · Поправил: gena-m · Личное сообщение · #26 Например, можно взять theBat Так и сделал взял "мышу", старая версия IDR обрабатывала мин 5 затем ошибка и довольно странная Скачал поновее IDR вообще пишет файл не дельфовый Isaev Мыша взята с оф. сайта ничем не накрыта, что меня тоже удивило, в пршлый раз по моему фима была. Мышу взял не из за того что разговор был, просто случайно совпало, вначале пытался мышу в IDR засунуть а при написании вопроса об ошибках случайно наткнулся на предложение автора взять мышь. Автору большое спасибо за его труд. ----- Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше ![]() |
|
Создано: 08 октября 2010 21:41 · Поправил: Isaev · Личное сообщение · #27 int пишет: GPcH мне показывал результаты не Lite версии - это шедевр) - восстанавливает исходный код. Т.е. не ассемблер, а нормальный код на делфи. Поэтому я смотрю на crypto и как долго он пишет свой инструмент, и пока только остаются слабые надежды на более сильные результаты. Я бы учёл, что GPcH работал за мани, а crypto спасибо даже не каждый сказал такие вещи пишутся не по срокам, а на досуге и для души, и предъявлять ещё претензии, мягко говоря, не красиво! gena-m я может ошибаюсь, но мышь была всегда накрыта каким-то протом, если после распаковки не берёт, то это нормально crypto Как всё-таки скопировать адрес из текста? Или так и не прикрутил? ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh ![]() |
|
Создано: 08 октября 2010 21:56 · Поправил: crypto · Личное сообщение · #28 Isaev Не прикрутил, однако, в ближайшее время сделаю - увлекся маленько..., может понравятся новые фичи, а может нет, поведение населения форума непредсказуемо... theBat у меня в последней версии стала вылетать по assert, встретилась ситуация, которую я еще не обработал, так что "мышь" пока оставьте в покое. ЗЫ Кстати, по-поводу "спасибо": на многих иностранных форумах есть возможность сказать автору топика "спасибо", почему бы здесь такое не сделать? ![]() |
|
Создано: 08 октября 2010 22:18 · Поправил: 4kusNick · Личное сообщение · #29 Прога очень хорошая, к тому же, она развивается, и автор отзывчиво фиксит баги, за что ему большое спасибо. Мне довелось юзать прогу на нескольких оригинальных дельфовых проектах (не после анпака), и я остался доволен результатами, хоть и были маленькие неудобства и неприятности, которые, кстати, уже похоже учтены в готовящемся билде... Так что, crypto, спасибо за достойный публичный инструмент, развивайте его дальше. ----- Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску. ![]() |
|
Создано: 08 октября 2010 22:28 · Личное сообщение · #30 |
|
Создано: 09 октября 2010 00:03 · Личное сообщение · #31 Isaev пишет: Я бы учёл, что GPcH работал за мани, а crypto спасибо даже не каждый сказал А я писал на дядю за мани, угу. И мне платили зарплату за декомпиль ![]() ![]() PS: C остальным соглашусь, crypto молодец. ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! ![]() |
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 ... 47 . 48 . >> |
![]() |
eXeL@B —› Софт, инструменты —› Interactive Delphi Reconstructor (IDR). Миттельшпиль |
Эта тема закрыта. Ответы больше не принимаются. |