Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Декомпилятор exe, созданного в Delphi, в Pascal-код

Автор: apatit
Дата сообщения: 28.08.2002 12:37
Всем привет!

Существует ли сабж? Если кто встречал, дайте, пожалуйста, наводку.

Заранее благодарен.
Автор: xrand
Дата сообщения: 28.08.2002 14:01
apatit
Exe2Dpr by Dmitriy Goldobin. 21.X.1999.
Exe2Dpr 3.1.

DeDe by DaFixer. 06.VIII.2002.
DeDe 3.10.

Revendepro by Python. 25.VII.2000.
Revendepro 0.0.2.17 (325K). Full source code (219K). For Delphi 5 binary version.
Успехов.
Автор: apatit
Дата сообщения: 28.08.2002 15:13
xrand
Спасибо!
Все нашел, все скачал
Автор: jf
Дата сообщения: 29.08.2002 00:06
apatit
Тока Delphi 6-программы не декомпилит ( и даже 5, помоему)
Автор: infected
Дата сообщения: 29.08.2002 21:48
Это называется декомпилятор? Всё что она делает - выдирает ресурсы и генерит миним когда, который эти окна описыват. dfm исходники вообще в exe-файле в открытом виде лежат Вот процедурки если б показывал... Так таких не существует и существовать не может...
Автор: Gigabyte_from_Sumy
Дата сообщения: 16.10.2002 15:27
Если компиляция производится без всяких оптимизаций и т.п., то тогда возможна декомпиляция, иначе дела - полная задница...
DeDe в принципе неплохо декомпилирует... но очень много условностей...
Автор: vserd
Дата сообщения: 16.10.2002 16:37
infected

Цитата:
Вот процедурки если б показывал... Так таких не существует и существовать не может...

В fido7.ru.delphi несколько лет назад человек очень сильно ошарашил народ декомпиляцией DCU.
Что касается ЕХЕ, то тут такая куча проблем, что максимум тебе сделают, это на место процедур выдавать ассемблерный код.
Автор: woffer
Дата сообщения: 16.10.2002 22:28
Декомпиляция в язык высого уровня невозможна
Автор: f_serg
Дата сообщения: 17.10.2002 06:41
woffer

Цитата:
Декомпиляция в язык высого уровня невозможна

Возможна! Правда, результат мало похож на программу на языке высокого уровня.
Автор: xor1
Дата сообщения: 17.11.2005 09:02
p;
Автор: mdid
Дата сообщения: 14.02.2006 12:00
фигня эти декопилы делал я результат полная ерунда реально там можно мало чего добиться
Автор: GreenKaktuS
Дата сообщения: 29.08.2007 14:12
Слушайте, вот после декомпиляции выдаёт практически весь код программы, только без процедур. Вместо процедур там написано типо \\adress и номер небольшой, вроде в шестнадцатеричной системе. И чё с этим делать. Все процедуры описывать самому по новой, или можно найти выход???
Автор: OdesitVadim
Дата сообщения: 29.08.2007 23:21
GreenKaktuS
Внимательо смотреть, пытаться догадаться что там должно быть, всё таки не всё потеряно, вызовы апи функций, Published методов и протертей видно. Также с ассемблерного кода можно розглядеть циклы, условия. Вначале сложно, но потом читаеш как свой родной, тоесть украинский
Автор: antonn2
Дата сообщения: 29.08.2007 23:47
а можно тупо находить по адресу код и оформлять его asm-аставками
правда такая фигня будет%)


Цитата:
В fido7.ru.delphi несколько лет назад человек очень сильно ошарашил народ декомпиляцией DCU.

байка, передающаяся из поколения в поколение. ДКУ - бинарник
Автор: OdesitVadim
Дата сообщения: 30.08.2007 23:17
antonn2
В dcu сохраняется достаточно много инфы. Но нет одного, важного - инфи о локальных переменных. Правда если интересует восстановление функционала, то какая разница, переменная цыкла будет i или j?

Саму байку читал в подробностях. пример, который он декомпилировал теоретически мог, так как там в основоном вызовы методов класов различных(кажеться работа с реестром). Хотя учитывая, что даже отступы совпадали, создаётся впечетление, что человек сам с собой спорил.
Я бы хотел увидеть, как бы он декомпельнул какой-нибуть математический алгоритм. Вот там он на долго засел бы.
Автор: vserd
Дата сообщения: 03.09.2007 19:59
antonn2

Цитата:
ДКУ - бинарник

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

Для DOS Turbo Pascal был набор утилит, который среди прочего позволял декомпилировать DCU (точное расширение для DOS непомню), я ему скармливал свой модуль и проверял работу декомпилированного модуля, работа сохранялась, код был в основном Asm. Но работало. Так что посидев и много поработав можно написать декомпилятор DCU.

OdesitVadim

Цитата:
Хотя учитывая, что даже отступы совпадали, создаётся впечетление, что человек сам с собой спорил

Не показатель.
У нас на фирме из 4-х программеров у 3-х отступы совпадают. На других работах 2-3 человека в обязе были с одинаковыми привычками отступами, на одной все работали с одним отступом, т.к. стандарт однако.

Вроде в приватных переменных у них отличие было, но в общем то не существенное...
Автор: delover
Дата сообщения: 04.09.2007 10:25
vserd
Под DOS бинарники назывались TPU. Был тогда продукт назывался он TVision. Было очень интересно посмотреть именно на паскалевский код. И я его наполовину востановил. А делал это под дебаггером. Написал программулю которая при нажатии клавиши сохраняет интересующую часть текстового экрана и перелистывает страницу вперёд. Дальше из текстового файла ещё одной утилиткой вычищались ненужные адреса, а вместо нужных организовывались метки. Так что получался сравнительно работоспособный код. Потом я читал это и переписывал на паскаль. Когда очередной юнит востанавливался я сравнивал его с исходным TPU. Так вот почти половину востановил. Работал над этим приблизительно четыре месяца. Но потом за рублей тридцать у фидошника купил полный набор исходников. Естественно названия локальных переменных не всегда совпадали, но сами алгоритмы походили исключительно, даже в части отступов. Но вот с Delphi пошла оптимизация - это уже сложнее. Некоторые локальные переменные существуют только в регистрах, так что догадаться бывает сложнее, чем просто оформить в asm вставку.
Автор: skvor22
Дата сообщения: 07.02.2010 15:15
Пробовал в DeDe восстановить простейшую программу, которую сам и написал на Delphi.
Восстанавливает интерфейс окна, но все процедуры на ассемблере. Пробую запустить под Delphi ругается и не запускает. Максимум, что можно вынести из восстановления, это узнать статическая надпись на интерфейсе или нет, но не более. Мне, например нужно узнать чем отличаются две версии одной программы и как снять ограничение. Но так как запустить её из Delphi нельзя, то какая польза от воссановления.
Автор: Tantos
Дата сообщения: 09.02.2010 05:39
skvor22, тебе - никакой. Другим помогает узнать адреса обработчиков событий, чтобы доработать их напильником через декомпилятор/отладчик, а так же более удобная работа с ресурсами/интерфейсом программы.
Автор: delover
Дата сообщения: 11.02.2010 20:31
Tantos
Чем больше я узнаю интернет, тем больше мне нравятся программисты которые с ним не знакомы.

Поздравляю, сегодня глюк - 11 02 2010, а что будет ровно через год?
Автор: delover
Дата сообщения: 19.02.2010 12:45
Спасибо за замечание, я так и надеялся что меня неправильно поймут. Скорее всего был оффтоп (для меня старики все на одно лицо, никого не помню). Так как заговорили в ключе - "тебе - никакой" предположил, что бывают кто то другие. А рас все одинаковы и разницы действительно ... - никакой (тем более старикам).


Добавлено:
А можно задать вопрос в теме декомпиляторы? Существуют лицензии позволяющие декомпиляцию?

Добавлено:
Если да то какие? GNU, EULA, а может Trustware?
Автор: ShIvADeSt
Дата сообщения: 19.02.2010 13:59
Я сам видел у некоторых программ (фриваре) в ЕУЛА слова, что можно с программой делать, что угодно. Так что если в лицензионном соглашении не написано, что декомпиляция запрещена (а это очень часто), то можно свободно декомпилировать.
Автор: delover
Дата сообщения: 19.02.2010 17:19
Хорошо.
Конечный пользователь - это иногда даже принцип.

Цитата:
Поздравляю, сегодня глюк - 11 02 2010, а что будет ровно через год?

11.02.2010 - это для декомпилятора 40220.
13.02.2010 - это дата когда начались торжества по поводу начала олимпиады 40222.
Дата начала - три двойки, три и два - пять колец, вообще то не плохо. Думаю, что запомню когда была олимпиада. Но как быть, если

Цитата:
Пробовал в DeDe восстановить простейшую программу, которую сам и написал на Delphi.
?

И мы тут же с удовольствием верим, что бывает такое когда НУЖНО ВОСТАНОВИТЬ!!!
[no]%)[/no]

Tantos
Вы совершенно верно всё написали, только работа с ресурсами на двоечку в декомпиляторах. Она там не более удобная, а слизанная с текстовых визардов. Мне больше нравятся непосредственные редакторы ресурсов.
Автор: Qraizer
Дата сообщения: 20.02.2010 00:42
Там почти все ресурсы - это user defined
Автор: delover
Дата сообщения: 21.02.2010 10:33
Qraizer
В смысле RСDАТА или бывает такое, что "нужно востановить" очень важную свою программу, а редактором ресурсов никак не получается?
Думаю, что не нужно ничего востанавливать (IMHO). Пользователи уже привыкли, что наилучшие программы которые они юзают декомпиляторами не взломать, те кто их взламывают пользуются многими другими средствами. А лицензию читать всегда сложно, вдруг окажется, что "ломишся в открытые ворота". Так что ресурсы, как и человеческие ресурсы весьма не эффективно...

Толку то, расковыряю я окна проги, а там юзаются компоненты которые стоят ещё дороже. Если все варианты рассмотреть за флуд прикроют. )
Автор: Egg_Head
Дата сообщения: 09.08.2013 00:51
Вот кстати, список, декомпиляторов на слуху:

IDA-Pro - интерактивные дизассемблер и отладчик для огромного числа процессоров
Hex-Ray - декомпилятор (плагин к IDA Pro) кода для x86, ARM в высокоуровневый компилируемый код на C
Boomerang - интерактивный декомпилятор кода для x86 и Sparc в высокоуровневый компилируемый код
DCC - декомпилятор
Delphi Decompiler(DeDe) - декомпилятор кода для x86 в высокоуровневый компилируемый код на Delphi
Demono - аналог декомпилятора, восстанавливает алгоритмы (проект недавно начался), есть онлайн-сервис
REC Studio 4 - интерактивный декомпилятор кода для x86, Mips, PowerPC и mc68k на C
Автор: A_V
Дата сообщения: 09.08.2013 11:39
Egg_Head

Цитата:
http://studiogm.us/delphidecompiler/, Delphi Decompiler(DeDe) - декомпилятор кода для x86 в высокоуровневый компилируемый код на Delphi

'высокоуровневый компилируемый код на Delphi' он не генерит, только asm с комментариями.
все остальное по ссылкам с Delphi/Pascal не работает.

еще по полезным ссылкам:
Delphi код пытается генерить IDR, но на реальном коде это практически не работает, только asm.
для новых версий Delphi (2010 и выше) я делал тулзу DRX - в новых дельфях используется новый расширенный rtti, так что секция interface по большей части извлекается. Код тоже на асме с комментами. Зато пока что единственная туза с поддержкой x64
ну и для DCU файлов - есть dcu32int - тут реально практически вся секция interface извлекается, плюс в dcu есть инфа о локальных переменных, так что в теории для dcu можно сделать полноценный декомпилятор, на практике, увы его никто не релизовал еще..
для исследователей dcu есть еще загрузчик для IDA, работает для версий D2007-XE4
Автор: Egg_Head
Дата сообщения: 09.08.2013 19:35
A_V
спасибо, не знал =)
Автор: Egg_Head
Дата сообщения: 24.10.2013 02:52
разные есть
по списку смотри
http://demono.ru/links.html
Автор: Alexey87
Дата сообщения: 06.05.2015 23:02
Уважаемые, форумчане!
помогите, пожалуйста, в решении следующего вопроса:
есть exe-файл, созданный в delphi 7 (исходники утеряны),
нужно изменить изображение (файл запакован напрямую или вставлен в одну из форм)
какие есть варианты решения данного вопроса?

Страницы: 12

Предыдущая тема: Документация по языку RPG/400 (IBM AS/400)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.