Помощь - Поиск - Пользователи - Календарь
Полная версия: Декомпиляция
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Amro
У меня возник вопрос!!! Можно ли каким то образом декомпилировать exe-зешний файл, скомпилированный на паскале??? Если да, то как???
GoodWind
сомневаюсь....
дизасемблировать можно, но декомпилировать.... unsure.gif
MeD
В пaкете Turbo Analyst 7.0 есть програма котоpaя может восстaновить
интеpфейсную чaсть скомпилиpовaнного модуля. Подобной инфы в нэте полно.
GoodWind
Цитата
интеpфейсную

а смысл нам от итнрфейсной ?
весь код давай ! lol.gif
Amro
Я так понял, восстановить исходный код невозможно полностью, ну а хотя бы частично?
Altair
Amro, не слушай их, код востановить нельзя!
(Я имею ввиду код на паскале)
только на асм можно. Но это не нужно.
Amro
Oleg_Z Спасибо!!!
GoodWind
OLeg_Z, а я вот видел прогу на пасе, которая выводит свой код, это как объяснить ?
прога была опубликована в одном из номеров Harm`a (был когда-то такой e-mag)
Altair
Так она протсо текст выводит!
Ну не возможно преобразовать АСМ в язык высшего уровня.
Пардон, высокого.
В высшей тем более.
virt
Oleg_Z
ну вообщето возможно ,только не факт что полученное нечто будет соответствовать исходнику.
Это как дифференцирование и интегрирование : при интегрировании ты получаешь не конкретную функцию а целый класс.
Altair
Согласен, но иногда вообще невозможно... зависит от кода, если там огромное количество безусловных переходов, то востановить проргамму можно огромным количеством способов, и все будут разными, и то, востановить можно только теоритически!
GoodWind
Цитата
Так она протсо текст выводит!

найду Харм (или сам поищи) дам почитать

--
смотри в одном из номеров тут:
в одном из первых трех, по-моему

http://scene.ru/harm/index.html
APAL
К слову:
На нашем форуме уже была прога, которая сама себя распечатывала...
Ozzя
Цитата(Amro @ 14.10.04 23:05)
Можно ли каким то образом декомпилировать exe-зешний файл, скомпилированный на паскале???

Да, если прии компиляции был включен режим
Options -> Debugger -> Standalone debugging
Другое дело, что этого никто обычно не делает smile.gif
Altair
А можно подробнее про этот режим?
Amro
Ozzя
Да очень бы хотелось узнать, как и чего??
GoodWind
ежели мне не изменяет память (что бывает часто), то SofIce и подобные отладчики и пользуются Debug information, генерируемой Debug Mode
P@sh@
GoodWind
с каких это пор "SoftIce и другие отладчики" стали декомпилировать асм в паскаль? по отладочной информации можно восстановить только названия переменных, блоков программы (функций/процедур), меток и т.д. но не последовательность высокоуровневых команд!!! тем более после оптимизации их компилятором...

а теоретический принцип декомпиляции такой:
если например в проге стоит строчка
Код
a:=0;

а ее ассемблерный аналог выглядит например так
Код
lea  di,a
mov  [di],0

то надо каждый такой ассемблерный блок заменять выше приведенной строчкой...
но на деле компилятор вполне может сделать такой код:
Код
xor  ax,ax
mov  [ebp+8],ax

... понятно, о чем речь?
GoodWind
Цитата
с каких это пор "SoftIce и другие отладчики" стали декомпилировать асм в паскаль?

речь шла о Debug а не о Disasm...

Цитата
восстановить только названия переменных, блоков программы (функций/процедур), меток и т.д.


как-раз при помощи них, помоему, SIce и ловит breakpoint`ы...

Цитата
но не последовательность высокоуровневых команд!!!

ясен перец...
Altair
lol.gif
даже после оптимизации обычного кода на паскале, востановить его первоначальный вариант невозможно, что уж говорить о переводе на асм и еще оптимизации его smile.gif)
Ozzя
Цитата(Amro @ 19.10.04 9:55)
Ozzя
Да очень бы хотелось узнать, как и чего??

Если вы при компиляции устанавливаете этот режим, то при отладке в tdx появляется исходник программы на паскале. Правда, почти все программы и модули откомпилированы без этого. Граф, например, а жаль ;)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.