Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.06.19;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.009 c
1-60215
BDRON
2003-06-05 14:46
2003.06.19
Эмуляция нажатия сочетания клавиш


1-60238
Шурочка
2003-06-05 18:14
2003.06.19
Чем RTTI лучше полиморфизма или лучше?


1-60250
Danil%%
2003-06-05 21:41
2003.06.19
Вопрос о строке в файле


3-60051
Remis
2003-05-27 22:26
2003.06.19
SQL Like...


4-60455
tytus
2003-04-19 17:45
2003.06.19
Button





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский