Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.19;
Скачать: CL | DM;

Вниз

Восстанавливаем исходники   Найти похожие ветки 

 
TRh   (2003-05-28 15:42) [0]

Простите за вопрос, который может показаться глупым, но я, к сож., пока чайник.
Можно ли восстановить исходники дельфяшной программы, имея только саму программу (ехе-шник)?


 
andrey_pst ©   (2003-05-28 15:47) [1]

нет


 
TRh   (2003-05-28 15:53) [2]

спасибо


 
Юрий Федоров ©   (2003-05-28 15:53) [3]

Частично (*.dfm, названия модулей, некоторых классов и методов)


 
Кулюкин Олег ©   (2003-05-28 16:09) [4]

DelphiDecompiler = DeDe


 
TRh   (2003-05-28 16:12) [5]

А где взять?


 
Кулюкин Олег ©   (2003-05-28 16:21) [6]

Вроде Яндекс натовские миротворцы не разбомбили?


 
Игорь Шевченко ©   (2003-05-28 16:23) [7]

Можно. Но долго


 
TRh   (2003-05-28 16:26) [8]

Не поможете мне с этим? Что нужно делать после того, как я скачаю DeDe?


 
Mike Kouzmine ©   (2003-05-28 16:30) [9]

проверить антивирусной программой.


 
clickmaker ©   (2003-05-28 16:32) [10]

А что, правда есть такой DeDe? Как-то слабо верится... Даже если что-то и можно восстановить, то это только, если включена полная отладочная инфа. А так только ассемблер
Или я так безнадежно отстал от жизни ? :)


 
Кулюкин Олег ©   (2003-05-28 16:33) [11]

2 TRh
Полностью программу Вы не восстановите :(


 
Кулюкин Олег ©   (2003-05-28 16:35) [12]

2 clickmaker © (28.05.03 16:32)
dfm-ки можно восстановить.
Названия функций.
Код нельзя :)

> Или я так безнадежно отстал от жизни ? :)
Нет, все ОК :))

2 TRh (28.05.03 16:26)
> Не поможете мне с этим? Что нужно делать после того, как я скачаю DeDe?
Установить, запустить.
У него есть интерфейс, это не командная строка.


 
TRh   (2003-05-28 16:35) [13]

???


 
Sha ©   (2003-05-28 16:37) [14]

clickmaker © (28.05.03 16:32)
да и при полной инфе только асм.


 
Кулюкин Олег ©   (2003-05-28 16:38) [15]

2 TRh (28.05.03 16:35)
> ???
!!!


 
TRh   (2003-05-28 16:43) [16]

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


 
Кулюкин Олег ©   (2003-05-28 16:45) [17]

2 TRh (28.05.03 16:43)
НЕ помню, я его в Яндексе искал.
Повторюсь:
Он не восстановит исходник.
Только формы и названия функций.


 
Sha ©   (2003-05-28 17:27) [18]

http://www.xakep.ru/post/18513/dede.rar


 
Malder ©   (2003-05-28 20:31) [19]

Игорь Шевченко © (28.05.03 16:23)
Можно. Но долго


Исходный код восстановить нельзя. Могу даже поспорить


 
Spartak ©   (2003-05-29 09:37) [20]

>:Исходный код восстановить нельзя. Могу даже поспорить

Можно ! но не на всех языках ! У меня например был декомпилятор который востонавливал весь код ( только правда на VB 4.0 не выше )
а на delphi только dede видел ! но это не то ! хотя он может востановить код в асемблерном варианте


 
Palladin ©   (2003-05-29 09:40) [21]


> только правда на VB 4.0 не выше

правильно, ибо это интерпретируемый код был...


 
Кулюкин Олег ©   (2003-05-29 09:46) [22]

2 Spartak © (29.05.03 09:37)
> а на delphi только dede видел ! но это не то ! хотя он может востановить код в асемблерном варианте
Но скомпилировать его нельзя :)


 
Malder ©   (2003-05-29 23:28) [23]

Ага, а если компилировать в VB как "полноценный" exe"шник тоже хрен что восстановишь.

>Но скомпилировать его нельзя :)

Вот именно. Чтож говорить о языках высокого уровня. Даже гипотетически интересно как будут называться хотя бы переменные ? :-)


 
Плохой человек   (2003-05-30 00:13) [24]

Раз уж возитесь - вот вам коллекция:

http://vit.smolensk.ru/tools/decompilers/delphi.decompilers.html


 
Asteroid ©   (2003-05-30 01:19) [25]

ИМХО все что угодно можно восстановить. "То, что написано одним, может быть понято другим" (А. Конан-Дойль). Другое дело, что существует несколько вариантов восстановленных кодов, но это уже детали.


 
Доброжелатель   (2003-05-30 09:11) [26]

Нет, невозможно программу на Делфи декомпилировать. Форму извлечь из прикрепленного ресурса - запросто, но не больше.


 
Malder ©   (2003-05-30 16:38) [27]

>ИМХО все что угодно можно восстановить

>существует несколько вариантов восстановленных кодов

Имхо, противоположные по смыслу фразы в одном посте :-)
Если существует несколько вариантов, значит, мы никогда не можем восстановить то, что было. Можно предпологать только с некоторой долей вероятности. Причем эта работа будет не дизассемблера, а кучи очень грамотных и талантливых программистов.


 
Asteroid ©   (2003-05-31 01:38) [28]

> Malder © (30.05.03 16:38)
Дык - один из этого конечного множества вариантов будет совпадать (с точностью до комментариев в коде и имен переменных/функций/... ) с исходным текстом (абсолютно точно восстановить невозможно). Другие все будут производить такой же компилированный код, но сами они будут отличаться.

> Причем эта работа будет не дизассемблера
Но это уже не дизассемблер, а декомпилятор.

> ...,а кучи очень грамотных и талантливых программистов.
Куда ж без них :)


 
Malder ©   (2003-05-31 11:16) [29]

с точностью до комментариев в коде и имен переменных/функций/...

Что-то не понял. Вроде как по правилам русского языка эта фраза означает то, что будут восстановлены комментарии и имена переменных/функций/...

P.S. Комментарии - это просто здорово было бы ! Особенно, если их нету в исходном проекте ! :-)


 
JohnJ ©   (2003-05-31 15:01) [30]

Мне вот не понятно... По идее - если можно зашифровать исходный код в код для ЭВМ, то можно и обратно! Разве не так?


 
sancho ©   (2003-05-31 15:33) [31]

Заново написать!


 
Anatoly Podgoretsky ©   (2003-05-31 16:07) [32]

JohnJ © (31.05.03 15:01)
Мысль правильная и трезвая, но только если кодирование без потери, примерный аналог GIF и JPEG закодированные из BMP, вот первый можно обратно превратить в 100% индетичный BMP, а втрой нет.


 
Malder ©   (2003-05-31 16:14) [33]

Мне вот не понятно... По идее - если можно зашифровать исходный код в код для ЭВМ, то можно и обратно! Разве не так?

Не так. Тут надо поразбираться в компиляторах. Если тема интересна - можно поискать в интернете на тему декомпиляции, будет приведено множество фактов, почему так сделать нельзя.


 
Asteroid ©   (2003-06-01 01:34) [34]

> Malder © (31.05.03 11:16)
> ...по правилам русского языка эта фраза означает то, что будут восстановлены комментарии и имена переменных/функций/...

Возможно, но я имел ввиду, что как раз это и не сохраняется.

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


 
Юрий Зотов ©   (2003-06-01 02:39) [35]

> JohnJ © (31.05.03 15:01)
> Мне вот не понятно... По идее - если можно зашифровать
> исходный код в код для ЭВМ, то можно и обратно! Разве не так?

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

Пример "на пальцах". Прямая задача: есть числа 2, 5 и 9, надо найти их сумму. Без проблем - складываем и получаем 16. А вот обратная задача: есть число 16 и надо найти слагаемые, из которых оно было получено. Сколько вариантов?




 
Кен ©   (2003-06-01 06:08) [36]

Asteroid ©
>"То, что написано одним, может быть понято другим"
И подтёрто третим.


 
Asteroid ©   (2003-06-01 14:12) [37]

> Юрий Зотов © (01.06.03 02:39)
Проблема не в том, чтобы восстановить точный исходный код, а в том, чтобы его вообще перевести из машинного кода в язык высокого уровня.


 
Юрий Зотов ©   (2003-06-01 16:13) [38]

> Asteroid © (01.06.03 14:12)

И какая же в этом проблема?


 
Ihor Osov'yak ©   (2003-06-01 16:49) [39]

2 Asteroid © (01.06.03 14:12)

Делал такое.Давно. Паскаль пятый. Около 60к. Месяц работы. Результатом был исходный текст на паскале, который при компиляции давал exe один к одному..

Зы. Этот месяц работы довольно неплохо оплачивался (то есть, это делалось не для спортивного интереса)...
Зы2. Учитывая наличие RTTI в делфи, то для делфии это может и немного проще, чем для паскаля.. Плюс доступны имена импортируемых функций.. Но с другой стороны - несколько более развит синтаксис, также более обширные библиотеки..

Зы3. Но по любому это довольно дорогое занятие..





 
Luidji   (2003-06-01 20:36) [40]

Ihor Osov"yak, очень интересно. Поделись, как делал ?

P.S. 60 kb - это кода там было немало.


 
Ihor Osov'yak ©   (2003-06-01 23:23) [41]

В общих чертах так. Для начала нужно было подобрать набор стандартных библиотечных функций.. Модуль system линкуется самым первым, пишем тестовое приложение, вызывающие все функции модуля system. Дисассемблером проходимся по тестовом приложении и по иследуемом. Сравнением кода первых модулей кода определяем набор функций, которые использовались из модуля систем. Играем опциями компилятора так, чтобы образы функций были идентичными.. Задача упрощается тем, что функции идут в образе модулей последовательно, то-есть код некоторой функции может отсутствовать, но функции не могут быть "помешаны" - в смысле, порядок расположения функций в образе модуля детерминирован...
.. Завершение первого этапа - образы модуля system для исследуемого приложения и тестового - одинаковые. Потом по адресам точек входа в код соотв. функций востанавливаем их имена (это когда уже делаем разборку с custom-units)..

После system смотрим до следующего модуля - есть ли он стандартный или уже пользовательский, если стандартный - повторяем процедуру, аналогичную system. В моем случае был еще один стандартный - dos, далее шли пользовательские... Определение пользовательский или стандартный - сравнение кода одной или двух первых функций с несколькими первыми функциями из стандартных модулей - благо в пятом паскале их не так много, да и посмотрев программу в работе, можно было понять, что ни graph, ни crt там не использовались :-)..

Далее кустом модули.. Отправные точки - по адрессам вызова стандартных модулей определеямем стандартные функции, которые зовутся.. По манипуляциям со стеком на момент входа в процедуру - размер локальных переменных.. По построению стека вызова - прикидки о количестве и типах формальных параметров..

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


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

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

Зы. Дело было где-то в 92-94, могу по архивам точно посмотреть.. Но думаю, это уже не столь важно..






 
evvcom ©   (2003-06-02 01:20) [42]

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


 
p77 ©   (2003-06-02 01:33) [43]

2 Ihor Osov"yak © (01.06.03 23:23):
Нехило...


 
Oleg_Gashev ©   (2003-06-02 01:45) [44]

Dede не восстанавливает dfm, etc если просто exe сжать чем нибудь.


 
Ihor Osov'yak ©   (2003-06-02 09:33) [45]

2 evvcom © (02.06.03 01:20)

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

А относительности целесообразности той задачи.. Инета тогда не было, информация для реализации изделия нужна была специфическая.. Расколупывать информацию было бы еще более проблематично. А так было под рукой изделие, несколько глючивое и немного функциональность нужно было расширить.. А автора установить невозможно было..


 
Игорь Шевченко ©   (2003-06-02 14:52) [46]

Malder © (28.05.03 20:31)
> Исходный код восстановить нельзя. Могу даже поспорить


Мы говорим о точном исходном коде или о восстановлении кода, выполняющего ту же самую задачу ? Первое - нельзя, второе можно.



Страницы: 1 2 вся ветка

Текущий архив: 2003.06.19;
Скачать: CL | DM;

Наверх




Память: 0.59 MB
Время: 0.014 c
14-60345
zeppelin
2003-06-02 12:22
2003.06.19
Отчет с помощью Rave


3-60080
first_aid@hotbox.ru
2003-05-27 11:52
2003.06.19
Как заставить обновится вычисляемое поле


1-60121
titnn
2003-06-04 08:42
2003.06.19
Как узнать Сочетание нажатых клавиш ?


3-60020
vajo
2003-05-27 14:53
2003.06.19
TQuery


14-60330
Malder
2003-05-31 00:04
2003.06.19
Всем фанатам Star Control