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

Вниз

Декомпиляторы   Найти похожие ветки 

 
_silver ©   (2004-09-27 21:20) [0]

Мастера почти убедили меня в том, что возможно создать декомпилятор и я решил снова заняться этой проблемой.
Предлагайте нобор тестов для этого самого декомпилятора.


 
Anatoly Podgoretsky ©   (2004-09-27 21:22) [1]

Есть такая папка Demos, компилируешь из нее примеры, потом декомпилируешь и сравниваешь. Очень точный тест.


 
_silver ©   (2004-09-27 21:25) [2]

Anatoly Podgoretsky ©   (27.09.04 21:22) [1]
Учту.
Но для начала хотелось бы что нибудь менее сложное.


 
Anatoly Podgoretsky ©   (2004-09-27 21:27) [3]

Та есть совсем простые проекты, ну и от себя добавь "Hello World"


 
_silver ©   (2004-09-27 21:28) [4]

Anatoly Podgoretsky ©   (27.09.04 21:27) [3]
Я ценю ваш юмор.


 
Nous Mellon ©   (2004-09-27 21:58) [5]

:)
Да тут вся ветка один юмор.
Декомпилятор? Оригинальный исходник на алгоритмическом языке получить невозможно в принципе. Как говорит Палладин, по дерьму нельзя определить все что было в тарелке. Открой окно ЦПУ и подумай как ты будешь что-то декомпилировать. Может еще и комментарии восстановишь?

LMD


 
Nous Mellon ©   (2004-09-27 21:59) [6]


> нобор

:)
Ну вот а как все начиналось, прям как профи когда ОС сел писать.


 
DiamondShark ©   (2004-09-27 22:04) [7]


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

Строго доказать сможешь?


 
Nous Mellon ©   (2004-09-27 22:17) [8]


> Строго доказать сможешь?

1. Ты же знаешь что я по сравнению с тобой жалкий ламер(хотя что будет со мной в твои годы :)), но даже мой уровень, возможно, дает возможность оценить эту задачу.
2. Я подчеркиваю, что слово было оригинальный. То есть тот который писал разработчик. As Far As I Know Никаких идентификаторов в исполняемом файле от оригинального кода не остается, что уже ИМХО является доказательством этой невозможности. Вместо имен переменных подставляются их адреса, вместо вызова процедур или функций call [$xxxx],
а параметры так вообще в стеке, но и это ИМХО не главное. Интерпретация некоторых команд возможна в разные команды алгоритмического кода. Взять даже простейшие операторы присваивания. А как восстановить из опкодов струтуру записей, или классово-объектную да и возможно ли это?

Думаю, что сейчас получу что-нибудь про мои способности от Шарка, но я старался обосновать свое мнение.


 
YurikGL ©   (2004-09-27 22:21) [9]


> _silver ©   (27.09.04 21:20)  

DeDe+yandex

DeкомпиляторDeлфи

Ж;-))))))


 
Nous Mellon ©   (2004-09-27 22:22) [10]

В дополнение к 2:
такой к примеру код
a := 9/3 + 2;
b := a*с;
Какой смысл траслятору создавать код рассчитывающий a, логичнее было бы написать и b:=5*c


 
Nous Mellon ©   (2004-09-27 22:23) [11]


>  [9] YurikGL ©   (27.09.04 22:21)

Думаете то что получится можно будет скомпилировать?


 
Nous Mellon ©   (2004-09-27 22:27) [12]

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


 
YurikGL ©   (2004-09-27 22:28) [13]


> Nous Mellon ©   (27.09.04 22:23) [11]

Вряд ли


 
_silver ©   (2004-09-27 22:28) [14]


>  Оригинальный исходник на алгоритмическом языке
> получить невозможно в принципе.

Я об этом и говорил, но мастера пытались меня переубедить.
Я решил ещё раз попытаться.

> Nous Mellon ©   (27.09.04 21:59) [6]

Меня уже начинает бесить то, что вместо того чтобы сказать что-то умное ты ищешь опечатки у других

> YurikGL ©   (27.09.04 22:21) [9]

Я знаю что такое DeDe.


 
_silver ©   (2004-09-27 22:32) [15]

Nous Mellon ©   (27.09.04 22:27)
Сначала ознакомься с http://delphimaster.net/view/14-1096220599/, а потом высказывай свои умные мысли.


 
Nous Mellon ©   (2004-09-27 22:34) [16]


>
> Вряд ли

Я думаю что точно Нет :)
> Я об этом и говорил, но мастера пытались меня переубедить.
> Я решил ещё раз попытаться.

ЭЭЭ.. Это что наши Мастера? ПОйду померю температуру...... Я не верю что наши обладатели голубых значков могут такое утверждать... Может это не в лыжах дело ?
>
> Меня уже начинает бесить то, что вместо того чтобы сказать
> что-то умное ты ищешь опечатки у других

Просто человек который пишет "нобор", ИМХО не сможет написать декомпилятор даже если бы это было возможно. Это не о тебе, я думаю ты просто опечатался, я о феноменах типа Профи или Димы О.


 
Nous Mellon ©   (2004-09-27 22:40) [17]


> 15] _silver ©   (27.09.04 22:32)

LOL Gero постебался над тобой, а ты и....
А ИШ говорил не про оригинальный исходник(это то что я понимаю под декомплированием) а про функциональный аналог. Правда я в это тоже не очень-то верю.


 
DiamondShark ©   (2004-09-27 22:42) [18]


> Nous Mellon ©   (27.09.04 22:17) [8]

Ага. Т.е. ты на ходу переопределил задачу, и лихо с ней расправился.


 
Nous Mellon ©   (2004-09-27 22:45) [19]


> Ага. Т.е. ты на ходу переопределил задачу, и лихо с ней
> расправился.

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


 
Nous Mellon ©   (2004-09-27 22:48) [20]

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


 
Nous Mellon ©   (2004-09-27 22:50) [21]

Тот же
push eax
call $xxxx
Будет заменен на какой-нибудь procedure MyProc1(MyVar1 : Whattype?)
а практическая польза? Не поправить не своровать... :) Прошу прощения за асм-неграмотность.


 
Nous Mellon ©   (2004-09-27 22:51) [22]


>  Не поправить не своровать... :)

то есть сложно понять, вот что главное.

ЗЫ Имелся в виду, конечно, вызов процедуры а не декларация


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


> Просто человек который пишет "нобор", ИМХО не сможет
> написать декомпилятор даже если бы это было возможно.

Я и не говорю что смогу.
Я сказал что попытаюсь.
И проанализировав эту попытку хотел привести объективное мнение о сабже.
Но боюсь кроме насмешек ничего в ответ не услышу.


 
_silver ©   (2004-09-27 23:37) [24]


> Прошу прощения за асм-неграмотность.

Как ты при этом можешь рассуждать о возможности или невозможности существования декомпиляторов???


 
_silver ©   (2004-09-27 23:45) [25]

Nous Mellon ну так я жду ответа.
Ты задел меня теперь я буду доставать тебя.
Если не знаешь о чём говоришь лучше молчи.


 
nikkie ©   (2004-09-28 01:46) [26]

ну вы блин даете...

пусть имеется компилятор C, исходный код S, бинарный код B = C(S).
понятно, что функция C необратима - 1. не всякий бинарник B может быть получен таким образом; 2. разные исходные тексты могут давать один и тот же бинарник. поэтому, не требуя невозможного, декомпилятором мы называем функцию D такую, что если B=C(S), то C(D(B))=B. то есть D(B) - будет некоторый исходник, необязательно совпадающий с S, но который при компиляции даст тот же бинарный код.

теоретически существование декомпилятора очевидно. надо просто перебирать исходники (в порядке возрастания сложности - в качестве меры сложности можно взять, например, количество символов в исходнике), компилировать их и сравнивать результат с бинарником. практически, понятное дело, в таком брутфорсе смысла нет.


 
KilkennyCat ©   (2004-09-28 01:51) [27]

да можно, можно написать декомпилятор, успокойтесь.
Вопрос в другом - нафига он нужен?
Если вы программист - то сами напишите такую прогу, которую декомпилить хотите, и быстрее, чем разбираться в чужом коде, ибо комментариев-то уж точно не декомпилить :) и полезней, ибо ежели что-то неизвестно - придется изучить.
С другой стороны, если вы ламер - то и чужой код не поможет.
В итоге получаем, что способному разобраться в коде этот код не нужен, так как экономически невыгоден, неспособному разобраться - тем более не нужен.


 
Nous Mellon ©   (2004-09-28 06:50) [28]


> Я сказал что попытаюсь.
> И проанализировав эту попытку хотел привести объективное
> мнение о сабже.
> Но боюсь кроме насмешек ничего в ответ не услышу.

Значит плохо анализируешь
> Как ты при этом можешь рассуждать о возможности или невозможности
> существования декомпиляторов???

Если ты нашел мой псот в корне неверным то попрошу пояснить. А про неграмотность я написал чтобы Шарк к мелочам не цеплялся.
> Nous Mellon ну так я жду ответа.

:) На что?

> Ты задел меня теперь я буду доставать тебя.

Ты забавляешь меня, чудо :)
> Если не знаешь о чём говоришь лучше молчи.

Все что я хотел сказать я привел в 8 и 20.

:)


 
Nous Mellon ©   (2004-09-28 06:52) [29]


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

Об этом я и говорил в 20


 
KSergey ©   (2004-09-28 09:15) [30]

> _silver ©   (27.09.04 21:20)
> Мастера почти убедили меня в том, что возможно создать декомпилятор
> и я решил снова заняться этой проблемой.

Ну и славно! Фигли флудить, я одно не пойму? Или это есть по-твоему "заниматься"?
Какие начиг тесты нужны? Создай empty проект с формой (все по умолчанию) - вот тебе и тест. ЧТо еще надо-то, я не пойму? Где твой декомпилятор? Ты его сделай, сначала, потом тесты проси. А сейчас-то они на кой тебе сдались? ИЛи это будет только декомпилятор для этих тестов?

Ты ответь прямо на вопрос: будешь делать декомпилятор или просто пофлудишь и успокоишься??


 
_silver ©   (2004-09-28 09:41) [31]


> Ты ответь прямо на вопрос: будешь делать декомпилятор
> или просто пофлудишь и успокоишься??

Буду.


 
KSergey ©   (2004-09-28 09:42) [32]

Здорово
Тогда кончай флудить
Как сделаешь что=либо - приходи, хвастайся, тесты проси


 
КаПиБаРа ©   (2004-09-28 09:56) [33]

Советую для удобства разбора декомпилированных текстов встроить в программу всем хорошо известную автосхему. Такой хит побъет все рекорды продаж.

=============================================
Всякое разумное дело имеет своё завершение,
и только ерундой можно заниматься бесконечно.
=============================================


 
Игорь Шевченко ©   (2004-09-28 09:57) [34]

Я вот только не совсем понимаю, какие принципиальные проблемы ?
Открывается окно View|CPU, там под каждым оператором исходного тескта виден его машинный код, при некотором навыке можно попытаться восстановить функционально подобный оператор из этого кода, идентификаторы можно назначать произвольные, например id1, id2, и т.д.

hint: ряд стандартных функции в Delphi имеют код, машинное представление которого не зависит от позиции функции в EXEшнике, например, некоторые функции работы с длинными строками. Зная эти стандартные функции можно определить строковые переменные и т.д.

Неконсольное приложение обычно имеет код инициалиции объекта Application.


 
Сергей Суровцев ©   (2004-09-28 10:01) [35]

>_silver ©   (28.09.04 09:41) [31]
>Буду.

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


 
Сергей Суровцев ©   (2004-09-28 10:05) [36]

>Игорь Шевченко ©   (28.09.04 09:57) [34]
>Я вот только не совсем понимаю, какие принципиальные проблемы ?

Игорь, Вам шуточки, а у человека крышу снесет на пару лет. :))
Его голодные дети будут сниться Вам по ночам! :))


 
Игорь Шевченко ©   (2004-09-28 10:08) [37]

Сергей Суровцев ©   (28.09.04 10:05) [36]


> Игорь, Вам шуточки, а у человека крышу снесет на пару лет.
> :))


Я сказал что-то смешное или принципиально невозможное ?
Или ты в инете не видел примеры Сишных и VBшных декомпиляторов ? :)

С уважением,


 
_silver ©   (2004-09-28 10:10) [38]


> не даст тебе исходник

Я об этом и сам гоаорил, но начал сомневаться.

> Ответь - нафига?

Мне он нафиг не нужен, мне и с дизассемблерами живётся не плохо.
Но это интересная, не тривиальная задача и уж очень хочется попытаться.
Ктому же я говорил, что уже занимался этим и уже некоторые наработки есть.


 
Игорь Шевченко ©   (2004-09-28 10:11) [39]

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


 
DiamondShark ©   (2004-09-28 10:50) [40]


> Или ты в инете не видел примеры Сишных и VBшных декомпиляторов
> ? :)

Не скажу за сишные, но с вэбэшными ситуяйция немного другая. ВБ компилит в шитый код (хотя может и в native). Так вот, особо успешные ВБ декомпиляторы -- именно с шитого кода.


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

Ну, для взлома технологий достаточно и в ассемблер декомпилировать :)


 
КаПиБаРа ©   (2004-09-28 10:54) [41]

Игорь Шевченко ©   (28.09.04 10:11) [39]
нафига в лицензионных соглашениях пишут о запрете на декомпиляцию, если она так уж и невозможна


То что гаишники ограничивают скорость движения транспорта до 60 км/ч, не доказывает что можно превысить скорость света.

_silver ©   (28.09.04 10:10) [38]
Конструкции языка Delphi преобразовываются в определенные устойчивые кодовые последовательности, согласно правилам компиляции. Для проведения максимально эффективной декомпиляции с минимальным колличеством ассемблерных вставок необходимо знать все эти правила. Узнать эти правила можно несколькими способами. Из описания правил компиляции или исходных текстов компилятора, востановить из кода дезасемблирования (декомпеляции) копилятора или же воспользоваться самым неэффективным методом научного тыка предложенный Игорь Шевченко ©   (28.09.04 9:57) [34] - просмотром различных вариаций кода в окне CPU. В последнем случае создание декомпелятора может действительно растянуться на годы.
Вообщем желаю удачи на данном поприще.

====================================
Если тебе плюют в спину - ты впереди
Конфуций
====================================


 
Piter ©   (2004-09-28 10:54) [42]

Как же эта тема уже надоела...

Спор возникает только из-за того, что стороны по разному понимают декомпиляцию.

Если имеется в виду создать такой исходный код, который при компиляции создаcт бинарный файл идентичный декомпилируемому - то это возможно сделать. Но тут нужна работа программиста-профессионала или создание ИИ.
Собственно, даже декомпиляторов для ASM"а вроде нету. То есть, если декомпилированный исходник заново откомпилировать - то работать он не будет, человек должен подправлять код.

Если же говорить именно о точном восстановлении исходного кода, который был написан разработчиком - то это невозможно. С этим никто и не спорит.


 
Игорь Шевченко ©   (2004-09-28 11:04) [43]

DiamondShark ©   (28.09.04 10:50) [40]


> Ну, для взлома технологий достаточно и в ассемблер декомпилировать
> :)


Можно. Только очень долго :)


 
Anatoly Podgoretsky ©   (2004-09-28 11:54) [44]

Игорь Шевченко ©   (28.09.04 11:04) [43]
10 страниц на каждый килобайт кода, а размер как правило свыше 500 килобайт и что бы потом понять что там понаворотило потребуется гиганское время. За это время можно будет написать ОС или компилятор.


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

Anatoly Podgoretsky ©   (28.09.04 11:54) [44]


> За это время можно будет написать ОС или компилятор.


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

(с) Аркадий Бухов


 
Сергей Суровцев ©   (2004-09-28 12:52) [46]

>Игорь Шевченко ©   (28.09.04 10:08) [37]
>Я сказал что-то смешное или принципиально невозможное ?

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

>Или ты в инете не видел примеры Сишных и VBшных
>декомпиляторов ? :)

Я не видел примеров декомпилированной Windows. :))


 
Игорь Шевченко ©   (2004-09-28 13:11) [47]

Сергей Суровцев ©   (28.09.04 12:52) [46]


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


Эта задача не ставится обычно. Ставится задача понять, как реализована та или иная возможность.


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


Я когда-то говорил, что это сделать легко и просто ? Вовсе нет.


> Да и насчет нужности большие сомнения. Не могу представить
> ситуации - где есть в нем реальная необходимость.


"Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий." (с)


> Я не видел примеров декомпилированной Windows


Это коммерческая тайна :)

С уважением,


 
Карелин Артем ©   (2004-09-28 15:42) [48]

Кстати DeDe на дельфах написан и исходные коды у него открыты.


 
Игорь Шевченко ©   (2004-09-28 15:51) [49]

Карелин Артем ©   (28.09.04 15:42) [48]


> DeDe на дельфах написан и исходные коды у него открыты


Ссылочку ?


 
_silver ©   (2004-09-29 01:22) [50]

Игорь Шевченко ©   (28.09.04 15:51) [49]
yandex.ru
пойдёт??

2 all
Насчёт потраченного времени - а опыт и знания полученые в ходе этого?

Насчёт того что приводят примеры того, что это невозможно - я приводил более серьёзные примеры и не получил никакого доказательства обратного кроме пустых слов(вы издеваетесь?)


 
Чукча   (2004-09-29 09:51) [51]

Помнится, что когда-то Игорь говорил, что в свободное врямя он балуется как декомпилятором... Лет так уже надцать...

Зы. Только не нужно говорить мне, что ябедничать - пдохо...


 
Чукча   (2004-09-29 09:51) [52]

как -> как раз



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

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

Наверх





Память: 0.6 MB
Время: 0.037 c
1-1096551783
kukuikar
2004-09-30 17:43
2004.10.17
На каких программах можно проверить надежность своего механизма..


14-1095957670
SergP.
2004-09-23 20:41
2004.10.17
GPRS


1-1096889846
DelphiLexx
2004-10-04 15:37
2004.10.17
Для чего и как пользоваться оператором Inline


3-1095428871
Morrison
2004-09-17 17:47
2004.10.17
Как реализовать поле с суммой значений из другой таблицы?


3-1095328509
Medik
2004-09-16 13:55
2004.10.17
Добавление и удаление в Paradox





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