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

Вниз

Есть ли декомпилятор прог написаных на делфи ?   Найти похожие ветки 

 
Gero ©   (2004-09-27 10:25) [40]


> _silver ©   (27.09.04 09:31)

Все эти утверждения не говорят о том, что декомпиляция невозможна.
Это сложная задача, и исходник в таком виде как он был, восстановить не получится наверняка.
Но утверждать о невозможности этого глупо.
Может через несколько лет будут совсем другие компиляторы и форматы exe?
А ты утверждаешь, что "Таких прог не было, нет и не будет".


 
_silver ©   (2004-09-27 10:30) [41]


> Может через несколько лет будут совсем другие компиляторы
> и форматы exe?

Это не доказывыает возможность существования декомпиляторов, а скорее опровергает.

> • Разделение кода и данных.

Обращаю ещё раз внимание на это. В общем случае не возможно определить что в файле код или данные.


 
Sandman25 ©   (2004-09-27 10:33) [42]

[41] _silver ©   (27.09.04 10:30)
Обращаю ещё раз внимание на это. В общем случае не возможно определить что в файле код или данные.

Программа же как-то выполняется. Значит, нужно сэмулировать ее выполнение и получить ее "код"


 
Gero ©   (2004-09-27 10:34) [43]


> В общем случае

В общем случае да.
А в частных можно.
Я могу написать декомпилятор только для своей программы.
От этого он декомпилятором быть не перестанет.


 
_silver ©   (2004-09-27 10:35) [44]


> Я могу написать декомпилятор только для своей программы.

:)))))
Такой я тоже могу.


 
Agent13 ©   (2004-09-27 10:36) [45]

Мужики, давайте смотреть на вещи проще! Какая разница, каое определение мы даём декомпилятору? Юзеру не легче оттого, что вы назовёте ДеДе декомпилятором. Потому как код, сотворённый сей программой обратно компильнуть не выйдет. Так что классификация - проблема философская, а не жизненная.


 
Gero ©   (2004-09-27 10:37) [46]


> _silver ©   (27.09.04 10:35)

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


 
Gero ©   (2004-09-27 10:38) [47]


> Agent13 ©   (27.09.04 10:36)

Да не, мы тут спорим возможен ли декомпилятор в принципе.


 
_silver ©   (2004-09-27 10:42) [48]


> Ну вот, а ты говоришь, что он не возможен.
> Надеюсь ты убедился в обратном?

Нет не убедился.
Для какой-то конкретной программы зная её структуру я могу написать декомпилятор.
Ещё один пункт к моим докозательствам:
-включение объектных модулей написанных на С


 
Gero ©   (2004-09-27 10:43) [49]


> Для какой-то конкретной программы зная её структуру я могу
> написать декомпилятор.

Раз ты можешь его написать, значит он возможен, не так ли?


 
_silver ©   (2004-09-27 10:50) [50]


> Gero ©   (27.09.04 10:43) [49]

Я бы не стал называть это декомпилятором.


 
Игорь Шевченко ©   (2004-09-27 10:56) [51]

Gero ©   (26.09.04 23:42) [6]


> > DeDe - дизассемблер, заточеный под проги написанные на
> delphi.
>
> Декомпилятор. Так как кроме асма мы получаем еще и структуру
> проекта, и все формы.


Ерунда.

Получаются только формы, созданные по auto-create.

_silver ©   (26.09.04 23:46) [11]


> но надо смотреть на факты - пока таких прог нет и врядли
> будет.


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

Gero ©   (27.09.04 10:38) [47]


> мы тут спорим возможен ли декомпилятор в принципе.


Возможен


 
_silver ©   (2004-09-27 11:01) [52]


> Ну почему же ? Компилятор Delphi генерирует вполне детерниминированный
> код, по крайней мере, можно попытаться получить функционально
> аналогичную программу из скомпилированного исходного кода,
> только это долго и муторно, и чаще всего не нужно.

Да дело не только в компиляторе.
Я же уже приводил доводы.


 
Gero ©   (2004-09-27 11:05) [53]


> Я бы не стал называть это декомпилятором.

От того, как ты будешь это называть, он декомпилятором быть не перестанет.
Есть exe"шник, он его прочитает и выдаст тебе исходный текст.
Чем не декомпилятор?


 
_silver ©   (2004-09-27 11:13) [54]


> Чем не декомпилятор?

Тем что он будет работать только с одним этим ехешником, на другом засыпется.
И всётаки я наставиваю на том что декомпиляция - процесс обратный компиляции и рассматривать "декомпиляторы" можно только с этой стороны. Если это условие выполняется значит декомпилятор возможен. А так пустой разговор.
З.Ы Чем IDA не декомпилятор.


 
Gero ©   (2004-09-27 11:20) [55]


> _silver ©   (27.09.04 11:13)

Ладно, этот спор ни к чему не приведет.


 
PVOzerski ©   (2004-09-27 11:23) [56]

Немножко соображений:
1) :^) А комментарии, разбивку по строкам (если нет отладочной информации), отступы, имена всех функций и переменных тоже декомпилируем? BTW, комментарии - иногда почти самое ценное в исходниках.
2) Уже серьезнее: а как быть с тем, что можно из разного Pascal-кода получить на выходе один и тот же набор машинных инструкций? И что будет делать декомпилятор в такой ситуации?


 
Gero ©   (2004-09-27 11:24) [57]


> PVOzerski ©   (27.09.04 11:23)

То есть ты тоже думаешь, что компилятор невозможен в принципе?


 
_silver ©   (2004-09-27 11:25) [58]


> Уже серьезнее: а как быть с тем, что можно из разного Pascal-кода
> получить на выходе один и тот же набор машинных инструкций?
>

Так же - один код на Pascalе может привести к разным наборам машинных инструкций.

> Gero ©   (27.09.04 11:20) [55]

Согласен.


 
Игорь Шевченко ©   (2004-09-27 11:29) [59]

_silver ©   (27.09.04 11:01) [52]


> Да дело не только в компиляторе.


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


 
PVOzerski ©   (2004-09-27 11:30) [60]

IMHO, нечто, генерящее компилируемый обратно код на смеси Паскаля с  ассемблером, получить можно, но пользы окажется существенно меньше, чем ожидается. Вытянуть себе полезный компонент из экзешника, во всяком случае, не получится почти наверняка. Более того, я не уверен, что можно сделать даже нормальный конвертер DCU-шек с одной версии на другую. Кстати, это было бы куда полезнее на практике, чем декомпилировать приложения. IMHO, конечно.


 
Суслик ©   (2004-09-27 11:31) [61]

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

Дурацкая тема - неужто непонятно, что полная декомпиляция нереальна?


 
Игорь Шевченко ©   (2004-09-27 11:32) [62]


> Вытянуть себе полезный компонент из экзешника, во всяком
> случае, не получится почти наверняка


Получится :)


 
_silver ©   (2004-09-27 11:33) [63]


> и никакой отсебятины, за исключением оптимизации, он не
> добавляет.

Может добавить программист


asm
...
jmp @1
@2: db 1111
   db 2222
   ...
@1:
   ...
   jnc @2
...
end;

И как такой код переварит декомпилятор?


 
easy ©   (2004-09-27 11:36) [64]


> Просто я уже не знаю что делать с этим подлым HttpQueryInfo


зачем он тебе хоть?..


 
PVOzerski ©   (2004-09-27 11:44) [65]

2Игорь Шевченко ©   (27.09.04 11:32) [62]
Могу покаяться: всерьез дизассемблировать дельфийские экзещники не пытался. Но неужели линкер не выбрасывает мертвый код, включая неиспользованные методы и свойства?


 
_silver ©   (2004-09-27 11:53) [66]


> PVOzerski ©   (27.09.04 11:44) [65]

Ещё как выбрасывает и своего добавляет.


 
Игорь Шевченко ©   (2004-09-27 11:54) [67]

PVOzerski ©   (27.09.04 11:44) [65]

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

hint: виртуальные методы не выбрасываются.

_silver ©   (27.09.04 11:33) [63]


> Может добавить программист


Я патологию в расчет не принимаю.


 
_silver ©   (2004-09-27 11:59) [68]


> Я патологию в расчет не принимаю.

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


 
Игорь Шевченко ©   (2004-09-27 12:01) [69]

_silver ©   (27.09.04 11:59) [68]


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


У нас с тобой разные понятия о универсальной программе. Надеюсь, язык программы с такими вставками, как ты написал в [63] уже не претендует на название "язык высокого уровня", не так ли ?


 
PVOzerski ©   (2004-09-27 12:01) [70]

>Выбрасывает. Но то, что ты видишь в коде, есть совокупность >методов, обеспечивающих нужную (и видимую тебе) функциональность.

Всю функциональность или то подмножество, которое было задействовано в экзешнике? Подозреваю, что уж неиспользованные статические public-методы будут выброшены наверняка (насчет published - не знаю).


 
_silver ©   (2004-09-27 12:07) [71]

Ну разговор становится совсем не интересным.
Я привожу примеры, аргументы, а в ответ
Получится :)
и всё тут. Почему получится, где факты?


 
DiamondShark ©   (2004-09-27 12:10) [72]

Вот нафлудили....
А проблема-то не декомпиляторе вовсе была...


> Просто я уже не знаю что делать с этим подлым HttpQueryInfo

Читать справку, ставить эксперименты, спрашивать на форуме конкретно про эту функцию...

Декомпилятор... блин...


 
Игорь Шевченко ©   (2004-09-27 12:27) [73]

PVOzerski ©   (27.09.04 12:01) [70]


> то подмножество, которое было задействовано в экзешнике?


+ виртуальные методы.

но с другой стороны, как ты можешь узнать, что какая-то функциональность отсутствует ? :)


 
Petr V. Abramov ©   (2004-09-27 13:12) [74]

>Игорь Шевченко ©   (27.09.04 10:56) [51]

>> мы тут спорим возможен ли декомпилятор в принципе.
> Возможен

 Не обнадеживай :), невозможен, хотя бы потому, что машинный код "не помнит" имен переменных, то есть программу на пас в том виде, в котором она была написана, декомпилятор не восстановит. Он может только сгенерить нечто, что при рекомпиляции даст тот же машинный код.


 
_silver ©   (2004-09-27 13:22) [75]

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


 
_silver ©   (2004-09-27 13:28) [76]

2 Игорь Шевченко
Т.е. нет речи о том есть ли в коде asm вставки.
И всё-таки вы говорите "Можно" - я спрашиваю "Почему?".


 
KSergey ©   (2004-09-27 13:37) [77]

Ну Игорь же давно сказал ключевое слово, которое почему-то не было подхвачено: "функционально аналогичную программу"


 
_silver ©   (2004-09-27 13:44) [78]

Ладно спорить больше не буду(сказывается психологическое давление голубых значков).
Попробую сново заняться созданием декомпилятора.
Как только получится(или не получится) что-то рабоче расскажу.


 
Игорь Шевченко ©   (2004-09-27 13:55) [79]

Petr V. Abramov ©   (27.09.04 13:12) [74]


> машинный код "не помнит" имен переменных, то есть программу
> на пас в том виде, в котором она была написана, декомпилятор
> не восстановит.


И комментариев не вставит. Я в предыдущих постах упоминал про функциональный аналог.


 
Фёдор Мегатронов   (2004-09-28 17:03) [80]

ладно я понял что я ламо.

Но как чёрт возьми узнать как работает эта чёртова функция ?

я уже в почти в бешенстве 8) ... над ней сломал голову знакомый, который на асме написал прогу, которая работает с DNS (почти 5000 строк кода)

учителя все знакомые сказали "попробуй какую-нибудь другую функцию" 8) а других функций нет .. сторониие компоненты я использовать не буду из принципа (зачем тогда был сделан ВИН АПИ ?)



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

Форум: "Потрепаться";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.63 MB
Время: 0.041 c
14-1096293438
QuasiLamo
2004-09-27 17:57
2004.10.17
Пинг


1-1096560903
Kolan
2004-09-30 20:15
2004.10.17
Текстовый интерпритатор


3-1095764757
stud
2004-09-21 15:05
2004.10.17
вопрос по событиям в interbase


3-1095770374
Nick-From
2004-09-21 16:39
2004.10.17
Вопрос по FibPlus


14-1095766607
Kerk
2004-09-21 15:36
2004.10.17
Еще раз о женщинах в программировании.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский