eXeL@B —› Софт, инструменты —› Interactive Delphi Reconstructor (IDR). Миттельшпиль |
<< 1 ... 18 . 19 . 20 . 21 . 22 . 23 . 24 . 25 . 26 . 27 . 28 ... 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 Актуальная версия программы: Внимание! Требует наличия вспомогательных файлов и баз знаний!!! Базы данных качать по Для работы необходимо скачать базу знаний + последнюю версию программы |
|
Создано: 27 августа 2013 17:13 · Поправил: crypto · Личное сообщение · #2 |
|
Создано: 27 августа 2013 17:51 · Поправил: Veliant · Личное сообщение · #3 а можно ознакомиться с changelog? в каких случаях вместо параметров вызова функции втыкаются смайлы '' ? и можно как-нибудь заставить декомпилятор пройти дальше места где он выдает Under Construct? | Сообщение посчитали полезным: DimitarSerg |
|
Создано: 27 августа 2013 17:54 · Поправил: Jonny · Личное сообщение · #4 crypto пишет: Обычно, если аудитория молчит и вопросов не задает, это плохо Меня немного смущает то, что программа просит ввести тип eax в выражении fs:[eax]. Code:
На инструкции 0042789C mov dword ptr fs:[eax],edx останавливается. Это код Classes::TStreamAdapter.Read из Delphi 7. |
|
Создано: 27 августа 2013 18:09 · Личное сообщение · #5 я вот только попробовал. не понял пока всех тонкостей, видимо почему у меня получается вот так Code:
неправильно прототипы указал? так так просто в первом случае байт возвращается, во втором дворд з.ы. пипец как не хватает подсветки синтаксиса... ----- [nice coder and reverser] |
|
Создано: 27 августа 2013 19:08 · Поправил: Jonny · Личное сообщение · #6 |
|
Создано: 27 августа 2013 19:43 · Личное сообщение · #7 crypto пишет: Обычно, если аудитория молчит и вопросов не задает, это плохо Баг, если во время загрузки базы нажать src: Хотя баг работает и после загрузки, ну или может это фича не полной версии. Такая же хрень временами выскакивает сама, во время загрузки базы, но там рандомно, один раз нормально грузится, а через 20 может вылезти окошко причем на том же самом приложении которое грузилось до этого нормально. |
|
Создано: 27 августа 2013 20:01 · Поправил: Kiev78 · Личное сообщение · #8 |
|
Создано: 28 августа 2013 09:28 · Поправил: crypto · Личное сообщение · #9 Veliant Поскольку программа приватная, то я лог не веду (зачем он мне, если я сам ошибки нахожу и потом их сам правлю). Но если крупными мазками, то практически сделан декомпилятор (control flow работает и в ограниченной версии), добавлены плагины для распаковки (расшифровки форм), декомпиляция стала интерактивной, ну и баги там всякие были исправлены. Да, забыл, поддерживаются юзерские типы (пока только Record). Смайлики кажись втыкаются всюду. Если встретилось Under Construction, нужен фрагмент кода и адрес (обычно это место выделяется). Jonny Честно говоря, я с такой конструкцией пока не встречался (Exit из секции try). Спасибо, подумаю, как это обойти. Hellspawn На мой взгляд, первый if нормальный, при редактировании сам будешь решать, что оставить _eax_ или вызов (бывает, что регистр потом будет использоваться, хотя с _eax_ это редко бывает). Второй if - видимо баг, выложи фрагмент кода или пришли файл с указанием адреса. F_a_u_s_t Икцепшены могут возникать, если в процессе анализа пытаться что-то делать. В данном случае наверное нужно дизаблить кнопку Src. Я об этом все время помню и не нажимаю. Поскольку версия приватная, я к некоторым багам уже привык и не допускаю их появления. Что касается скрина, похоже, версия Дельфи неправильно определилась или нужно выбрать из нескольких возможных вариантах. Неплохо было бы файл получить. Kiev78 Нужно завершить прототип выделенного вызова (имена:типы аргументов и тип возвращаемого значения, если это функция). Для этого входим в данный вызов, вызываем popup-меню, выбираем Edit и пишем прототип). С прототипом аккуратнее, на сайте вроде сказано, как его заполнять. | Сообщение посчитали полезным: vden |
|
Создано: 28 августа 2013 10:40 · Поправил: F_a_u_s_t · Личное сообщение · #10 crypto пишет: Неплохо было бы файл получить. Версия Delphi 2006 из нестандартного там Jcl, а так, вполне обычный ( приватный ) быдлокод. Пару раз крэшилась сама программа, полный вылет. Хз, приложу еще один скрин, может понятней будет, на каком этапе анализа падает, ничего не делал, даже мышку не трогал, упасть может на любом методе, необязательно форма. Да, еще забыл, если загрузить что то , пробежаться по методам и процедурам тыкая src, а потом не закрывая декомпиль загрузить что то другое, то с вероятность процентов эдак 65-70 вылазит сепшен. |
|
Создано: 28 августа 2013 11:06 · Поправил: vden · Личное сообщение · #11 Порадовало, что извлекает Rtti имена параметров функции А Exit специально вставляется в каждый case? Просто здесь он не обязательный. Но разобрало case четко. Code:
Насколько сложно будет заменить ListBox в SourceCode на SynEdit? Выглядело бы приятнее. Scale 1 можно игнорировать. Code:
|
|
Создано: 28 августа 2013 11:40 · Личное сообщение · #12 F_a_u_s_t Как здесь любят говорить, я не могу заниматься гаданием, файл в студию. vden Exit - временная мера, помогающая исправить ошибки. Пока не придумал, как от этого избавиться. Не понял про SynEdit, в чем сложности? Ну да, можно игнорировать, но если 1 была задана константой, то все же этот вариант ближе к исходнику, да и компилятор умножение на явно заданную 1 пропустит скорее всего. |
|
Создано: 28 августа 2013 11:54 · Поправил: vden · Личное сообщение · #13 Exit - временная мера, помогающая исправить ошибки. Пока не придумал, как от этого избавиться. Согласен, лучше идти от простого к сложному. В теории, каждый case на выходе попадает в точку end (of case). Поэтому если в блоке case нет принудительного jmp, то exit не нужен. Если jmp есть и ведет на exit-блок, то нужно вставить Exit. Если не на exit-блок, то нужно вставить goto. А еще end of case и exit-блок могут совпадать, тогда exit тоже не нужен. crypto пишет: Не понял про SynEdit, в чем сложности? Я в том смысле, что вместо текущего listbox, synedit выглядел бы лучше. А сложность может быть, потому что он дельфовый. Хотя в билдер дельфовые компоненты должны нормально ставиться (из bpl). |
|
Создано: 28 августа 2013 12:22 · Личное сообщение · #14 crypto пишет: файл в студию По первому багу не могу, а по второму, hello dword в атаче: Выбрать базу 2006, загрузить example, дождаться окончания и не закрывая программу снова загрузить example, падает на парсинге virtual method. a772_28.08.2013_EXELAB.rU.tgz - example.rar |
|
Создано: 28 августа 2013 13:07 · Личное сообщение · #15 Вот, Дельфи 2 "мега"-программа. IDR точка входа не нравится, а потом если все же загрузить вообще падает с ассертом 2713_28.08.2013_EXELAB.rU.tgz - D2_err.rar |
|
Создано: 28 августа 2013 21:33 · Поправил: 4kusNick · Личное сообщение · #16 Hellspawn пишет: з.ы. пипец как не хватает подсветки синтаксиса... Абсолютно согласен, для комфортного реверса иногда приходится копипастить туда, где он есть. Не хватает поиска по конкретной форме. А лучше - по всем формам в проекте. Не хватает вывода строк в код вьювере, когда к ним обращаются напрямую. Veliant пишет: в каких случаях вместо параметров вызова функции втыкаются смайлы '' ? Похоже, это одно из тех самых ограничений? Словил такое: Decompile->Try->If->If->. при поптытке восстановить исходный код в процедуре _Unit59::TMN_Form.MN_StartProcess (висит на кнопке OK формы MN_Form) и EAccessViolation. при аналогичных действиях в процедуре _Unit59::TMN_Form.AB_ButUserGuideClick той же формы (висит на кнопке Help) в ----- Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску. |
|
Создано: 29 августа 2013 03:15 · Личное сообщение · #17 Множество разных сообщений .. в самом конце падение с двумя исключениями, файл в архиве, картинки не выкладываю сюда, их слишком много. ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube |
|
Создано: 29 августа 2013 04:13 · Личное сообщение · #18 crypto завалили тебя совсем багрепортами) EAccessViolation надо по любому думать как убрать, оно надоедает 4kusNick пишет: Не хватает поиска по конкретной форме. А лучше - по всем формам в проекте. по форме имхо изврат, визуально проще найти, по всем формам может и есть смысл, когда очень большой проект, но чаще их не так много, чтобы это напрягало Hellspawn пишет: не хватает подсветки синтаксиса... если только в виде галочки где-нибудь, чтобы кликнул и раскрасилось может и не помешало бы, но на данной стадии лучше поправить основные моменты, а "раскраской" заниматься когда всё будет гладко ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh |
|
Создано: 29 августа 2013 09:09 · Личное сообщение · #19 Isaev Такое впечатление, что многие программу в первый раз увидели До этого единицы присылали свои багрепорты. EAccessViolation никак пока не уберется, потому что это сигнал, означающий, что где-то что-то упущено. Поиск в форме есть (нужно открыть дерево формы и в popup-меню выбрать Find). Переделывать окно Code пока не собираюсь, как ты правильно сказал, это сейчас не главное. ЗЫ Ознакомление с данной версией заканчивается 1 сентября, потом я некоторое время займусь исправлением обнаруженных багов, выложу исправленную версию и видимо до Нового Года обновлений не будет. Скорее всего, буду уходить со сцены. |
|
Создано: 29 августа 2013 10:20 · Поправил: F_a_u_s_t · Личное сообщение · #20 crypto пишет: Такое впечатление, что многие программу в первый раз увидели Пока не работала кнопка src пользовался IDA, потому и репортов не писал. crypto пишет: EAccessViolation никак пока не уберется Тогда будет не юзабельно, дело в том, что ломается листинг, куча пустых процедур, либо мусор в листинге мало похожий на код аля архив в дизасме. crypto пишет: Скорее всего, буду уходить со сцены. Все мы рано или поздно уйдем, но если исправить баги, то останется долгая память. Ну и спасибо за паблик. |
|
Создано: 29 августа 2013 10:42 · Личное сообщение · #21 |
|
Создано: 29 августа 2013 10:45 · Личное сообщение · #22 |
|
Создано: 29 августа 2013 10:58 · Поправил: reversecode · Личное сообщение · #23 |
|
Создано: 29 августа 2013 14:17 · Личное сообщение · #24 |
|
Создано: 29 августа 2013 14:35 · Поправил: crypto · Личное сообщение · #25 Почитайте мои рекомендации на сайте. Там написано: не пытайтесь декомпилировать системные процедуры, часть из них написана на ассемблере (в частности, InternalUniqueString), исходники этих процедур известны. mak Сообщения о стеке - это те самые ограничения версии. UnderConstruction - еще не подключены, это не баг, а незавершенность. Точка входа разбирается нормально (есть ошибки, но они устраняемы): Code:
| Сообщение посчитали полезным: mak |
|
Создано: 29 августа 2013 15:00 · Личное сообщение · #26 |
|
Создано: 29 августа 2013 15:06 · Личное сообщение · #27 crypto пишет: Разобрался с твоей второй программой - баг исправлен. Можешь выложить исправленную версию для дальнейших тестов? | Сообщение посчитали полезным: DimitarSerg, =TS= |
|
Создано: 29 августа 2013 15:07 · Личное сообщение · #28 |
|
Создано: 29 августа 2013 15:15 · Личное сообщение · #29 |
|
Создано: 29 августа 2013 16:23 · Личное сообщение · #30 Hellspawn Я не знаю, как там это делается, но я имел в виду, что если в вызове используется аргумент типа enum или поле из set, которые находятся в базе знаний, то в вызов помещается символическое имя (например, если eax=1 и eax имеет тип TBrushStyle, то вместо него в вызов будет подставлено значение bsClear). |
|
Создано: 29 августа 2013 16:29 · Личное сообщение · #31 crypto пишет: Я не знаю, как там это делается Ищутся все константы с этим значением и выдается потом их список в диалоге, и пользователь выбирает какую применить. ----- Лучше быть одиноким, но свободным © $me | Сообщение посчитали полезным: crypto |
<< 1 ... 18 . 19 . 20 . 21 . 22 . 23 . 24 . 25 . 26 . 27 . 28 ... 47 . 48 . >> |
eXeL@B —› Софт, инструменты —› Interactive Delphi Reconstructor (IDR). Миттельшпиль |
Эта тема закрыта. Ответы больше не принимаются. |