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

 eXeL@B —› Софт, инструменты —› Interactive Delphi Reconstructor (IDR). Миттельшпиль
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 ... 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

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

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

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

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



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

Создано: 13 октября 2010 20:49
· Личное сообщение · #2

yanus0
Я собственно и собирался генератор баз отдать, но было бы красивше, если бы в пакет вошли базы под те самые компоненты, которые мне тут наговорили. В идеале неплохо было бы вообще создать общедоступный архив dcu под различные версии и оттуда забирать только те файлы, которые входят в исследуемую программу (генерация базы по списку юнитов - получаем компактную базку). Еще возможен вариант разбора dcu файла "на лету" без всякой базы знаний, однако здесь не все ясно.



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

Создано: 13 октября 2010 21:11
· Личное сообщение · #3

crypto пишет:
Так что давайте, что у кого в загашнике есть, кидайте мне, я буду разгребать.


я правильно понял что например возьмем пакет DevExpress
надо
а) откомпилировать его в Дельфи6
б) Делфи 7
.. и так до Дольфи 2011

и послать на анализ тебе сгенеренные *.dcu ?
надо дебаг/релиз дцу или вместе?



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

Создано: 14 октября 2010 08:04
· Личное сообщение · #4

sendersu
В принципе наверное так, если есть исходники . Только нужно компилировать с дефолтными установками.



Ранг: 114.8 (ветеран), 41thx
Активность: 0.10
Статус: Участник

Создано: 14 октября 2010 13:44 · Поправил: _ruzmaz_
· Личное сообщение · #5

На мой взгляд проге не хватает возможностей правки (хотя бы без вставки новых байтов), таких как:
- ассемблер в окне "CodeViewer";
- возможность правки строк в окне "ResString context";
- возможность изменения форм в режиме Text (а в идеале и Form).

кстати delphi+kol использовался в старых версиях hiasm (сейчас идет вместе с fpc)



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

Создано: 14 октября 2010 18:47 · Поправил: crypto
· Личное сообщение · #6

_ruzmaz_
Мне уже прислали зарубежные господа просьбу также добавить в программу возможность изменять PE-header и ресурсы и сохранять изменения в анализируемом файле.
Только вот зачем превращать инструмент для восстановления исходных кодов в некое подобие "Hacker Dreams"? Для этого есть другие инструменты.



Ранг: 18.8 (новичок), 21thx
Активность: 0.030
Статус: Участник

Создано: 15 октября 2010 18:19 · Поправил: Error13Tracer
· Личное сообщение · #7

Конечно то, что придложил _ruzmaz_, облегчило бы жизнь многим, но в силу своих познаний, понимаю что на хорошем уровне это достаточно сложно в реализации.
Добавлю, что библиотеки KOL всёже иногда используются, лучше и DCU от них добавить, т.к. в узких кругах они очень распрастранены)



Ранг: 114.8 (ветеран), 41thx
Активность: 0.10
Статус: Участник

Создано: 16 октября 2010 08:43
· Личное сообщение · #8

Error13Tracer пишет:
но в силу своих познаний, понимаю что на хорошем уровне это достаточно сложно в реализации

достаточно сложно в реализации "ассемблер в окне "CodeViewer"" и "а в идеале и Form"
crypto пишет:
"Hacker Dreams"

эт что такое?
crypto пишет:
Для этого есть другие инструменты.

дык этож неудобно)



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

Создано: 16 октября 2010 11:42
· Личное сообщение · #9

_ruzmaz_
"Hacker Dreams"
эт что такое?

Это такая гипотетическая программа - мечта хакера. Кажется даже были игры под таким названием.




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

Создано: 16 октября 2010 22:41
· Личное сообщение · #10

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

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





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

Создано: 20 октября 2010 10:19
· Личное сообщение · #11

4kusNick пишет:
Безусловно, комбайн из инструмента делать не надо, но возможность патчинга кода была бы очень кстати, подтверждаю.

Это и будет комбаин... Если это декомпилятор, то он не рождён чтобы патчить, на то есть куча тулз, к которым притёрлись уже

Можно например при даблклике на строке загружать прогу в Olly (или что пропишешь) и переходить к данному адресу )))
Было бы оригинально и очень удобно

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




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

Создано: 20 октября 2010 13:31
· Личное сообщение · #12

Isaev
Можно например при даблклике на строке загружать прогу в Olly (или что пропишешь) и переходить к данному адресу )))
Вот здесь подробнее, пож-ста. Я уже реализовал для мэна из Тайваня выгрузку комментариев в Олли. Теперь занимаюсь генерацией скрипта для ИДЫ. Было бы неплохо к этому винегрету добавить и твою идею. Свои идеи пиши мне в личку.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 20 октября 2010 14:26
· Личное сообщение · #13

crypto пишет:
Вот здесь подробнее, пож-ста. Я уже реализовал для мэна из Тайваня выгрузку комментариев в Олли. Теперь занимаюсь генерацией скрипта для ИДЫ. Было бы неплохо к этому винегрету добавить и твою идею. Свои идеи пиши мне в личку.

как к примеру в VB Decompiller'e, там и map и idc..

пока суть да дело, я пользуюсь в IDA плагином загрузки .map файлов
так вот можно что бы в .map или уже в idc вырезались с имен функций @, потому что IDA их не понимает
в хексрейс имя полностью обрезает до @ игнорируя все остальное
вот точки в именах, хексрейс нормально воспринимает

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

ну и что бы в idc были не только имена и комментарии, но хотябы уже и имена статических переменных которые IDR нашла




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 20 октября 2010 14:49
· Личное сообщение · #14

crypto пишет:
Вот здесь подробнее, пож-ста.

А что там делать то, накодить плагин для ольки, которым можно командывать из IDR и всего делов. Я так когда то наномиты восстанавливал, смотрел в оле что по определенному адресу лежит через плагин.

-----
Yann Tiersen best and do not fuck





Ранг: 251.8 (наставник), 17thx
Активность: 0.120
Статус: Участник
Seeker

Создано: 20 октября 2010 17:56
· Личное сообщение · #15

reversecode пишет:
пока суть да дело, я пользуюсь в IDA плагином загрузки .map файловтак вот можно что бы в .map или уже в idc вырезались с имен функций @, потому что IDA их не понимаетв хексрейс имя полностью обрезает до @ игнорируя все остальноевот точки в именах, хексрейс нормально воспринимает



А может это всё-таки проблема в самом плагине, подгружающем .map На днях выложу свой старенький. используемый для подгрузки мап-файлов от vc/dede

-----
DREAMS CALL US





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 20 октября 2010 18:15 · Поправил: reversecode
· Личное сообщение · #16

не ну причем тут плагин подгрузки
плагин грузит map такой какой он есть
а в самом map который генерирует IDR в именах функций есть кроме точек еще и @
и вот hexrays имена с @ не понимает и обрезает их

смысл @ в именах делфи я не понимаю если там все равно есть разделяющая точка

ну например
system.@WriteBytes
после запуска хексрейса там виден только system_()
и как я определю что там за полное имя
а вот system.WriteBytes
видится нормально

можно конечно поправить плагин загрузки map в IDA что бы он @ убирал
но если idc будет так же содержать @
поэтому это уже к самой генерации idc относится
хотя было бы не плохо если бы и в генерации map @ уже отсуствовали

для подгрузки мап-файлов от vc/dede
а что такое vc?
dede я чесно говоря когда то пробовал, так его и не понял
кроме форм он мне методов так и не показал
может старая версия, может я в те времена просто его не осилил
какая у него последняя версия?




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

Создано: 20 октября 2010 18:26
· Личное сообщение · #17

PE_Kill пишет:
накодить плагин для ольки, которым можно командывать из IDR и всего делов.

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

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 251.8 (наставник), 17thx
Активность: 0.120
Статус: Участник
Seeker

Создано: 20 октября 2010 19:12
· Личное сообщение · #18

reversecode
Вообще-то не стоит путать манглинг имён в Delphi и С++ (VC -- Visual С++), там совершенно разные конструкции. И если напрямую можно загружать замангленные имена в стиле C++, то с Delphi такое не катит (по крайней мере в SDK 5.2). Поэтому и говорю что через пару дней выложу, возможно для 5.5 что-то поменялось и это можно делать не вручную.

ЗЫ. Возможно у кого-то валяется правила манглинга типов/структур/операторов и т.д. для Delphi, в своё время удалось найти такой документ только для различных C/C++ компиляторов.

-----
DREAMS CALL US





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

Создано: 20 октября 2010 19:36
· Личное сообщение · #19

Isaev
Такое решение тоже интересно, я лишь хотел заметить, что было бы удобно иметь возможность патчить код быстро, а как - уже не так важно. Олли - удобный вариант, и если она после загрузки будет сама прыгать на тот адрес, на котором мы тыкнули в IDR - будет очень здорово.

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





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 20 октября 2010 19:39
· Личное сообщение · #20

я ничего не путаю
мы о делфи говорим, а не о VC(C++)
вот я и спрашиваю: какая смысловая нагрузка @ в делфовских mangle? к томуже не совсем правильных
если и без них все прекрасно

я 5.5 не пользуюсь, а как раз пользуюсь 5.2
каким образом ты собираешься решить проблему мапплагина?

еще раз повторяю
если в idc который будет генерится, будут теже самые @ в именах
то плагин загрузки мапов - ничего не решит
потому что в .map нет комментариев, и статических имен типов
которые могут быть добавлены в idc



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

Создано: 20 октября 2010 19:59
· Личное сообщение · #21

reversecode
Символ @ у меня из баз знаний тянется, а вообще в именах вместо @ должен быть похоже символ _. Я его использовал, чтобы знать, что это системная функция и ей как правило соответствует видоизмененный вызов (или она вообще никак в исходном коде не встречается, например, всякие деструкторы вроде @LStrClr). В map файл я могу вместо этого символа выводить _.
А вот кто мне скажет, что делать в ситуации, когда имена функция совпадают, а прототипы у них разные? И как мне зашить в скрипт информацию об аргументах (прототипе) функции?
Еще вопрос - как удалить из образа в IDA всю информацию, кроме сегментов (DeleteAll удаляет вообще все, а мне для запуска моего скрипта нужно сначала все очистить). Можно конечно уговорить пользователя выделить все и нажать U, но при этом все равно останутся имена, структуры, и прочее, что успела создать IDA.
У меня скрипт уже генерит львиную долю информации, но остались неясные моменты. Есть здесь заинтересованный знаток скриптов для IDA?




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 20 октября 2010 20:11
· Личное сообщение · #22

ну если уже будет idc
то какой будет map меня уже мало интересует
во всяком случае я еще такие map с @ в ольку не грузил
поэтому не знаю как она там будет его отрабатывать
если будут проблемы, то однозначно и @ из map убирать
crypto пишет:
А вот кто мне скажет, что делать в ситуации, когда имена функция совпадают, а прототипы у них разные?

ставь _0 _1 _2 в конце функций
ты ж весь мангл делфовский восстановить не можешь? хотя вроде IDA его кажись понимает..
тогда
crypto пишет:
И как мне зашить в скрипт информацию об аргументах (прототипе) функции?

можно оставлять в комментариях к функции
либо в комментариях ставить полный правильный делфовский вызов вместе с аргументами
crypto пишет:
Еще вопрос - как удалить из образа в IDA всю информацию, кроме сегментов (DeleteAll удаляет вообще все, а мне для запуска моего скрипта нужно сначала все очистить). Можно конечно уговорить пользователя выделить все и нажать U, но при этом все равно останутся имена, структуры, и прочее, что успела создать IDA.

судя по idc\idc.idc это единственная функция удаления




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 20 октября 2010 20:34
· Личное сообщение · #23

crypto пишет:
для запуска моего скрипта нужно сначала все очистить

всмысле что очистить?
если к примеру я только что загрузил exe в IDA
чистить то особо нечего

можно исходить из того что idc должен будет накладыватся в начале разбора exe в IDA




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

Создано: 20 октября 2010 20:38
· Личное сообщение · #24

crypto пишет:
мне для запуска моего скрипта нужно сначала все очистить

А нельзя ли просто перезаписывать?

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




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

Создано: 21 октября 2010 07:55
· Личное сообщение · #25

reversecode
что очистить?
Хотя бы очистить имена, комментарии, делать Unexplored всего модуля я уже научился.
чистить то особо нечего
Даже если ты застопоришь анализ в самом начале, IDA уже успеет довольно много "наследить".
4kusNick
А нельзя ли просто перезаписывать?
Можно, конечно, только некоторые данные (особенно данные RTTI) могут иметь посторонние имена, оставшиеся от проведенного IDA анализа. Значит, после загрузки моего скрипта останется лишняя "грязь", чего не хотелось бы.



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

Создано: 22 октября 2010 15:29 · Поправил: Dazz
· Личное сообщение · #26

crypto

1.Посмотрел программу для интереса. Не нашел функции поиска в explorer формы. Т.е. щелкаешь по форме, появляется исходник формы, но найти там ничего нельзя, кроме как просмотреть всю простыню =) Выделить все и скопировать в буфер тоже нельзя, а то можно было просто вставить в блокнот и там поискать.





update:
Извини, ввело в заблуждение название "Copy to Clipboard". Думал, что копируется только выделенное, а оказалось, что копируется вся простыня =) Может изменить на "Copy all to Clipboard" ?

2. Caption нечитаем.
Caption = #1059#1087#1088#1072#1074#1083#1077#1085#1080#1077
Тестировал на программе rghost.ru/3006024

з.ы. спасибо за программу!




Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 22 октября 2010 17:28
· Личное сообщение · #27

Dazz пишет:
2. Caption нечитаем.


Так должно и быть, иначе дельфя такой файл не откроет.

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!





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

Создано: 22 октября 2010 22:10
· Личное сообщение · #28

GPcH пишет:
Так должно и быть, иначе дельфя такой файл не откроет.

это не верно
Delphi благополучно откроет если транстировать это дело в простую кирилицу

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




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

Создано: 22 октября 2010 22:14
· Личное сообщение · #29

Dazz пишет:
2. Caption нечитаем.Caption = #1059#1087#1088#1072#1074#1083#1077#1085#1080#1077


уже раньше такое просили

Вопрос - как ето сделать что называеться юзер-френдли с точки зрение интерфейса?




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

Создано: 22 октября 2010 22:19
· Личное сообщение · #30

сделать просто там все коды символов по порядку, просто маленькую функцию перекодировки пишешь и всё

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 23 октября 2010 01:10
· Личное сообщение · #31

Isaev пишет:
Delphi благополучно откроет если транстировать это дело в простую кирилицу


Ннееааа. Попробуй в dfm заменить эти Unicode команды на кирилицу и открыть. По крайней мере 7 и 2007 версия не давали это сделать. В 2010 и XE не пробовал ибо этой темой не интересуюсь уже года два.

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!



<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 ... 47 . 48 . >>
 eXeL@B —› Софт, инструменты —› Interactive Delphi Reconstructor (IDR). Миттельшпиль
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати