Сейчас на форуме: -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

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

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

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

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




Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 20 мая 2017 09:51 · Поправил: ajax
· Личное сообщение · #2

microxa пишет:
А позвольте спросить "вы" это кто то, имеющие отношение к техникам реконструирования на дельфи? а тоб шлиб себе лесом мимо.. всем строем...

хотя бы я, и кто одобряет мои мессаги. как ваши посты относятся к разработке idr? расширение функционала? багрепорты? не заметно. в (офф)топике по хинтсам уже бреда хватило.
Для любопытствующих, этой тематикой, приведу пример отработаной техники в конкретном приеме хука
за такой кодес отрывают руки/дают пинка под зад. юзаю дельфи начиная с 3-й версии.

-----
От многой мудрости много скорби, и умножающий знание умножает печаль





Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 20 мая 2017 15:19 · Поправил: ajax
· Личное сообщение · #3

-

-----
От многой мудрости много скорби, и умножающий знание умножает печаль




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

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

ajax,microxa
Оба ведете себя как школота.

-----
старый пень





Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 20 мая 2017 16:24
· Личное сообщение · #5

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

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.




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

Создано: 20 мая 2017 16:25 · Поправил: dosprog
· Личное сообщение · #6

r_e пишет:
ведете себя как школота.

Даже хуже






Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 20 мая 2017 17:49 · Поправил: ajax
· Личное сообщение · #7

-

-----
От многой мудрости много скорби, и умножающий знание умножает печаль




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

Создано: 20 мая 2017 18:48 · Поправил: crypto
· Личное сообщение · #8

Ну вы, блин, даете! Три дня на огороде пахал, а оказывается здесь уже все унавозили.
ЗЫ
Да, видимо хостинг уже закрыли, поэтому базы закачал сюда
https://www.dropbox.com/sh/9ran313nidqtagb/AADl_m_9GVYSiXUviZtDQWQHa?dl=0
ЗЫЗЫ
Может кто-то знает, как возобновить работу сайта (мыщъх тогда прокомментировал, что копейки стоит, с меня ничего не брал..., поэтому тонкостей я не знаю). Я готов оплатить, только не знаю, как это сделать.

| Сообщение посчитали полезным: mak, v00doo, ajax, zNob, shellstorm, gazlan, HandMill, Isaev, oooirbis

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

Создано: 20 мая 2017 18:54 · Поправил: dosprog
· Личное сообщение · #9

) Да пускай рулят, абы руль не поломался
.. а двадцать лет, они позволяют взглянуть взвешенно, без ажиотажа.






Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 20 мая 2017 23:41 · Поправил: Isaev
· Личное сообщение · #10

ребят, оно до какой версии работает? XE2+ уже умеет?

и сам idr последний киньте, какой он там был. А то у меня древняя версия 2.4

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




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

Создано: 20 мая 2017 23:55
· Личное сообщение · #11

Isaev пишет: XE2+ уже умеет?

XE4 уже поддерживается, последняя собранная версия на гхабе https://github.com/crypto2011/IDR
среди сурсов лежит и бинарник.

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

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

Создано: 21 мая 2017 07:12
· Личное сообщение · #12

Isaev
В принципе оно уже и ХЕ6 поддерживает (синхронно с утилитой Хмельнова), однако я уже и не знаю, откровенно говоря, какие dcu брать для баз, шибко их (dcu) много.

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

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

Создано: 21 мая 2017 07:24
· Личное сообщение · #13

crypto пишет: откровенно говоря, какие dcu брать для баз, шибко их (dcu) много

Которые виндовс и стандартные, без всяких огнеобезьян, андроидов и остальной фигни, поскольку все остальное скорее экзотика, чем что то повседневное, такое можно самому сбилдить, кому надо.



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

Создано: 22 мая 2017 08:16
· Личное сообщение · #14

Улучшена обработка полей структур в декомпиляторе (есть соответствующие изменения в закладке Vars диалога редактирования функции - можно удалять все, выделенные, изменять тип), в некоторых местах убрал See Ya later, по умолчанию в этих местах тип Pointer. Окончательная цель начатой цепочки изменений - добиться изменения типов непосредственно в окне Source (как это делается в IDA). Исходники и последняя сборка - на github.

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

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

Создано: 24 мая 2017 09:45
· Личное сообщение · #15

Относительно либы дизасма: на которую, в немалой степени завернут движок.
А то вот, некоторые, 5 копеек, в копилку "открытости"..

В аттаче пример, собран средствами BCB6 (270кил простыня на tasm32
с рипом CbDisassemble/ dcc32, фейк класса и обертка dis.dll)

Заменяет либу от м$, но требуется фикс, т.к порт с версии 1.12/9438 (хоть и древность но достаточно
полно покрывающий 32битку).

Code:
  1. A:\IDR-master\Disasm.cpp  Строка     345
  2.             mov     al, [ecx]
  3. -->
  4.             cmp     al,7
  5.             jle     @@skip
  6.             dec     al
  7.        @@skip:
  8. -->
  9.             mov     [Cmd], eax


Это из за добавления одного элемента в
>> enum OPRNDT // Operand type <<
(какого точно пока хз..)
А так, функа CbDisassemble весьма автономна, rtl с костылями не тянет,
хотя, в таком сыром виде не слишком презентабельна...


0897_24.05.2017_EXELAB.rU.tgz - dis112.zip

Добавлено спустя 19 часов 48 минут
судя по информации из имеющихся артефатов древности

8-ой элемент это oprndtIbv
Code:
  1. ; enum DISX86::OPRNDT (standard)
  2. oprndtNil        = 0           // No operand
  3. oprndtAP         = 1           // Far address
  4. oprndtCd         = 2           // CRx register from MODRM reg
  5. oprndtConst      = 3           // Constant from bValue
  6. oprndtDd         = 4           // DRx register from MODRM reg
  7. oprndtGvOp       = 5           // General register (operand size) from opcode
  8. oprndtGvOp2      = 6           // General register (operand size) from opcode (2nd byte)
  9. oprndtIb         = 7           // Immediate byte
  10. oprndtIbv        = 8       //???    
  11. oprndtIb2        = 9           // Immediate byte following word
  12. oprndtIo         = 0Ah     //???
  13. oprndtIv         = 0Bh         // Immediate operand size value
  14. oprndtIw         = 0Ch         // Immediate word
  15. oprndtJb         = 0Dh         // Relative address byte
  16. oprndtJv         = 0Eh         // Relative address operand size value
  17. oprndtMmModrm    = 0Fh         // Memory/MM register references from MODRM (MMX)
  18. oprndtMmModrmReg = 10h         // MM register from MODRM reg (MMX)
  19. oprndtModrm      = 11h         // Memory/register references from MODRM
  20. oprndtModrmM2    = 12h     //???
  21. oprndtModrmM2R4  = 13h     //???
  22. oprndtModrmReg   = 14h         // General register from MODRM reg
  23. oprndtModrmSReg  = 15h
  24. oprndtOffset     = 16h         // Address size immediate offset
  25. oprndtRb         = 17h         // General register (byte) from bValue
  26. oprndtRv         = 18h         // General register (operand size) from bValue
  27. oprndtRw         = 19h         // General register (word) from bValue
  28. oprndtST         = 1Ah         // Floating point top of stack
  29. oprndtSTi        = 1Bh         // Floating point register from MODRM reg
  30. oprndtSw         = 1Ch         // Segment register (word) from bValue
  31. oprndtTd         = 1Dh         // TRx register from MODRM reg
  32. oprndtVmModrm    = 1Eh     //???
  33. oprndtVmModrmReg = 1Fh     //???
  34. oprndtX          = 20h         // DS:[eSI] for string instruction
  35. oprndtXmmModrm   = 21h     //???
  36. oprndtXmmModrmReg= 22h     //???
  37. oprndtY          = 23h         // ES:[eDI] for string instruction
  38. oprndtZ          = 24h         // DS:[eBX] for XLAT


И видимо там еще есть нюансы, и расхождения. Но это инфа с отладочных символов
что шли в комплекте с VC71NET (полная, а не поскипованая с символьного сервера)
кстати.. умела уже х64
Code:
  1.  distX86          = 0Eh
  2.  distX8616        = 0Fh
  3.  distX8664        = 10h



c48d_25.05.2017_EXELAB.rU.tgz - msdis140.zip



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

Создано: 09 июня 2017 22:50
· Личное сообщение · #16

Народ, я извиняюсь за нубский вопрос от человека, который ничего не знает о реверс-инжиниринге, открыл прогу и нифига не понял. Но мне понадобилось посмотреть пару функций в старой делфячей проге, я нагуглил Interactive Delphi Reconstructor, скормил ей файлы проги, все вроде распозналось, я несколько процедур с событиями на клик посмотрел - ок. Вижу в меню "Save Delphi project", жмякаю н него, идет полоска прогресса, и ничего не происходит. Это нормально? Я вообще надеялся на исходники делфи, пусть и спеченные, например, в один файл или типа того. Я ошибался, все сложнее? Я пробовал разобраться с прогой, погуглить - никаких инструкций не нашел. Гуглю по теме реверс-нжиниринга - вижу разные статьи с ollydbg, ассамблером и с++. У меня нет желания становится крякером, я хотел просто посмотреть пару функций в старой программе на делфи. Разбираться с асамблером или лезть в изучение плюсов это как-то круто больно для моего интереса. Вообще как бы выглядел процесс декомпеляции программы на делфи без упаковки и защиты? Что нужно почитать, чтобы этому научится, насколько оно сложно и как составить план чтоль какой-то для обучения?



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

Создано: 10 июня 2017 09:07 · Поправил: crypto
· Личное сообщение · #17

MisterN
"Дельфи-проект" сохраняется в поддиректории IDR\Projects, в юнитах в секции implementation - ассемблерные коды функций и процедур. Чтобы получить псевдокод конкретной функции, нужно нажать кнопку Src.
ЗЫ
Полоска прогресса при сохранении Дельфи-проекта не должна идти...



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

Создано: 10 июня 2017 10:15
· Личное сообщение · #18

crypto, спасибо. Завтра попробую.




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

Создано: 26 июня 2017 09:23
· Личное сообщение · #19

Офсайт лежит. Может кто выложить куда нибудь саму программу с базами?
Нужна иногда. Как то качал, но не найду, по видимому удалил за ненадобностью



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

Создано: 26 июня 2017 10:30
· Личное сообщение · #20

Adler
https://www.dropbox.com/sh/9ran313nidqtagb/AADl_m_9GVYSiXUviZtDQWQHa?dl=0
Саму программу можно скачать с https://github.com/crypto2011/IDR
PS
Сайт накрылся после гибели мыщъха

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

Ранг: 19.9 (новичок), 16thx
Активность: 0.040.01
Статус: Участник

Создано: 08 августа 2017 22:09
· Личное сообщение · #21

здравствуйте! есть несколько вопросов по программе.
1) старая версия(примерно от 11.2015) разбирала проги собранные borland builder, и довольно таки прилично, а новая не хочет.
2) что с плагинами? менюшка есть в проге, а в инете ничего не нашёл.
3) вопрос про 64 бит. видно что попытки что-то сделать были ещё в конце марта.
заранее спасибо!



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

Создано: 09 августа 2017 09:38
· Личное сообщение · #22

RevCred
1. Версии теперь надо брать на github (я восстановил возможность обработки BCB, as is!)
2. Плагины только для загрузки шифрованных форм, более ни для чего. Пример на github
3. Попытки сильно далеко не продвинулись, поскольку декомпилятор приходится переписывать практически полностью.

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

Ранг: 19.9 (новичок), 16thx
Активность: 0.040.01
Статус: Участник

Создано: 11 августа 2017 23:13
· Личное сообщение · #23

опять я.
1) Спасибо за обработку BCB.
2) Highlight.dll - будет ли он работать в новых версиях? и где его скачать?(в теме только одно упоминание, и то мёртвая ссылка).
3) IDR иногда не может определить версию делфи файла, и пишет "выберите версию вручную от делфи 3 до делфи 2007", если мне известно что версия делфи 4(die подсказал) - что лучше выбрать, точную версию, или самую новую версию? ведь чисто по логике последняя версия баз знаний должна содержать и все предыдущие "знания". Но на деле если так сделать(использовать последнюю базу - XE4), то IDR выдаёт ошибку "EAccessViolation".
4) простая(ИМХО), но очень удобная фича - при нажатии "Save Delphi Project" сохранять проект в папке с именем файла(delphi_file.exe -> <IDR>/Projects/delphi_file)



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

Создано: 13 августа 2017 15:34
· Личное сообщение · #24

RevCred
2. Highlight.dll более не используется, подсветку в ассемблере я сам сделал, осталось в Дельфи, но там и так кругом одни проблемы...
3. Если IDR так пишет, значит я не смог определить эвристику для таких случаев ("File " + FileName + " is probably Delphi 4, 5, 6, 7, 2005, 2006 or 2007 file, try manual selection"), если die определил как 4, то последуйте его совету. А вообще можно попробовать перебрать их все, какая лучше подойдет. Утверждение "последняя версия баз знаний должна содержать и все предыдущие "знания"" верно лишь отчасти, поскольку меняются форматы метаданных, вот вы и получили "EAccessViolation, задав слишком большую версию.
4. Хорошо, сделаю такую фичу.



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

Создано: 20 августа 2017 23:26
· Личное сообщение · #25

Есть ли возможность реализации открывать IDR на нужном адресе памяти вкладки 'CodeView' из другого приложения ( например из IDA ) ?



Ранг: 19.9 (новичок), 16thx
Активность: 0.040.01
Статус: Участник

Создано: 21 августа 2017 12:44 · Поправил: RevCred
· Личное сообщение · #26

MacTep пишет:
например из IDA

копируете адрес в IDA, в IDR наживаете Ctrl+G, переходите, в чём проблема?

MacTep пишет:
из IDA перейти в IDR

интересно услышать, как вы себе представляете реализацию?
в IDR нет же никакого апи, по этому в нём переход тольку вручную



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

Создано: 21 августа 2017 22:16
· Личное сообщение · #27

Задача работая в IDA по хоткею Alt + I перейти в IDR на адрес который указывает курсор IDA.



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

Создано: 22 августа 2017 09:45
· Личное сообщение · #28

MacTep пишет:
Задача работая в IDA по хоткею Alt + I перейти в IDR на адрес который указывает курсор IDA.

Напишите плагин к ida на питоне, который будет получать текущий адрес и через findwindow/sendmessage будет эмулировать нажатие ctrl+g в idr



Ранг: 173.8 (ветеран), 208thx
Активность: 0.120.36
Статус: Участник

Создано: 22 августа 2017 10:48
· Личное сообщение · #29

Можете посмотреть сырки oSpy и переделать под ваш случай и поправить скрипты под новую IDA, там именно такой функционал реализован.



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

Создано: 06 сентября 2017 13:11
· Личное сообщение · #30

под х64 версия планируется ?



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

Создано: 10 сентября 2017 20:29
· Личное сообщение · #31

Xlab0s
Анализ реализован, а с декомпилятором пока ступор...


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