
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.86] |
![]() |
|
Сообщ.
#1
,
|
|
|
Кто-нибудь может мне объяснить такую вещь: я слышал много раз, что нельзя создать алгоритм дизассемблирования машинного кода в, например, паскаль, потому что при компиляции теряется информация. Меня интересует, какая это именно информация теряется, ведь должно быть однозначное соответствие между кодом на ЯВУ и машинным кодом, или я не прав?
|
Сообщ.
#2
,
|
|
|
Скажем, имена функций и переменных...
|
Сообщ.
#3
,
|
|
|
Цитата Shiru_Otaku, 19.08.03, 02:43:52 Скажем, имена функций и переменных... ну, это, наверное, не существенно и не очень важно, так как их можно назвать как угодно. |
Сообщ.
#4
,
|
|
|
После оптимизации ассемблерного кода, которую выполнит компилятор в процессе компиляции, простое и очевидное взаимное соответствие между операторами ЯВУ и машинным кодом построить уже довольно сложно.
Причем, проблемы тут две: 1. ЧЕЛОВЕКУ, пишущему такой декомпилятор, ЧРЕЗВЫЧАЙНО трудно обратить В СВОЕЙ ГОЛОВЕ то преобразование, которое выполняет компилятор над исходным кодом. Т.е. ПРИДУМАТЬ АЛГОРИТМ декомпилятора сложно, тем более, что он будет существенно отличаться для каждого конкретного компилятора -- оптимизируют-то все по-разному... Есть, конечно, всякие обходные пути, эвристики там, перебор с возвратами, но сильного облегчения вы от етого не почувствуете ![]() 2. Вот ета НЕОДНОЗНАЧНОСТЬ, вызванная ПОТЕРЕЙ информации при компиляции, может, в худшем случае, привести и вот к такому коду ![]() |
![]() |
Сообщ.
#5
,
|
|
Ты знаешь... если брать Турбо Паскаль, то там оптимизации вообще почти нет, т.е. встречаются даже такие глупые конструкции, как...
![]() ![]() mov [bp+4],ax<br>mov ax,[bp+4] Здесь теоретически можно написать диз-паскалер ![]() |
Сообщ.
#6
,
|
|
|
Цитата Dmitriy SF, 19.08.03, 00:10:09 Кто-. ведь должно быть однозначное соответствие между кодом на ЯВУ и машинным кодом, или я не прав? нет такого соответствия нет |