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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Programa en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Programa en C  (Leído 2,485 veces)
XKC

Desconectado Desconectado

Mensajes: 128



Ver Perfil
Programa en C
« en: 2 Enero 2016, 20:06 pm »

Hola buenas y gracias a todos por vuestro tiempo. Bien tengo una duda y es que programo en C desde ubuntu compilando con gcc, si quisiera hacer un programa que funcionara en windows que tendría que hacer?.Es que he oído por ahí que al crear un ejecutable debe funcionar en todos los equipos, pero a mi no me pasa. Como hacer un programa que funciones en diferentes equipos? Gracias.

Enviado desde mi Orange Hi 4G mediante Tapatalk


En línea

Para poder atacar y vencer con seguridad, ataca donde ellos no puedan defenderse.
Para defenderte y resistir firme, defiéndete en donde ellos no atacarán.
mester

Desconectado Desconectado

Mensajes: 219


https://www.youtube.com/watch?v=IlY9C6pzxKc


Ver Perfil WWW
Re: Programa en C
« Respuesta #1 en: 2 Enero 2016, 20:12 pm »

Hola buenas y gracias a todos por vuestro tiempo. Bien tengo una duda y es que programo en C desde ubuntu compilando con gcc, si quisiera hacer un programa que funcionara en windows que tendría que hacer?.Es que he oído por ahí que al crear un ejecutable debe funcionar en todos los equipos, pero a mi no me pasa. Como hacer un programa que funciones en diferentes equipos? Gracias.

Enviado desde mi Orange Hi 4G mediante Tapatalk

http://stackoverflow.com/questions/1714245/difference-between-if-definedwin32-and-ifdefwin32
http://stackoverflow.com/questions/662084/whats-the-difference-between-the-win32-and-win32-defines-in-c
Un ejemplo de uso:
Código
  1. #if defined (__unix__)
  2.  #include <sys/time.h>
  3.  #include <sys/stat.h>
  4.  #include <sys/types.h>
  5.  #include <unistd.h>
  6. #elif defined (_WIN32)
  7.  #include <winsock2.h>
  8.  #include <conio.h>
  9.  #include <windows.h>
  10.  #include <winuser.h>
  11.  #include <winbase.h>
  12. #endif

No puedes hacer un ejecutable único a no ser que hablemos de java o lenguajes interpretados como Python, Perl, etc...
En el caso de C debes especificarle al compilador las opciones que tienes. En este ejemplo si compilas en Linux, GCC te compilará las librerías:
  #include <sys/time.h>
  #include <sys/stat.h>
  #include <sys/types.h>
  #include <unistd.h>
En el caso de que compiles en Windows, GCC compilará:
  #include <winsock2.h>
  #include <conio.h>
  #include <windows.h>
  #include <winuser.h>
  #include <winbase.h>
E ignorará las de Unix.

Como te he dicho, no puedes hacer un ejecutable único, pero sí que puedes hacer un programa que se pueda compilar en los dos sistemas sin fallos. Un buen ejemplo es el código de Netcat.


En línea

Justicia es dar a cada uno lo que se merece
XKC

Desconectado Desconectado

Mensajes: 128



Ver Perfil
Re:
« Respuesta #2 en: 2 Enero 2016, 20:20 pm »

Ostras muchisimas gracias, ahora lo entiendo..jejjej.
Es que lo del ejecutable lo lei en un tema de python y me lio. Los lenguajes interpretados son ejecutables en cualquier SO?

Enviado desde mi Orange Hi 4G mediante Tapatalk
En línea

Para poder atacar y vencer con seguridad, ataca donde ellos no puedan defenderse.
Para defenderte y resistir firme, defiéndete en donde ellos no atacarán.
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Programa en C
« Respuesta #3 en: 2 Enero 2016, 21:24 pm »

Los lenguajes interpretados pasan por un interprete que es un programa compilado bajo cierta arquitectura y S.O., por eso, siempre que exista un interprete ese código funcionará.
En cambio en un programa compilado el código es específico de una arquitectura y S.O. Si llevas el programa a otro procesador que no sea compatible va a fallar por diferencias en el código máquina, aunque los dos corran el mismo S.O. Si compilas en para un mismo procesador, pero los S.O. son diferentes tampoco va a funcionar por las diferencias intrínsecas de los propios SS.OO. (llamadas al sistema, la forma en que se preparan las llamadas a las funciones y como se llaman,  estructuras internas, etc.)
En línea

XKC

Desconectado Desconectado

Mensajes: 128



Ver Perfil
Re: Re: Programa en C
« Respuesta #4 en: 4 Enero 2016, 14:31 pm »

Los lenguajes interpretados pasan por un interprete que es un programa compilado bajo cierta arquitectura y S.O., por eso, siempre que exista un interprete ese código funcionará.
En cambio en un programa compilado el código es específico de una arquitectura y S.O. Si llevas el programa a otro procesador que no sea compatible va a fallar por diferencias en el código máquina, aunque los dos corran el mismo S.O. Si compilas en para un mismo procesador, pero los S.O. son diferentes tampoco va a funcionar por las diferencias intrínsecas de los propios SS.OO. (llamadas al sistema, la forma en que se preparan las llamadas a las funciones y como se llaman,  estructuras internas, etc.)
vale, muchas gracias ahora lo entiendo. Pero una ultima duda que tengo, entonces el malware que se desarrolla y se envia de manera masiva como consiguen que funcione en diferentes maquinas (en caso de que este creado en lenguajes compilados).Muchas gracias por su tiempo.Un saludo.
En línea

Para poder atacar y vencer con seguridad, ataca donde ellos no puedan defenderse.
Para defenderte y resistir firme, defiéndete en donde ellos no atacarán.
class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: Programa en C
« Respuesta #5 en: 4 Enero 2016, 14:43 pm »

No soy un entendido en malware, pero creo que la principal forma de enviar virus de forma masiva es crearlos para Windows. Este sistema operativo es el más común en los ordenadores personales. Ahora bien, no sé si habrá más técnicas para distribuir también a otros sistemas operativos
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Programa en C
« Respuesta #6 en: 4 Enero 2016, 15:17 pm »

Hay más cosas.

No todo es el sistema operativo y el tipo de máquina en sí.
También están las llamadas máquinas virtuales, como son la de Java, el JIT de .NET, etc. También están los entornos de ejecución como los navegadores con sus plugins (el navegador está compilado para cada plataforma a la que da soporte, pero los plugins son genéricos, eso es todos los navegadores de esa marca aceptarán ese plugin ); o un caso muy famoso el Flash y sus animaciones/banners/contenido activo.

Si hay un bug en estas máquinas virtuales (entiéndase todo lo anterior mencionado) que hace cosas que no debería hacer en el sistema anfitrión, ese bug, por lo general, estará en todas las plataformas a las que se puede instalar esa máquina virtual y un malware escrito para esa máquina virtual que explote ese bug puede comprometer y compromete la seguidad y el buen funcionamiento del sistema anfitrión.



Por cierto, sí se puede compilar desde una plataforma para otra. La técnica se llama cross-compiling. Para ello se utilizan los cross compilers que son capaces de compilar para otras arquitecturas. Hay muchos tipos: Linux a Windows y viceversa, Linux a Arduino, Windows a Arduino, L/W a uPIC, a Android, a iOS, etc. etc. etc.

Tal vez era esto lo que querías. Busca información de cross-compiling de Linux para Windows.
« Última modificación: 4 Enero 2016, 18:19 pm por Eternal Idol » En línea

XKC

Desconectado Desconectado

Mensajes: 128



Ver Perfil
Re: Re: Programa en C
« Respuesta #7 en: 4 Enero 2016, 17:14 pm »

Por cierto, sí se puede compilar desde una plataforma para otra. La técnica se llama cross-compiling. Para ello se utilizan los cross compilers que son capaces de compilar para otras arquitecturas. Hay muchos tipos: Linux a Windows y viceversa, Linux a Arduino, Windows a Arduino, L/W a uPIC, a Android, a iOS, etc. etc. etc.

Tal vez era esto lo que querías. Busca información de cross-compiling de Linux para Windows.
Muchas gracias, si algo así era lo que estaba buscando. Me habéis ayudado mucho, con gente como vosotros da gusto.Gracias.

Enviado desde mi Orange Hi 4G mediante Tapatalk
En línea

Para poder atacar y vencer con seguridad, ataca donde ellos no puedan defenderse.
Para defenderte y resistir firme, defiéndete en donde ellos no atacarán.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines