|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.04.2011, 21:50 | #1 |
Пользователь
Регистрация: 31.10.2010
Сообщений: 31
|
Декомпиляция при изучении программирования
Здравствуйте.
Я учусь программировать. Хотел бы спросить, имеет ли смысл, для лучшего понимания процесса, декомпилировать программы с которыми уже давно работал? Если знаешь, как программа должна выглядеть в готовом виде, можно попытаться разобраться в исходнике, понять, что потребовалось сделать, чтобы программа выглядела именно так... И как вообще можно узнать на каком языке написанна программа (я имею ввиду те случаи, когда к программе не прилагается документация и/или исходный код)? |
05.04.2011, 22:05 | #2 |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
Есть ряд признаков(бинарных) того что программа была откомпилрована тем или иным компилятором, но код декомпилированный и исходный код могут сильно различаться, вплоть до 5%-ного сходства, так как по сути программа и ее исходник это как две точки в горном массиве - можно дойти тысячей разных способов.
Смысла, думаю, особого нет, вот исходники других программ есть смысл смотреть. Там можно подметить для себя новое инженерное решение или возможную фичу для своего приложения итд.итп.
"Тяжело в учении, легко в бою" - А.В. Суворов
|
07.04.2011, 00:14 | #3 | |
Пользователь
Регистрация: 31.10.2010
Сообщений: 31
|
Спасибо за ответ.
Цитата:
Насколько я понял, из данной фразы, все программы декомпилируются в ассемблер, а там по структуре кода можно определить, чем это было ранее (я прав?). Означает ли это, что программа декомпилированная и снова скомпилированная из полученного кода могут обладать разными свойствами (появление новых ошибок, разница во времени выполнения и т.д.)? |
|
07.04.2011, 01:02 | #4 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
в общем то да, можно. + часто компилятор сам оставляет свои метки. Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
07.04.2011, 04:46 | #5 | ||
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
Сами программы после компиляции транслируются в машинный код, понятный процессору. Если точнее выглядит он приблизительно как <Номер_инструкции><аргументы>. Это код можно считать в той или иной форме, скажем в виде десятичных цифр или шестнадцатеричных цифр, или же его можно дизассемблировать, транслировав все номера команд и их операнды, в ассемблерные мнемоники, реже есть возможность декомпилировать в нечто компилируемое, чаще всего декомпиляция дает очень сумбурный код, который может еще и оказаться некомпилируемым.
Кроме того если программа защищена, она скорее всего имеет некую защиту от декомпиляции/дизассемблирования, выражается это в виде неких довойных инструкций или сумбурного расположения данных, которое часто приводит к некорректному дизассемблированию. Цитата:
Цитата:
"Тяжело в учении, легко в бою" - А.В. Суворов
Последний раз редактировалось Ivan_32; 07.04.2011 в 04:52. |
||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
компиляция и декомпиляция | Greynvi4 | Общие вопросы C/C++ | 4 | 31.08.2009 20:02 |
Помогите в изучении!! | Mixaill | Общие вопросы C/C++ | 14 | 22.05.2009 19:49 |
Помогите в изучении БД Access | -HunteR- | БД в Delphi | 25 | 07.04.2009 02:03 |
Помощь в изучении C++ | antoha.by | Помощь студентам | 4 | 30.01.2009 17:24 |
Декомпиляция | benjaminfran | Помощь студентам | 5 | 15.02.2008 11:43 |