
Я пытаюсь изучить различные приложения на моем Macbook и увидеть их исходный код, чтобы лучше понять, как создаются определенные приложения и какие языки/фреймворки они используют. Возможно, часть моего замешательства происходит от того, что у меня недостаточно глубокое понимание инфраструктуры приложений.
Однако я взял несколько приложений на своем компьютере, зашел в их содержимое и просмотрел все каталоги, которые смог, но не могу найти никакого фактического исходного кода. Все, что я нашел, это файлы CodeSigniture, файлы CodeResource и какой-то код, например, файлы .plist. Как мне найти файлы .js/.py/.c/.cpp?
Мне интересно, шифруют ли они каким-то образом эти файлы для поддержания безопасности/интеллектуальной собственности. Но если это так, что читает мой компьютер, чтобы выполнить эти приложения?
Любая информация будет высоко оценена!
решение1
Программы могут быть интерпретированы (исходный код анализируется и преобразуется в системные инструкции «на лету» каждый раз, когда инструкция необходима) или скомпилированы (исходный код анализируется и преобразуется в системные инструкции ОДИН РАЗ, а системные инструкции сохраняются для последующего использования и повторного использования). Если приложение написано на языке, который обычно компилируется — C, C++, C#, Pascal и т. д. — вы не увидите исходный код; его не нужно устанавливать на ваш компьютер для запуска программы, только системные инструкции (это то, что называется EXE-файлом в Windows).
Другие языки, такие как ECMAscript, PowerShell, Perl, Python, Ruby и т. д., являются интерпретируемыми, и для них исходный код обычно можно найти, просмотрев установленные файлы.
Имейте в виду, что некоторые реализации некоторых интерпретируемых языков также допускают «обертки», в которых исходный код преобразуется в «закодированную» форму (например, Base64) и добавляется к настроенному интерпретатору, так что онвыглядитдля пользователя как скомпилированная программа (т.е. EXE в Windows). Если ваше приложение было создано с помощью одного из них, вы не сможете легко найти исходный код.
решение2
Внутри приложения нет исходного кода.
Они естьскомпилированоиз исходного кода в фактический исполняемый файл - если вы посмотрите внутри TheApplication.app/Contents/MacOS/TheApplication - то это само скомпилированное приложение. Почти все остальное, что вы там видите, это либо библиотека, от которой зависит приложение, либо простой текстовый файл xml для управления такими вещами, как изменение языка и т. д.
Также обратите внимание, что если вы вмешаетесь в приложение от признанного разработчика, из App Store и т. д., вы можете пометить его как больше не соответствующее его кодовой подписи, и вам придется удалить его и заново загрузить оригинал. macOS становится все более и более строгой в отношении подделки приложений.
Catalina будет еще более строгой в этом отношении и потребует не только подписи кода, но иНотариальное заверение, что делает модификацию приложения третьими лицами практически невозможной.
решение3
Если вы хотите выполнить обратную разработку двоичного/исполняемого файла, то у вас есть возможность использоватьГидра. На YouTube есть несколько руководств от независимых разработчиков, которые также помогут вам начать работу (Я нашел это доступным).
Как упоминалось в других ответах, компилируемые языки (например, *.cpp
, *.c
, *.java
) не будут иметь файлы в доступном виде, поэтому вам придется немного покопаться.