Другие языки программирования и технологии

Вот есть программы с открытым исходным кодом, а есть и без исходного...

В общем, исходный код, это когда известно как работает программа, но некоторые авторы программ делают его скрытым, но программы всё равно работают, но..? Как? То есть, если у тебя есть программа, разве не вариант достать её исходный код? Или что, он зашифрован? Объясните, интересно мне...
Т*
Тарас *
3 196
Ты пишешь программу на языке высокого уровня. Компилятор превращает её в эквивалентную программу на ассемблере, при этом оптимизируя получаемый код (так что полученный алгоритм может сильно отличаться от того, что написано в исходном тексте). Всё, что может сделать декомпилятор - это выдать тебе текст получившегося ассемблерного кода. И вместо тысяч строк на C++ ты получишь простыню из миллионов ассемблерных команд - без вменяемых названий переменных и функций. После чего тебе вручную придётся разбираться, что именно и как в этой программе делается.
ЕП
Евгений П
62 761
Лучший ответ
Тарас * А что такое ассемблер? Один из первых языков или язык виндовса?
Типа того, при компиляции код собирается в исполняемый файл и нормально получить его обратно обычно нельзя
Декомпиляция программы возможна далеко не всегда. Точнее, как правило не возможна.
Тарас * Собранный конструктор обратно по деталям не соберёшь?.. А разве нет программ, которые создают всякие..) Чтобы декомпилировать каким-либо образом, в своих целях? В Apple закрытый код, но я что-то слышал про прошивку? Что это?
Открытость или закрытость исходного кода никак не влияет на возможность понять, как работает программа.
Например, вы не сможете только по исходным кодам восстановить все функции Chromium. Более того, без инструкции и мощной машины вы его даже не соберёте, про отладку я вообще не говорю.

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