elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda acerca de la programación y GitHub
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda acerca de la programación y GitHub  (Leído 3,821 veces)
RevolucionVegana


Desconectado Desconectado

Mensajes: 477



Ver Perfil
Duda acerca de la programación y GitHub
« en: 4 Diciembre 2016, 11:44 am »

Hola a todos quería preguntaros algo y es que como bien sabréis algunos últimamente estoy aprendiendo C++ y haciendo algunas cosillas básicas el caso es que llevo un tiempo mirando GitHub y no logro comprender eso de que haya tantas carpetas y todo eso, ya se que es para que todo esté organizado y que directamente cuando quieran modificar algo sepan donde está rápidamente pero cual es el programa es decir, el núcleo desde donde parte todo, es que es super raro normalmente yo que estoy acostumbrado a los programitas que hago que solo utilicen un solo fichero pues esto se me hace raro verlo, si yo por ejemplo quisiera ver el código de Metasploit en GitHub cual sería el fichero inicial es decir cual sería el núcleo de todo o no tiene por que haber núcleo?

Aclaro que esto no es una duda de C++ es una duda de cualquier lenguaje de programación y la organización en proyectos grandes donde mucha gente participa, gracias y un saludo amigos!

https://github.com/rapid7/metasploit-framework


En línea

HAS DICHO ALGO NENAAAAAA?!
Orubatosu


Desconectado Desconectado

Mensajes: 2.515


Ver Perfil WWW
Re: Duda acerca de la programación y GitHub
« Respuesta #1 en: 4 Diciembre 2016, 13:10 pm »

No se exactamente como anda GitHub, pero ten en cuenta que C++ no es un "C con vitaminas" únicamente.

C++ integra completamente lo que es la programación orientada al objeto. Un paradigma muy diferente al de la programación "tradicional" que como en el C normal se conoce a veces como imperativa (también procedural y estructurado claro). En estos lenguajes tu dices que quieres hacer, y lo descompones en librerias, rutinas, etc...

En la POO que integra C++ aparecen otros conceptos, como puede ser el de "Evento" asociado a un objeto, además la modularidad es un concepto también de la POO lo que permite descomponer los programas "muy grandes" en varios separados. Esto tiene sus ventajas y desventajas claro está

El concepto de "modular" se basa en cierto modo a lo que se llama en programación tradicional "funciones" o algo por el estilo. En POO existen las "clases" que son "objetos", que son por así decirlo como un modulo o "caja negra" donde tu no necesitas saber a priori que ocurre ahi dentro. Sabes que ese objeto hace algo, que tiene unas propiedades y que le das datos y obtienes resultados. El como y porque no es asunto tuyo, de hecho toda la POO está pensada para que los objetos sean en caso necesario bloques "opacos" donde tu no puedes modificar de modo alguno sus variables internas .

Esto permite que diferentes personas trabajen de forma sencilla en un proyecto, ya que los módulos diferentes interactuan entre si, pero de un modo mucho mas controlado.

Lo cierto es que la POO es un poco "compleja" en este sentido, y se ha pensado con una serie de permisos y jerarquías para impedir que se acceda sin control alguno al contenido de diferentes clases.

Así pues, supongamos que hay varias personas trabajando en un gran programa de gestión de empresas. Tu puedes acceder por ejemplo a los datos de los empleados, pero como lo haces porque estás haciendo un modulo para calcular (por ejemplo) los impuestos, no hay forma de que modifiques los datos de los empleados. Tienes acceso a unos datos pero no puedes modificar esa parte del programa. Los diferentes modulos se  diseñan para que haya comunicación, pero solo la permitida en cada momento.

En la programación tradicional nada te impide desde cualquier parte del programa "meter mano" a las variables de la otra punta del programa (por ejemplo). Aquí existe una serie de permisos y una jerarquía que te lo impide

No se si te he aclarado algo, o te he liado mas.


En línea

"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998
RevolucionVegana


Desconectado Desconectado

Mensajes: 477



Ver Perfil
Re: Duda acerca de la programación y GitHub
« Respuesta #2 en: 4 Diciembre 2016, 13:23 pm »

Hola Orubatosu muchas gracias por responder esa parte ya la entendía pero la que no entiendo es que por ejemplo cojo entro aquí:

https://github.com/rapid7/metasploit-framework

Como puedo ver el primer archivo que programaron para ir enlazando todo y ver como se estructura viendo las librerías que importa y en que momento utiliza las funciones y todo eso, no se si me explico

Saludos
En línea

HAS DICHO ALGO NENAAAAAA?!
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Duda acerca de la programación y GitHub
« Respuesta #3 en: 4 Diciembre 2016, 16:45 pm »

No utilicé ni Metasploit ni suelo programar Ruby, así que te pongo otro ejemplo: SFML

https://github.com/SFML/SFML

SFML no es un programa, es una librería. Una librería no tiene un "main", sino que tiene un funciones y clases.
En el caso de SFML, si por ejemplo quisieras hacer una ventana gráfica, incluirías el header "SFML/Graphics.hpp", para así utilizar la clase "sf::RenderWindow".
El header Graphics.hpp es este: https://github.com/SFML/SFML/blob/master/include/SFML/Graphics.hpp
Como ves, solo tiene includes. También podrías directamente incluir "SFML/Graphics/RenderWindow.hpp".

A donde quiero llegar, es que utilizas lo que necesites (y si utilizas un header, puede estar a su vez incluyendo muchos más headers), pero no hay main.

metasploit-framework es una librería? Siendo así, no sería muy diferente (salvando las diferencias que tenga Ruby). Si es un programa, pues todo sería encontrar el punto de inicio (cada lenguaje tiene su "convención", y no conozco Ruby).
Aquí seguro que encuentras el main xD: https://github.com/ivancea/RogueLikeGame
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Duda acerca de la programación y GitHub
« Respuesta #4 en: 4 Diciembre 2016, 16:51 pm »

Hola Orubatosu muchas gracias por responder esa parte ya la entendía pero la que no entiendo es que por ejemplo cojo entro aquí:

https://github.com/rapid7/metasploit-framework

Como puedo ver el primer archivo que programaron para ir enlazando todo y ver como se estructura viendo las librerías que importa y en que momento utiliza las funciones y todo eso, no se si me explico

Saludos
Eso está hecho en Ruby, lo que quiere decir que antes como mínimo deberías tener conocimiento medio de ese lenguaje. Hoy en día hay muchas herramientas para la automatización del despliege de las aplicaciones (proceso requerido para que éstas empiecen a funcionar), normalmente cada lenguaje tiene un conjunto de herramientas que te permiten hacerlo. Esas herramientas suelen tener archivos de configuración que te permiten ver cómo está estructurado ese proceso, algo que te puede aclarar mucho las cosas sobre dónde está el punto de entrada de las mismas.

De todas maneras lo que pides es complicado si no hay documentación de por medio o si el software es muy grande, en ese proyecto han contribuido 400 personas, como supongo que intuirás, habrá gente que no tiene ni idea de cómo está hecha otra parte de la aplicación. Si en el desarrollo de aplicaciones cada programador tuviera que saber cómo está implementado cualquier otro módulo, el desarrollo de software no sería factible, ni en tiempo, ni en coste. De hecho lo tuyo es aún más complicado, estás intentando entender la arquitectura de un software realizándole Ingeniería Inversa al código.

En C++ lo que más se usa son las https://es.wikipedia.org/wiki/GNU_build_system . Y por todo esto que te cuento es tan importante la Ingeniería del Software hoy día, poner de acuerdo a tantísima gente no es fácil.

No es por desanimarte, pero digo que para entender un software al completo te debes dedicar por completo a estudiarlo, y si no tienes a nadie que te introduzca en el tema y no hay documentación, puedes morir en el intento.

Además para cada lenguaje de programación, o ellos mismos u otras empresas establecen guías de estilo, que pueden ir desde convenciones para el nombrado de variables, métodos y clases hasta los nombres y la organización de las carpetas.

EDIT: De hecho se usan patrones de diseño de software, patrones para la arquitectura como el MVC (Modelo Vista Controlador) que está por todos lados. Aunque parezca que no, te aseguro que si metes a 20 personas en una habitación a trabajar conjuntamente en un software, únicamente picando código cada uno por su lado seguramente habrá un 99% de probabilidades de que la aplicación falle en su despliege.

Saludos.
« Última modificación: 4 Diciembre 2016, 17:04 pm por avesudra » En línea

Regístrate en
RevolucionVegana


Desconectado Desconectado

Mensajes: 477



Ver Perfil
Re: Duda acerca de la programación y GitHub
« Respuesta #5 en: 4 Diciembre 2016, 17:04 pm »

Hola muchas gracias por responder Ivan eso es un juego en Java que estás haciendo verdad?

Este este el núcleo por así decirlo? https://github.com/ivancea/RogueLikeGame/blob/master/RogueLikeGame/src/es/hol/ivancea/RogueLikeGame.java

Y a ver yo no quiero estudiar al 100% metasploit simplemente he puesto ese ejemplo podría haber puesto cualquier otro pero es más que nada para saber donde se ubica normalmente el corazón del programa, y otra pregunta espero no ser muy pesado, yo ahora mismo mis programas en C++ llego y le pongo esto en la terminal para compilarlos:

Código:
g++ programa.cpp -o programa

Funciona de maravilla pero ahora me pregunto yo, y si en vez de un fichero (programa.cpp) fuesen muchos ficheros separados y en diferentes carpetas y todo eso como los compilo todos juntos para que funcione bien? O esto no es así? Muchas gracias a todos!!!! Aunque ahora pensándolo bien Metasploit no ha sido para nada el mejor ejemplo que podía haber puesto ya que según tengo entendido Ruby es un lenguaje interpretado no compilado,

Saludos!!
En línea

HAS DICHO ALGO NENAAAAAA?!
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Duda acerca de la programación y GitHub
« Respuesta #6 en: 4 Diciembre 2016, 17:07 pm »

Hola muchas gracias por responder Ivan eso es un juego en Java que estás haciendo verdad?

Este este el núcleo por así decirlo? https://github.com/ivancea/RogueLikeGame/blob/master/RogueLikeGame/src/es/hol/ivancea/RogueLikeGame.java

Y a ver yo no quiero estudiar al 100% metasploit simplemente he puesto ese ejemplo podría haber puesto cualquier otro pero es más que nada para saber donde se ubica normalmente el corazón del programa, y otra pregunta espero no ser muy pesado, yo ahora mismo mis programas en C++ llego y le pongo esto en la terminal para compilarlos:

Código:
g++ programa.cpp -o programa

Funciona de maravilla pero ahora me pregunto yo, y si en vez de un fichero (programa.cpp) fuesen muchos ficheros separados y en diferentes carpetas y todo eso como los compilo todos juntos para que funcione bien? O esto no es así? Muchas gracias a todos!!!! Aunque ahora pensándolo bien Metasploit no ha sido para nada el mejor ejemplo que podía haber puesto ya que según tengo entendido Ruby es un lenguaje interpretado no compilado,

Saludos!!

Para eso tienes un precioso fichero Makefile en la mayoría de los proyectos de C++.

De hecho si en la carpeta donde tienes el fichero "programa.cpp" creas el fichero "Makefile":

Código:
#Makefile prueba
all: prueba.o
g++ prueba.o -o prueba

prueba.o: prueba.cpp

Y luego abres una terminal y haces:
Código:
make

Seguramente te compilará el programa( si yo no me he equivocado escribiéndolo claro).

¿Y cómo sé manejar esa sintaxis? Pues léete el manual de make.

Pero vamos básicamente es:

Código:
regla1: dependencias
      cosa que hacer cuando se ejecuta la regla1

regla2: dependencias
      cosa que hacer cuando se ejecuta la regla2

Para ejecutar la regla1 puedes hacer:

Código:
make regla1

O simplemente make, pues si no pones nada, pilla la primera regla que haya en el fichero Makefile.

Para ejecutar la regla2 forzosamente tienes que poner:

Código:
make regla2
« Última modificación: 4 Diciembre 2016, 17:15 pm por avesudra » En línea

Regístrate en
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Duda acerca de la programación y GitHub
« Respuesta #7 en: 4 Diciembre 2016, 23:00 pm »

Como dice avesudra se suelen usar los makefile para compilar los archivos, pero en proyectos grandes hay makefiles que llaman a otros makefiles que son los encargados de realizar el trabajo. Puede llegar a ser tan complicado un makefile (es una ironía bastante buena ya que los makefiles sirven para simplificar el compilado) que existen generadores de archivos makefiles, como automake.

Como ves la cosa se puede llegar a complicar bastante. Empieza con compilando un archivo con multiples cabeceras y fuentes. Cuándo sepas manejar el compilador pásate a make. A partir de aquí ve aumentando la complejidad a medida que lo necesites.
En línea

RevolucionVegana


Desconectado Desconectado

Mensajes: 477



Ver Perfil
Re: Duda acerca de la programación y GitHub
« Respuesta #8 en: 5 Diciembre 2016, 11:54 am »

Muchísimas gracias a todos por la información sobre todo eso del make gracias !!
En línea

HAS DICHO ALGO NENAAAAAA?!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Una duda acerca de los Boletines
Sugerencias y dudas sobre el Foro
Z0mbie 9 4,784 Último mensaje 28 Enero 2004, 16:10 pm
por BADBYTE-K
Duda acerca de DLL
Programación Visual Basic
Krnl64 1 1,741 Último mensaje 30 Mayo 2006, 07:43 am
por byebye
Duda acerca de POO
PHP
Shell Root 3 2,584 Último mensaje 19 Septiembre 2011, 06:25 am
por Nakp
Burlar la UAC usando métodos conocidos proyecto github hfiref0x duda
Análisis y Diseño de Malware
Borito30 0 3,014 Último mensaje 29 Enero 2017, 19:35 pm
por Borito30
Una pregunta acerca de GitHub y un proyecto
Foro Libre
RevolucionVegana 2 1,605 Último mensaje 7 Marzo 2017, 12:53 pm
por RevolucionVegana
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines