Сейчас на форуме: -Sanchez-, Alf, Adler, Rio (+5 невидимых)

 eXeL@B —› Софт, инструменты —› Interactive Delphi Reconstructor (IDR). Миттельшпиль
<< 1 ... 36 . 37 . 38 . 39 . 40 . 41 . 42 . 43 . 44 . 45 . 46 ... 47 . 48 . >>
Посл.ответ Сообщение

Ранг: 188.1 (ветеран), 419thx
Активность: 0.140
Статус: Участник

Создано: 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.


Официальный сайт:
kpnc.org/idr32
[Note] Недоступен после трагической гибели Криса (RIP)

Гитхаб
Github sources

Скачать:
Страница загрузки

Dropbox автора
https://www.dropbox.com/sh/9ran313nidqtagb/AADl_m_9GVYSiXUviZtDQWQHa?dl=0

Актуальная версия программы:

Исполняемый файл
Внимание! Требует наличия вспомогательных файлов и баз знаний!!!

Базы данных качать по
ссылке.

Для работы необходимо скачать базу знаний + последнюю версию программы



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

Создано: 04 декабря 2017 15:18 · Поправил: hoyux
· Личное сообщение · #2

[DEL]



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 04 декабря 2017 15:45
· Личное сообщение · #3

hoyux пишет:
Сделай под 64 IDR, реально не хватает.

ето не поддержка (а-ля дописать пару строк), ето равносильно новому прожекту, про что автор уже писал

| Сообщение посчитали полезным: shellstorm, hoyux


Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 04 декабря 2017 16:20
· Личное сообщение · #4

hoyux
https://github.com/crypto2011/IDR

Пилите pull request, помогите автору, проект может улучшать любой желающий.

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.


| Сообщение посчитали полезным: sendersu

Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 04 декабря 2017 16:21
· Личное сообщение · #5

hoyux пишет: Сделай под 64 IDR, реально не хватает. Вычленяй мою подсветку Delphi. Сырки открыты.

О да, подсветка это как раз самая сложная часть. Мало того, что нужно переписать практически полностью парсер, так и clang это не древний delphi компилятор, он уже не оставляет такой роскоши в виде избыточности кода.



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

Создано: 05 декабря 2017 14:58
· Личное сообщение · #6

проект чтоб работал в RAD STUDIO насколько сложно?



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

Создано: 06 декабря 2017 08:55
· Личное сообщение · #7

Xlab0s пишет:
проект чтоб работал в RAD STUDIO насколько сложно?

Там гору кода под юникод надо затачивать. Я хотел в RAD скомпилить из сырков, потом плюнул и на виртуалке Builder 6 поставил. Возни много - лучше не трогать.



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

Создано: 11 декабря 2017 23:51 · Поправил: Incitatus
· Личное сообщение · #8

Камрады, доброй ночи.

Вопрос от чайника. Необходимо добыть алгоритм одного расчета из проги (D2014).
Загнал в IDR, наметился было прогресс, но знаний не хватает. Ассемблер последний раз в руках держал от Z80...
На чтение учебников много времени нет, так как вопрос надо решить оперативно. В общем, не пинайте сильно, а лучше подскажите... пардон, что вопросы дурацкие.

1. После обработки, IDR нашел sub_XXXX с вызовом где-то глубоко внутри функции @System.@UStrEqual, для которой код не генерится, но выдается сообщение об ошибке "I -> Loop -> Loop still unknown". В KB находится до буквы идентичная функция, ее использование результата не дает.
2. Есть ли какая-то возможность использовать то, что делает IDR в IDA? По сути, мне не нужен дельфийский код, вполне хватило бы С, дизассемблированного Идой, но ИДА не видит дельфийских названий, а без них на выходе только вермишель из 15 тысяч безымянных сабов. Последние сигнатуры FLIRT есть только для BDS2010, но их использование толку в моих руках не дает. Но руки кривые в данном вопросе, что есть, то есть.
Использую IDR 01.04.2017 и IDA 6.6

Заранее спасибо.



Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 12 декабря 2017 00:54
· Личное сообщение · #9

Incitatus в IDR есть экспорт idc скрипта

| Сообщение посчитали полезным: Incitatus

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

Создано: 12 декабря 2017 16:36
· Личное сообщение · #10

SReg, спасибо за помощь, нашел, получилось.

Можно еще вопрос? Не ругайтесь, если он глупый...
Анализируемый код содержит строковые ресурсы, которые используются алгоритмом, в основном это текстовый xml. Дайте плз наводку, как распознать обращения к ним из анализируемых функций?

И еще небольшой
Часть кода той или иной процедуры в IDR помечается розовым цветом. Как я понимаю, ее наличие не позволяет реконструктору получить исходный код... когда в этом сегменте есть вызовы call - мн понятно, что это указывает на то, что в вызываемом прототипе не все хорошо, правильно? Но что IDRу не нравится в таком коде?

Code:
  1. _Unit139.TForm1.calculate
  2. 00771CAC        push        ebp
  3. 00771CAD        mov         ebp,esp
  4. 00771CAF        mov         ecx,0EB
  5. 00771CB4        push        0
  6. 00771CB6        push        0
  7. 00771CB8        dec         ecx
  8. 00771CB9>       jne         00771CB4
  9. 00771CBB        push        ecx
  10. 00771CBC        push        ebx
  11. 00771CBD        push        esi
  12. 00771CBE        push        edi
  13. 00771CBF        mov         ebx,eax ;Это единственная строка кода этого фрагмента, не помеченная розовым бэком
  14. 00771CC1        xor         eax,eax
  15. 00771CC3        push        ebp
  16. 00771CC4        push        7779A3
  17. 00771CC9        push        dword ptr fs:[eax]
  18. 00771CCC        mov         dword ptr fs:[eax],esp

....а дальше везде белый бэк...

Спасибо



Ранг: 188.1 (ветеран), 419thx
Активность: 0.140
Статус: Участник

Создано: 13 декабря 2017 07:26
· Личное сообщение · #11

Incitatus
Розовым помечается код, несущественный с точки зрения компиляции (в вашем примере это пролог - сохранение в стеке регистров и инициализация локальных переменных типа string), это историческая фича, сейчас она вроде как бы и не нужна. Тем более, в ней часто наблюдаются промахи.
Строковые ресурсы: открываем закладку Strings, при выборе строки справа появляется список референсов



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

Создано: 13 декабря 2017 16:38
· Личное сообщение · #12

crypto
Спасибо за разъяснение. Большую часть нашел. Связанный с этим вопрос - в теле ресурса XML содержатся символы китайского алфавита, которые отображаются не корректно. Различные эксперименты с режимами отображения строк и шрифтами эффекта не дали, при том, что в других местах, скажем если открыть данный exe в VisualStudio - они читаются отлично. Можно ли как то помочь этому делу, поскольку сопоставлять китайский текст с некорректно отображаемым китайским текстом как-то уж очень непросто?



Ранг: 188.1 (ветеран), 419thx
Активность: 0.140
Статус: Участник

Создано: 15 декабря 2017 08:06
· Личное сообщение · #13

Incitatus
Нужно заменить контролы, используемые в IDR, на те, которые поддерживают юникод. Ну и кое-что поменять в коде.



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

Создано: 06 января 2018 11:57
· Личное сообщение · #14

Здравствуйте! Помогите разобраться. Декомпилировал одну программу с помощью IDR, пытаюсь ее собрать в Delphe 7 и получаю ошибку: [Fatal Error] SysUtils.pas(10): Program or unit 'sysutils' recursively uses itself
Подскажите, в чем моя ошибка и как ее обойти?


1d59_06.01.2018_EXELAB.rU.tgz - 2018-01-06_120752.png



Ранг: 95.1 (постоянный), 247thx
Активность: 0.260.01
Статус: Участник

Создано: 06 января 2018 12:10 · Поправил: unknownproject
· Личное сообщение · #15

eu8cc пишет:
Здравствуйте! Помогите разобраться. Декомпилировал одну программу с помощью IDR, пытаюсь ее собрать в Delphe 7 и получаю ошибку: [Fatal Error] SysUtils.pas(10): Program or unit 'sysutils' recursively uses itself
Подскажите, в чем моя ошибка и как ее обойти?

Если вы думаете, что декомпилятор выплюнет для вас прекрасно рабочий код, то это заблуждение. Читайте доки и юзайте отладчики. А касательно ошибки. Что там, собственно, непонятно ? Рекурсия или незнание английского ? Все там достаточно понятно - юнит sysutils рекурсивно используется в самом себе. Этого быть не должно. Учите и как кодить на делфи в довесок.

-----
TEST YOUR MIGHT




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

Создано: 06 января 2018 13:16
· Личное сообщение · #16

Извините что заставляю вас нервничать) А можно по подробнее, что нужно подкорректировать чтобы не ругалась на sysuils?



Ранг: 95.1 (постоянный), 247thx
Активность: 0.260.01
Статус: Участник

Создано: 06 января 2018 13:20
· Личное сообщение · #17

eu8cc пишет:

Извините что заставляю вас нервничать) А можно по подробнее, что нужно подкорректировать чтобы не ругалась на sysuils?

Переименовать целевой юнит на все, что угодно, кроме sysutils. Директиву uses не трогать.

-----
TEST YOUR MIGHT


| Сообщение посчитали полезным: eu8cc

Ранг: 82.5 (постоянный), 1thx
Активность: 0.130.04
Статус: Участник

Создано: 15 января 2018 01:39
· Личное сообщение · #18

crypto, пробую эту прогу http://rgho.st/8ZS8GBgFK декомплировать в идр, получаю EAcessViolation.
Можешь посмотреть, почему ошибка случается.



Ранг: 431.7 (мудрец), 391thx
Активность: 0.730.32
Статус: Участник

Создано: 15 января 2018 01:50 · Поправил: dosprog
· Личное сообщение · #19

mazaxaker пишет:
Можешь посмотреть, почему ошибка случается.

Перепиши её на Delphi - ошибок не будет.
Сейчас она на BorlandC++Builder'е.

mazaxaker пишет:
Я просто думал, что IDR умеет борланд декомпилить


Да. Borland Delphi, но не C++. Тема-то как называется?





Ранг: 82.5 (постоянный), 1thx
Активность: 0.130.04
Статус: Участник

Создано: 15 января 2018 02:50
· Личное сообщение · #20

dosprog пишет:
Сейчас она на BorlandC++Builder'е.

Я просто думал, что IDR умеет борланд декомпилить, делфи ведь основан на борланде.

Добавлено спустя 13 часов 10 минут
dosprog пишет:
Да. Borland Delphi, но не C++.

Но я заметил, что он вполне успешно разбирает некоторые проги из борланд с++ именно, вот ultraiso написана на борланд с++, он нашел все формы, все обработчики смотрю.
Вот эту http://rgho.st/8vv6yn94D разобрал.



Ранг: 95.1 (постоянный), 247thx
Активность: 0.260.01
Статус: Участник

Создано: 15 января 2018 16:20
· Личное сообщение · #21

Борланд - это компания, которая разработала язык, а речь идет о BCC. BCC структурно очень сход с Delphi, потому что разработан той же самой Борланд. Борланд же "декомпильнули" на стадии банкротства еще. Idr хорош для своих целей, но только в том случае, если требуется полный разбор функционала софта. Делфисту разобрать делфовый код итак труда не составит, так что использование idr для узких задач - моветон. А делфи основан на паскале, а не на борланде

-----
TEST YOUR MIGHT




Ранг: 82.5 (постоянный), 1thx
Активность: 0.130.04
Статус: Участник

Создано: 15 января 2018 18:36 · Поправил: mazaxaker
· Личное сообщение · #22

unknownproject пишет:
Idr хорош для своих целей, но только в том случае, если требуется полный разбор функционала софта.

Мне им нравится быстро находить обработчики контролов, ну и плюс распознавание системных вызовов делфи вроде GetText, которые олька не видит.
Кстати по борланд с++ ищу туторы с информацией о том, как отличать в коде те куски кода, которые всунул компилятор, чтобы их не изучать.
Разбираю прогу на борланд с++ и вижу, что код, который там писал разраб периодически разбавляется каким-то непонятным кодом, который очевидно компилятор напихал. Вот такое хочу отличать, есть ли по этой теме туторы.
До этого исследовал проги на visual c++ и заметил, что их ассемблерный вид намного приятнее для реверсера. А борланд смотрю кучу всякого пихают мусора какого-то)



Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 15 января 2018 22:26
· Личное сообщение · #23

mazaxaker пишет: Но я заметил, что он вполне успешно разбирает некоторые проги из борланд с++ именно, вот ultraiso написана на борланд с++, он нашел все формы, все обработчики смотрю

Некоторые это еще не все, для уверенного разбора билдера нужно дописывать парсер, как вариант попробуй вручную выбрать другую версию базы vcl, иногда помогает.



Ранг: 11.8 (новичок), 15thx
Активность: 0.020
Статус: Участник

Создано: 15 апреля 2018 01:39 · Поправил: MacTep
· Личное сообщение · #24

Для ленивых. Добавил возможность пункта в контекстное меню проводника для exe / dll файлов из меню, чуток иконок и вызов калькулятора, блокнота и ...

--> Link IDR<--

PS:
Для внесения данных в реестр ( Help - Settings - Shell Integration ) запустить приложение с правами Администратора.

| Сообщение посчитали полезным: Gideon Vi

Ранг: 188.1 (ветеран), 419thx
Активность: 0.140
Статус: Участник

Создано: 16 апреля 2018 08:15 · Поправил: crypto
· Личное сообщение · #25

MacTep
Проект открыт на github, было бы лучше изменения внести туда, чтобы всем были доступны.

| Сообщение посчитали полезным: sendersu, HandMill

Ранг: 11.8 (новичок), 15thx
Активность: 0.020
Статус: Участник

Создано: 19 апреля 2018 10:25 · Поправил: MacTep
· Личное сообщение · #26

При работе IDR вкладка - Code View - popup меню пункт Copy Address вызывается исключение ' List index out of bounds (-1)'. Если не выбран ни один элемент списка lbCode свойство ItemIndex = -1.



Добавлено спустя 8 часов 46 минут
Поправил ошибку, добавил пункт popup меню Copy Line вкладки Code View. Архив с сорцами тут --> IDR <--



Ранг: 11.8 (новичок), 15thx
Активность: 0.020
Статус: Участник

Создано: 22 апреля 2018 22:01
· Личное сообщение · #27

Собрал новую сборку. Исправлены ошибки кода, добавлен пункт в poup меню 'Copy Line' вкладки 'Strings'.

--> IDR 21/04/18 <--



Ранг: 11.8 (новичок), 15thx
Активность: 0.020
Статус: Участник

Создано: 23 апреля 2018 20:52
· Личное сообщение · #28

Салют All !
--> Версия IDR от 23.04.2018 <--

- Исправлены ошибки в коде
- Добавлена секция TrustInfo с разделом Security для поддержки управления учетными записями (UAC) в манифест приложения



Ранг: 11.8 (новичок), 15thx
Активность: 0.020
Статус: Участник

Создано: 25 апреля 2018 18:54
· Личное сообщение · #29

--> IDR 25.04.2018 <--

+ Добавлена поддержка копирования несколько элементов списка в буфер обмена, пункт 'Copy Lines' во вкладках 'Code Viewer', 'Strings'.



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 26 апреля 2018 09:33
· Личное сообщение · #30

Пилите фикс сразу на гитхаб, он для етого и опенсорсился..

| Сообщение посчитали полезным: d745150

Ранг: 11.8 (новичок), 15thx
Активность: 0.020
Статус: Участник

Создано: 28 апреля 2018 11:16
· Личное сообщение · #31

--> Форк на github <--

| Сообщение посчитали полезным: sendersu, 4kusNick
<< 1 ... 36 . 37 . 38 . 39 . 40 . 41 . 42 . 43 . 44 . 45 . 46 ... 47 . 48 . >>
 eXeL@B —› Софт, инструменты —› Interactive Delphi Reconstructor (IDR). Миттельшпиль
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати