
Estou tentando examinar diferentes aplicativos no meu Macbook e ver seu código-fonte para entender melhor como determinados aplicativos são criados e quais linguagens/estruturas eles usam. Talvez parte da minha confusão venha de não ter um conhecimento profundo o suficiente da infraestrutura de aplicativos.
No entanto, peguei vários aplicativos no meu computador, gravei seu conteúdo e procurei em todos os diretórios que consegui, mas não consigo encontrar nenhum código-fonte real. Tudo o que encontro são arquivos CodeSigniture, arquivos CodeResource e alguns códigos como arquivos .plist. Como encontro os arquivos .js/.py/.c/.cpp?
Estou me perguntando se eles de alguma forma criptografam esses arquivos para manter a segurança/propriedade intelectual. Mas se for esse o caso, o que meu computador está lendo para executar esses aplicativos?
Qualquer visão é muito apreciada!
Responder1
Os programas podem ser interpretados (o código-fonte é analisado e convertido em instruções de nível de sistema "on the fly" cada vez que a instrução é necessária) ou compilados (o código-fonte é analisado e convertido em instruções de nível de sistema UMA VEZ, e o sistema- instruções de nível armazenadas para uso e reutilização posteriores). Se uma aplicação for escrita em uma linguagem normalmente compilada - C, C++, C#, Pascal, etc. - você não conseguirá ver o código fonte; ele não precisa ser instalado no seu computador para que o programa seja executado, apenas as instruções no nível do sistema (isso é chamado de arquivo EXE no Windows).
Outras linguagens, como ECMAscript, PowerShell, Perl, Python, Ruby, etc., são interpretadas e, para elas, geralmente você pode encontrar o código-fonte observando os arquivos instalados.
Esteja ciente de que algumas implementações de algumas linguagens interpretadas também permitem "wrappers" onde o código-fonte é convertido em um formato 'codificado' (por exemplo, Base64) e anexado a um interpretador personalizado, de modo quevisualpara o usuário como um programa compilado (ou seja, um EXE no Windows). Se sua aplicação foi feita com um desses, você não conseguirá encontrar a fonte facilmente.
Responder2
Não há código-fonte dentro de um aplicativo.
Eles sãocompiladodo código-fonte para um arquivo executável real - se você olhar dentro de TheApplication.app/Contents/MacOS/TheApplication - é o próprio aplicativo compilado. Praticamente tudo o que você vê lá é uma biblioteca da qual o aplicativo depende ou um arquivo xml de texto simples para controlar coisas como alterações de idioma, etc.
Observe também que se você mexer com um aplicativo de um desenvolvedor reconhecido, da App Store etc., poderá sinalizá-lo como não correspondendo mais à assinatura do código e precisará descartá-lo e baixar novamente o original. O macOS está se tornando cada vez mais rígido quanto à adulteração de aplicativos.
Catalina será ainda mais rigorosa nisso e exigirá não apenas assinatura de código, mas tambémNotarização, tornando quase impossível a modificação do aplicativo por terceiros.
Responder3
Se você deseja fazer engenharia reversa de um arquivo binário/executável, você tem a opção de usarGhidra. Existem alguns tutoriais de desenvolvedores independentes no YouTube para ajudá-lo também a começar (Achei este acessível).
Conforme mencionado nas outras respostas, linguagens compiladas (por exemplo, *.cpp
, *.c
, *.java
) não terão os arquivos disponíveis de forma organizada, então você fará algumas pesquisas.