Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Edu en 24 Junio 2011, 22:57 pm



Título: Porque dicen C y no C++ cuando...
Publicado por: Edu en 24 Junio 2011, 22:57 pm
La cosa es que dicen siempre que hacen los SO o malwares ( de los buenos hablo) en C y ASM, pero porque dicen C y no C++? no es mejor C++?


Título: Re: Porque dicen C y no C++ cuando...
Publicado por: Queta en 24 Junio 2011, 22:59 pm
¿Seguro?

malwares ( de los buenos hablo)

:-X


Título: Re: Porque dicen C y no C++ cuando...
Publicado por: <<<-Basura->>> en 24 Junio 2011, 23:00 pm
La verdad pienso yo, que lo dicen porque C y ASM tienen mas control de la memoria a bajo nivel y pueden manipular todo con mas control .... :-\


Título: Re: Porque dicen C y no C++ cuando...
Publicado por: тαптяα en 24 Junio 2011, 23:04 pm
Creo que te debemos dedicar un foro entero para ti ZERO, para explicarte las diferencias entre C y C++.

Colega, en otro post que no me acuerdo si esta en ehn o está por otros lugares, te explicaron  la diferencia y muchas cosas, con las cuales está pregunta no la habrías hecho.

Aún así:

La verdad pienso yo, que lo dicen porque C y ASM tienen mas control de la memoria a bajo nivel y pueden manipular todo con mas control .... :-\


Título: Re: Porque dicen C y no C++ cuando...
Publicado por: Edu en 24 Junio 2011, 23:11 pm
Es que pregunte una vez cual eran los mejores lenguajes para programar malware y me dijieron ASM y C por eso digo "malwares de los buenos" para no hacer referencia a un simple malware que modifique el registro y listo por ejemplo.

Que memoria tienes, yo tambien me acordaba que una vez pregunte, siempre pregunto y espero que no este mal.. pero esa vez pregunte solo las diferencias y habia sacado como Conclusión que C++ es igual que C solo que ADEMAS es orientado a objetos, lo que lo hacia mejor. Pero mi duda es porque.. para que usar algo teniendo otra cosa que es mejor? Para que usar C si tienes C++?

Talvez la verdadera respuesta que me tendrian que haber dado entonces seria que los mejores lenguajes para programar malware son C/C++ y ASM


Título: Re: Porque dicen C y no C++ cuando...
Publicado por: Akai en 24 Junio 2011, 23:15 pm
La verdad pienso yo, que lo dicen porque C y ASM tienen mas control de la memoria a bajo nivel y pueden manipular todo con mas control .... :-\

C++ permite exáctamente lo mismo que C, a partir de ahí, se añaden más cosas.

Pero mi duda es porque.. para que usar algo teniendo otra cosa que es mejor? Para que usar C si tienes C++?

Si no vas a usar orientación a objetos ni los añadidos sobre C que te da C++, Para qué usarlo?


Título: Re: Porque dicen C y no C++ cuando...
Publicado por: <<<-Basura->>> en 24 Junio 2011, 23:17 pm
C++ permite exáctamente lo mismo que C, a partir de ahí, se añaden más cosas.
Eso lo se  :-*


Título: Re: Porque dicen C y no C++ cuando...
Publicado por: Edu en 24 Junio 2011, 23:23 pm
Ya listo, gracias Akai, esta pregunta la iba a preguntar por msn o por MP pero decidi hacerla en el foro total un moderador que borre el tema insolito si quiere, despues que me vean como pregunton ya sabran que no me interesa, si estoy aprendiendo recien, gracias a Underware tambien.


Título: Re: Porque dicen C y no C++ cuando...
Publicado por: anonimo12121 en 24 Junio 2011, 23:59 pm
Yo me decidido con C++ ahora que se usar las clases y tal por que me gusta la ordenacion que tengo con las clases ya que yo me oriento a intentar desarollar interfaz y juegos 2D con SDL xDD "Intento"


Título: Re: Porque dicen C y no C++ cuando...
Publicado por: Karman en 25 Junio 2011, 06:28 am
la respuesta más obvia es que C++ "al traer más cosas" utiliza más "cosas", cuando se programan ese tipo de programas se busca que sean pequeños y que no llamen la atención... C++ tiene (utilizando la parte de objetos dado que de otra forma es "casi" igual a C) más dependencias (librerías propias de C++) que pueden llevarte a problemas de compatibilidad (exigir que la víctima tenga el runtime c++ de la versión del compilador o incluir dicho runtime en tu ejecutable y aumentar su tamaño, etc), C sin embargo al ser un lenguaje muy próximo a ASM (no por la sintaxis sino por la cercanía a lo que el procesador realmente ejecuta) tiene pocas dependencias...

S2

Aclaración: C++ depende mucho del compilador el soporte que tengas, mientras que C no...

EDIT: se me pifió lo de gramática por escribir rápido... :P


Título: Re: Porque dicen C y no C++ cuando...
Publicado por: Queta en 25 Junio 2011, 13:30 pm
la respuesta más obvia es que C++ "al traer más cosas" utiliza más "cosas", cuando se programan ese tipo de programas se busca que sean pequeños y que no llamen la atención...

Simplemente trae "más cosas", como dices tú, para facilitar la vida al programador e incluso mejorar en rendimiento. ¿Que no llamen la atención? ¿Te piensas que la víctima de un posible virus sabrá si está escrito en C o C++?

C++ tiene (utilizando la parte de objetos dado que de otra forma es "casi" igual a C) más dependencias (librerías propias de C++) que pueden llevarte a problemas de compatibilidad

¿C no tiene sus propias librerías? ¿C no necesita también su runtime library?

C sin embargo al ser un lenguaje muy próximo a ASM (no por la gramática sino por la cercanía a lo que el procesador realmente ejecuta) tiene pocas dependencias...

Me gustaría aclarar que se llama sintaxis y no gramática :rolleyes:. Además que ambos lenguajes, si hacemos un Hola Mundo, tienen exactamente las mismas dependencias. ¿Quieres hacer la prueba ;D?


Título: Re: Porque dicen C y no C++ cuando...
Publicado por: [Zero] en 25 Junio 2011, 13:45 pm
Simplemente trae "más cosas", como dices tú, para facilitar la vida al programador e incluso mejorar en rendimiento. ¿Que no llamen la atención? ¿Te piensas que la víctima de un posible virus sabrá si está escrito en C o C++?

¿C no tiene sus propias librerías? ¿C no necesita también su runtime?

Me gustaría aclarar que se llama sintaxis y no gramática :rolleyes:. Además que ambos lenguajes, si hacemos un Hola Mundo, tienen exactamente las mismas dependencias. ¿Quieres hacer la prueba ;D?

La mayoría del malware no usa la RTL de C, por lo que no, no tienen dependencias adicionales. En C++ no puedes elegir no usar la RTL y usar simplemente la API de Win (o si puedes, pero no merece la pena). Además es muy fácil combinar C con ASM, si usas C++ tendrás problemas adicionales como el puntero this en las llamadas a los métodos, etc.

Saludos


Título: Re: Porque dicen C y no C++ cuando...
Publicado por: Queta en 25 Junio 2011, 13:55 pm
Totalmente de acuerdo, pero él dijo que C++ tiene más dependencias que C y eso es mentira si los utilizamos de forma "normal", un Hola Mundo por ejemplo...


Título: Re: Porque dicen C y no C++ cuando...
Publicado por: pucheto en 25 Junio 2011, 16:36 pm
Además es muy fácil combinar C con ASM, si usas C++ tendrás problemas adicionales como el puntero this en las llamadas a los métodos, etc.
De MSDN :  Arguments are pushed on the stack from right to left, with the this pointer being passed via register ECX on the x86 architecture.
Tan jodido es el tema del puntero a this?
Mientras no uses templates esta todo bien (sobre todo pq los templates son para programacion generica). Y de ultima uno hace wrapers q despues el compilador cuando optimize los saca.

Estoy casi seguro que el tema de el Runtime uno tambien lo puede sacar en C++, pero se queda con un subconjunto del lenguaje bastante parecido a C.


Título: Re: Porque dicen C y no C++ cuando...
Publicado por: Edu en 25 Junio 2011, 16:38 pm
Queta, aporta simplemente, pero no critiques si no fundamentas como se debe, para trollear estoy yo nomas. xD

Zero, Karman, grandes! eso es lo que queria saber, muchas gracias!


Título: Re: Porque dicen C y no C++ cuando...
Publicado por: Lunfardo en 25 Junio 2011, 17:31 pm
la misma razon por la cual mucho creen que el kernel de windows esta echo en c++ cuando en realidad es un especie de c con unas aportes bastante de basicos de objetos, no mentira no es la misma, pero talves viene por ahi =P


Título: Re: Porque dicen C y no C++ cuando...
Publicado por: jaunx en 25 Junio 2011, 17:58 pm
no creo que nadie que sepa c++ haga el cliente de un rat en asm.....pero tambien sexiste el sado... >:D


Título: Re: Porque dicen C y no C++ cuando...
Publicado por: [Zero] en 25 Junio 2011, 18:11 pm
De MSDN :  Arguments are pushed on the stack from right to left, with the this pointer being passed via register ECX on the x86 architecture.
Tan jodido es el tema del puntero a this?
Mientras no uses templates esta todo bien (sobre todo pq los templates son para programacion generica). Y de ultima uno hace wrapers q despues el compilador cuando optimize los saca.

Estoy casi seguro que el tema de el Runtime uno tambien lo puede sacar en C++, pero se queda con un subconjunto del lenguaje bastante parecido a C.

No es que sea difícil, es que te pisa el registro ecx para apuntar a la clase, para que quieres que el lenguaje haga esto si tu no necesitas clases para nada? La mayoría de software malicioso no es tan grande como para que C++ sea una ventaja a la hora de tener un código fácil de entender y mantener, al contrario, incluso interesa un código ofuscado, lo más encaminado posible a bajo nivel.

Y como dije, posiblemente sea posible reemplazar la RTL, pero para que? Acaso un malware tiene la extrema necesidad de usar clases por algún motivo? Lo mejor para programar malware en ASM porque tienes el control absoluto sobre el código que se genera, como se genera y que forma toma todo el código dentro del ejecutable. En C tambien lo puedes tener todo perfectamente bajo control, conociendo más o menos al compilador y al entorno para el que programas, y si no usas la RTL el código en C sea posiblemente más eficiente que en ASM, además de más fácil de escribir.

El asunto es que un buen malware tiene que estar lo más próximo posible al sistema operativo para el que está diseñado, no estar sujeto a exigencias del lenguaje de programación.

no creo que nadie que sepa c++ haga el cliente de un rat en asm.....pero tambien sexiste el sado... >:D

Pasa que el cliente de un RAT no es malware, malware es la parte que infecta. Yo estoy haciendo junto con Karcrack un RAT desde hace bastante tiempo, el cliente está en C++ usando Qt porque obviamente es la mejor opción, el cliente son muchas lineas de código, tiene interfaz gráfica y controla bastantes cosas a la vez. Pero el servidor está en ASM, lo que permite que el servidor pese menos de 500 bytes, y las funciones están en C, lo que permite que sea código fácil de escribir y a la vez muy ligero.

Saludos


Título: Re: Porque dicen C y no C++ cuando...
Publicado por: Queta en 25 Junio 2011, 20:50 pm
Queta, aporta simplemente, pero no critiques si no fundamentas como se debe, para trollear estoy yo nomas.

¿Que aporte? Perdona, si lees bien el post completo supongo que sabrás quién ha aportado una respuesta con argumentos y quién crea posts basura. En todo caso ya te dieron tu querida solución; yo simplemente respondí a Karman, diciéndole que estaba equivocado. Al menos tengo un mínimo de coherencia y en el caso que me hubiese equivocado, me lo hubieran dicho y perfecto, de todo se aprende. Es más, [Zero] ya me "corrigió".

Yo estoy haciendo junto con Karcrack un RAT desde hace bastante tiempo

A ver cuándo lo termináis que ya lo quiero ver :D.


Título: Re: Porque dicen C y no C++ cuando...
Publicado por: xacks en 25 Junio 2011, 21:51 pm
Pienso igual  :-\

C++ es como el avance de C, y está orientada a objetos.


Título: Re: Porque dicen C y no C++ cuando...
Publicado por: [Zero] en 25 Junio 2011, 23:28 pm
C++ , es igual que C , nadie dice que no C++ , porque es casi igual pero muchos se quedan con C porque ya aprendieron asi la sintaxis y listo.

Aunque unas de las razones por la que no me gusta c++ es por su sintaxis , ya me acostumbre a c

C++ -> Lenguaje de Alto Nivel (POO)
C -> Lenguaje de Medio Nivel (Estructurada)

Suele ser buena idea leer el hilo antes de responder jeje.

Saludos