
Estoy tratando de buscar diferentes aplicaciones en mi Macbook y ver su código fuente para comprender mejor cómo se crean ciertas aplicaciones y qué lenguajes/marcos utilizan. Quizás parte de mi confusión se deba a que no tengo un conocimiento suficientemente profundo de la infraestructura de aplicaciones.
Sin embargo, tomé varias aplicaciones en mi computadora, introduje un CD en su contenido y revisé todos los directorios que pude, pero parece que no puedo encontrar ningún código fuente real. Todo lo que encuentro son archivos CodeSigniture, archivos CodeResource y algún código como archivos .plist. ¿Cómo encuentro los archivos .js/.py/.c/.cpp?
Me pregunto si de alguna manera cifran estos archivos para mantener la seguridad/propiedad intelectual. Pero si ese es el caso, ¿qué lee mi computadora para ejecutar estas aplicaciones?
¡Cualquier idea es muy apreciada!
Respuesta1
Los programas pueden interpretarse (el código fuente se analiza y convierte en instrucciones a nivel de sistema "sobre la marcha" cada vez que se necesita la instrucción) o compilarse (el código fuente se analiza y convierte en instrucciones a nivel de sistema UNA VEZ, y el sistema instrucciones de nivel almacenadas para su uso y reutilización posteriores). Si una aplicación está escrita en un lenguaje que normalmente se compila (C, C++, C#, Pascal, etc.) no podrá ver el código fuente; No es necesario instalarlo en su computadora para que se ejecute el programa, solo las instrucciones a nivel del sistema (esto es lo que se llama un archivo EXE en Windows).
Se interpretan otros lenguajes, como ECMAscript, PowerShell, Perl, Python, Ruby, etc., y para ellos, generalmente puede encontrar el código fuente mirando los archivos instalados.
Tenga en cuenta que algunas implementaciones de algunos lenguajes interpretados también permiten "envoltorios" donde el código fuente se convierte en un formato "codificado" (por ejemplo, Base64) y se agrega a un intérprete personalizado, de modo queaspectoal usuario como un programa compilado (es decir, un EXE en Windows). Si su aplicación se realizó con uno de estos, no podrá encontrar la fuente fácilmente.
Respuesta2
No hay código fuente dentro de una aplicación.
Ellos soncompiladodel código fuente a un archivo ejecutable real, si miras dentro de TheApplication.app/Contents/MacOS/TheApplication, es la aplicación compilada en sí. Prácticamente todo lo demás que ves allí es una biblioteca de la que depende la aplicación o un simple archivo xml de texto sin formato para controlar cosas como cambios de idioma, etc.
También tenga en cuenta que si se mete con una aplicación de un desarrollador reconocido, de la App Store, etc., es posible que la marque como que ya no coincide con su firma de código y tendrá que tirarla a la basura y volver a descargar el original nuevamente. macOS se está volviendo cada vez más estricto con respecto a la manipulación de aplicaciones.
Catalina será aún más estricta en esto y requerirá no solo la firma del código, sino tambiénNotarizar, lo que hace que la modificación de la aplicación por parte de terceros sea casi imposible.
Respuesta3
Si desea aplicar ingeniería inversa a un archivo binario/ejecutable, entonces tiene la opción de usarGhidra. Hay algunos tutoriales de desarrolladores independientes en YouTube que también te ayudarán a empezar (Encontré este accesible).
Como se mencionó en las otras respuestas, los lenguajes compilados (por ejemplo, *.cpp
, *.c
, *.java
) no tendrán los archivos claramente disponibles, por lo que deberá investigar un poco.