Porque dicen C y no C++ cuando...

Iniciado por Edu, 24 Junio 2011, 22:57 PM

0 Miembros y 1 Visitante están viendo este tema.

Queta

#10
Cita de: 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...

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++?

Cita de: Karman en 25 Junio 2011, 06:28 AM
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?

Cita de: Karman en 25 Junio 2011, 06:28 AM
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?
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.

[Zero]

Cita de: Queta en 25 Junio 2011, 13:30 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

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

Queta

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...
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.

pucheto

Cita de: [Zero] en 25 Junio 2011, 13:45 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.

Edu

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!

Lunfardo

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

jaunx

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

[Zero]

Cita de: pucheto en 25 Junio 2011, 16:36 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.

Cita de: 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

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

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

Queta

#18
Cita de: XXX-ZERO-XXX en 25 Junio 2011, 16:38 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ó".

Cita de: [Zero] en 25 Junio 2011, 18:11 PM
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.
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.

xacks

#19
Pienso igual  :-\

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