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 Актуальная версия программы: Внимание! Требует наличия вспомогательных файлов и баз знаний!!! Базы данных качать по Для работы необходимо скачать базу знаний + последнюю версию программы |
|
Создано: 26 июня 2011 20:28 · Поправил: crypto · Личное сообщение · #2 Kiev78 Зачем ссылку стер? Я не успел закачать. ЗЫ Пароль я тебе и так дам, пиши на crypto2011@gmail.com VodoleY Долго же Вы скачивали "последнюю" версию. Тут народ уже поимел от меня бетку самой наисполедней версии. ЗЫ А присылать файлы, на которых ИДР глючит, я уже давно просил. Только вот шлют мало почему-то. |
|
Создано: 26 июня 2011 22:13 · Поправил: Kiev78 · Личное сообщение · #3 |
|
Создано: 30 июня 2011 21:15 · Личное сообщение · #4 Софт обновился | Сообщение посчитали полезным: SReg, _ruzmaz_, DimitarSerg, Isaev, tihiy_grom, sendersu |
|
Создано: 01 июля 2011 11:58 · Личное сообщение · #5 |
|
Создано: 01 июля 2011 12:17 · Поправил: crypto · Личное сообщение · #6 |
|
Создано: 01 июля 2011 21:17 · Личное сообщение · #7 |
|
Создано: 04 июля 2011 11:19 · Поправил: crypto · Личное сообщение · #8 Добавлена "история" 1. Загрузка файлов скомпилированных в runtime-mode 2. Сохранение Дельфи-проекта (тексты процедур на ассемблере) в поддиректорию Projects "домашней" директории IDR 3. Добавлен инструмент преобразования числа из бинарного вида в вещественный формат 4. Редактирование функций (изменение прототипа, аргументы представляются в виде [var] Name:Type:[Size], где Size - размер аргумента = количество байт стека, занимаемых аргументом, по умолчанию 4 (можно не указывать)). После изменения прототипа выполняются дополнительные этапы анализа, поэтому эта опция может быть весьма полезна. 5. Копирование текущего адреса в закладках "CodeViewer", "Strings", "UnitItems" в буфер обмена 6. Отображение иконок на компонентах формы вроде TTimer, TOpenDialog и др. (для этого используется дополнительный (необязательный) файл Icons.dll) 7. Поиск в дереве компонент формы 8. Существенно усовершенствовано дерево компонент формы 9. Частичная декомпиляция текущей процедуры (ЭТАП РАЗРАБОТКИ!, декомпилируются только линейные процедуры, конструкции try-finally обрабатываются, требуется задание прототипа текущей процедуры (типы обязательно!) и прототипов вызываемых процедур). Возвращаемое значение в функциях не поддерживается. Результат отображается в закладке "Source Code" и файле $$$.$$$ (в директории анализируемого исполняемого файла). В случае ошибок появляется предупреждение или исключение. 10. Исправлены некоторые баги анализатора и сохранения IDC-скрипта. 11. Исправлены некоторые баги загрузчика файла. | Сообщение посчитали полезным: Gideon Vi, obfuskator, SReg, DimitarSerg, Av0id, 4kusNick, HandMill |
|
Создано: 06 июля 2011 03:46 · Поправил: reversecode · Личное сообщение · #9 появилась программка, поигался с новой версией IDR что то генерация IDC вообще плохо первый баг это сгенерировался в idc строка Code:
он ее не понял и скрипт не выполнился закомментировал ее дальше когда уже скрипт почти выполнился все обратно сбилось где то idc накосячил в определении функции и в итоге Code:
может анализ все таки остаивть за ida? а скрипт пусть только функции переименовывает и комментарии раставляет? потому что ida в своем проходе не ошиблась там нормальная функция была накосячил idc скрипт когда переопределял функции ps естественно отдал файл |
|
Создано: 06 июля 2011 12:15 · Личное сообщение · #10 |
|
Создано: 06 июля 2011 12:53 · Личное сообщение · #11 |
|
Создано: 06 июля 2011 14:02 · Личное сообщение · #12 |
|
Создано: 06 июля 2011 15:49 · Личное сообщение · #13 reversecode Code:
- это баг нахождения RTTI, фиксанут После этого IDC скрипт сгенерился без проблем и указанного косяка в определении функции не было. Был сгенерен код: Code:
Здесь собственно форсируется нажатие клавиши 'C' (Code) на адресах перехода, чтобы избавиться от некоторых косяков IDA (может их и нет уже, но в моей старенькой версии есть). Ты предлагаешь убрать последнюю строку? |
|
Создано: 06 июля 2011 16:03 · Поправил: reversecode · Личное сообщение · #14 MakeNameEx(0x5BFFC0, "RTTI_5BFFC0_Int64_\", 0); там был лишний или не правильный \, который и ломал а то форум \ не отобразил касательно самого idc незнаю поняли ли мы друг друга но С(code) не решает проблемы смотри есть две функции к примеру в IDA которые идут последовательно IDA распознала их как две отдельные sub_XXX но после запуска скрипта эти две функции превращаются в одну! и точка входа во второую функцию вревращается в метку! и все ссылки с других xref ломаются именно вот таким кодом Code:
обрати внимание на Code:
этот разделитель логически ломает функцию и так же рекурсивно ломает все остальные вверх и таких недо функций которые превращаются из одной в две или из 30 штук в одну и там куча меток - в то время как это не метки а отдельные sub_xxx вообщем к чему я веду не надо очищать и заново анализировать сделай что бы idc скрипт только переименовывал, но не очищал предыдущий анализ IDA и касательно комменатриев по русским строкам, добавишь в idc? может конечно новые версии ida уже и видят русские строки, но все же ранние версии этого не умеют ксательно еще IDR я пытался через буффер обмена скопировать вручную некоторые русские строки вообщем в IDA они как квадратики копируются хз, видимо между буфферами обмена какую то кодировку можно ввести? |
|
Создано: 06 июля 2011 16:05 · Личное сообщение · #15 |
|
Создано: 06 июля 2011 18:07 · Личное сообщение · #16 reversecode Сумбурно как-то изложено. Давай сначала. Я уже написал, что у меня после запуска idc-скрипта по адресу 0040A828 получается глрмальный код без всяких брейков, заканчивается, как положено, ret-ом. Давай я тебе завтра вышлю фикс и посмотрим, что получится. И я против накладывания - ты и так знаешь, что ИДА очень плоха разбирает Борландовские файлы |
|
Создано: 06 июля 2011 18:19 · Поправил: reversecode · Личное сообщение · #17 ну давай версия ida кстати у тебя какая? но только я точно видел и гулял hexrays по функциям после анализа ida а вот после того как скрипт все очистил и начал свои функции переанализировать, - попрос зачем? (достаточно было просто функцию переименовать в нужное имя которое нашел IDR) функции побились, и теперь даже hexrays ни на одной не запускается даже на выправленой руками, - видимо еще и стек как то побился, но я уже не разбирался crypto пишет: что ИДА очень плоха разбирает Борландовские файлы еще раз, причем здесь борлановские? ida хорошо находит все функции и правильно выставляет их начало и конец включая стек твой idc ломает все это если бы он просто наклал нужные имена, и оставил комментарии под функциями, было бы более чем достаточно в дальнейшем, если ida какуюто функцию плохо нашла, в скрипте который бы ничего не ре-анализировал после применения еще раз, фукнция бы переименовалась в найденую в IDR, не поламал всего предыдущего там кстати есть еще вопрос с некоторыми именами переменных например найдено имя dword_000101 которое переименовывается в gvar_232323, а коммент рядом говорит что это TForm_Reg почему сразу не переименовать к примеру в gTForm_Reg ? понимаю что в делфи наверное так переменные не обызвают, но для анализа в ida было бы достаточно наглядно идем дальше к примеру уже есть переименованая переменаня gvar_232323 дальше в .data есть ссылка на нее в виде dword_22200 dd offset gvar_232323 можешь сделать что бы и эти ссылки переименовывались в gTForm_Reg_ptr ? gTForm_Reg_ptr dd offset gTForm_Reg вот так бы выглядело вообщем то мне все это не горит, пусть будет как багрепорт но если есть желание именно в данный момент исправлять то давай править | Сообщение посчитали полезным: Jupiter |
|
Создано: 06 июля 2011 20:41 · Поправил: crypto · Личное сообщение · #18 reversecode Я не врубаюсь. Последний вопрос тебе задаю, остальное обсуждение (если никто больше не присоединится, но это вряд-ли) давай по почте, адрес мой знаешь. А вопрос следующий. Ты пишешь: есть две функции к примеру в IDA которые идут последовательно IDA распознала их как две отдельные sub_XXX и приводишь пример (я так понимаю из контекста сказанного) этих двух функций Code:
Собственно, почему первая функция заканчивается адресом 0040A832, а вторая и вообще не функция, а именно окончание первой. Вопрос: это так? Или я что-то не прочитал? И продолжение: если так, то это ИДА так выпендрилась? Если да, то я плохо понимаю, как это могло получиться. И вопрос к остальным: у кого-то тоже так хреново получается, если выполнять тотальную чистку? |
|
Создано: 06 июля 2011 21:08 · Поправил: reversecode · Личное сообщение · #19 пример функции это средина поломаной рекурсии, поламалась же она гараздо глубже в TryStrToBool, а в ней еще одна итд, там пятая или какая то уже не помню функция, обьеденилась с одну функцию вместе(там не одна а с тридцаток функций) итого как пример две с разным стеком sub_XXX1 retn sub_XXX2 retn превратились в одну фукнцию общим стеком, а вторая превратилась просто в label sub_XXX1 retn label_XXX2 retn теперь к примеру все функции которые вызывали sub_XXX2 вызывают не функцию, а label_XXX2 и поскольку такого не может быть ida ставит разделитель, ;---------------------------------- рекурсивно вверх по всему дереву вызова считая что функция закончилась и не хочет анализировать дальше теперь что бы это исправить нужно бегать и рекурсивно в ручную ставить E(end function) на нужное место почему ida ломает так функции после скрипта, это не ко мне вопрос но думаю на проблему что бы меньше флудить, можно забить я буду просто комментировать в начале idc скрипта очистику и реанализ ida пусть idc скрипт просто расставляет имена функций crypto пишет: Собственно, почему первая функция заканчивается адресом 0040A832, а вторая и вообще не функция, а именно окончание первой. Вопрос: это так? да это продолжение первой crypto пишет: ? И продолжение: если так, то это ИДА так выпендрилась? да ida, это после того как произошла очистка всей .text и реанализе, и выставление начала конца фукнций по новому до этого все было гуд. crypto пишет: Если да, то я плохо понимаю, как это могло получиться. я в этой логике тоже плохо понимаю могу предположить, что попалась какая то функция не совсем хорошо попадающая под определение MakeFunction она могла не создастся но! зацепить стек функции выше нее, и выставить в своем окончании - то что это окончание функции выше дальше это могло потянутся до десяток функций, тем семым обьденив с двадцаток функций в одну ну а дальше рекурсивно ida посчитав что call label прыгает внуть других функций, и начала ставить разделители ;----------------------- закончив анализ у меня был случай(в одной c++ программе) когда ida зациклилась при анализе она пыталась несколько(c десяток функций) обьеденить в одну функцию потом после минуты прохода, опять разбивала их по одной а потом через минуту опять обьеденяла и так по кругу в течении часа, пока я не заметил что то слишком долго анализируется маленькая программа |
|
Создано: 06 июля 2011 23:34 · Личное сообщение · #20 reversecode пишет: да ida, это после того как произошла очистка всей .text и реанализе, и выставление начала конца фукнций по новомудо этого все было гуд. такая ж фигня была. уже не помню на чем из прог. очень некрасивый листинг после наложения скрипта получился. ----- От многой мудрости много скорби, и умножающий знание умножает печаль |
|
Создано: 07 июля 2011 18:02 · Личное сообщение · #21 |
|
Создано: 07 июля 2011 19:51 · Личное сообщение · #22 Спасибо большое мемберам (не подписавшимся, к сожалению). Постараюсь. | Сообщение посчитали полезным: HandMill |
|
Создано: 07 июля 2011 21:45 · Личное сообщение · #23 |
|
Создано: 08 июля 2011 10:45 · Личное сообщение · #24 |
|
Создано: 08 июля 2011 10:57 · Личное сообщение · #25 |
|
Создано: 08 июля 2011 12:18 · Личное сообщение · #26 |
|
Создано: 08 июля 2011 12:26 · Личное сообщение · #27 |
|
Создано: 11 июля 2011 14:12 · Личное сообщение · #28 |
|
Создано: 18 июля 2011 09:44 · Личное сообщение · #29 |
|
Создано: 18 июля 2011 10:14 · Поправил: XQuader · Личное сообщение · #30 |
|
Создано: 18 июля 2011 13:19 · Личное сообщение · #31 |
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 ... 47 . 48 . >> |
eXeL@B —› Софт, инструменты —› Interactive Delphi Reconstructor (IDR). Миттельшпиль |
Эта тема закрыта. Ответы больше не принимаются. |