Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: fabian7593 en 23 Septiembre 2013, 23:58 pm



Título: Como serializar en c++? (dev c++)
Publicado por: fabian7593 en 23 Septiembre 2013, 23:58 pm
Hola e estado buscando por la web y se encuentra muy poca informacion de esto (solo hay para visual c++, creator etc)... siempre me dicen que baje una libreria,
 pero habria alguna forma de crear mi propia serializacion (no solo de cadenas, numeros etc. sino TAMBIEN DE ARCHIVOS)?? , digo ideas? como podre lograrlo? etc muchas gracias :)


Título: Re: Como serializar en c++? (dev c++)
Publicado por: eferion en 24 Septiembre 2013, 03:36 am
XDR, ASN.1, XML ... hay infinidad de formas para serializar... y están ya inventadas.

Lo que tienes que tener claro es qué significa serializar... serializar significa almacenar el estado de uno o varios objetos de tu aplicación para almacenarlos en disco o bien para enviarlos por red a un servidor o cliente.

Por tanto, serializar archivos no tiene ningún sentido. Además, los métodos de serialización son independientes de que uses vs, qtcreator, dev... eso solo son IDEs y el IDE sobre el que desarrolles no afecta en absoluto al código fuente que se genera... esa tarea le corresponde al compilador y como norma general se puede configurar cualquier IDE para que sea capaz de usar cualquier compilador.


Título: Re: Como serializar en c++? (dev c++)
Publicado por: fabian7593 en 25 Septiembre 2013, 03:58 am
hola eferion ...
se que existen varias formas de serializar ya inventadas pero te explico, tengo una idea de hacer un keylogger (no solo es keylogger, pero esa es la funcion principal y entre tantas cosas que quiero hacer necesito la serializacion).
si se que es serializar y tienes razon en la definicion (e utilizado serializacion en c# y python), y queria o me proponia a hacer uno si alguien tenia alguna idea porque? , porque si instalo una libreria o alguna otra cosa para serializar (por ejemplo un .h), estaria hablando de mas de un archivo pra mi .exe (del keylogger compilado), por lo tanto la idea de utilizar una serializacion por fuera no me parece muy buena...

ahh y la serializacion depende de como se vea sirve para mas cosas, en mi caso la utilice em c# y python para serializar contraseñas (muy parecido a la codificacion de hecho), y serializar archivos pra q sean guardados en una base de datos de esa manera.

mi idea en si es meter el arhcivo serializado en mi codgo c++ y desdeserializarlo en la pc victima, sin necesidad de descargar o tener un archivo y/o programa por aparte


Título: Re: Como serializar en c++? (dev c++)
Publicado por: eferion en 25 Septiembre 2013, 08:33 am
estaria hablando de mas de un archivo pra mi .exe (del keylogger compilado), por lo tanto la idea de utilizar una serializacion por fuera no me parece muy buena...

No veo por qué habrías de incorporar una librería nueva a tu código... si empleas por ejemplo xdr se genera código fuente que puedes añadir sin ningún problema a tu ejecutable... lo que tu comentas de archivos adicionales sería si utilizases una dll precompilada... y normalmente estos códigos vienen con su fuente, por lo que añadirlo a tu ejecutable lo único que genera es un ejecutable un poco más grande.

ahh y la serializacion depende de como se vea sirve para mas cosas, en mi caso la utilice em c# y python para serializar contraseñas (muy parecido a la codificacion de hecho), y serializar archivos pra q sean guardados en una base de datos de esa manera.

Técnicamente eso no se debería confundir con serializar... en el caso de las contraseñas, lo lógico es que las contraseñas no se guarden nunca en texto plano... luego el paso lógico es codificar la contraseña o almacenar únicamente su hash... de tal forma que a través del hash no sea sencillo identificar la clave original... y esto no es serializar.

Y en el caso de ficheros en bases de datos, lo más normal es crear un campo de tipo bloob que va a ser capaz almacenar el fichero sin necesidad de retoques... a lo sumo sustituir las comillas para no falsear la consulta SQL... pero esto tampoco debería ser considerado serializar... es una mera sustitución o reemplazo.

Sin embargo, coger un objeto que tiene 20 propiedades y almacenar su estado de forma que pueda duplicarse el estado del objeto en cualquier otro lugar y momento... eso si se serialización... es como si pudieses enviar ladrillos por Internet... a través del cable... por eso a esta técnica se la conoce como serialización, el resto de acepciones, por norma general, son desvarios del personal.

Otro ejemplo de desvarios es el concepto que tiene la gente de tiempo real... que muchos piensan que consiste en que las cosas se ejecuten lo más rápidamente posible... instantáneamente a ser posible... nada más lejos de la realidad... tiempo real es que cada parte del programa tiene un tiempo exacto en el que ejecutarse y tiene que terminar en un momento determinado, ni antes ni después. Ya ves cómo cambia la cosa.

mi idea en si es meter el arhcivo serializado en mi codgo c++ y desdeserializarlo en la pc victima, sin necesidad de descargar o tener un archivo y/o programa por aparte

Lo que tú necesitas es añadir a tu ejecutable un archivo de recursos... en este caso el recurso sería el archivo que quieres desempaquetar... en este caso el recurso puede ir tal cual o comprimido y/o cifrado según las necesidades, pero recuerda que en estos últimos casos ( comprimido y/o cifrado ) tendrás que dotar a tu ejecutable de la capacidad para descomprimir y/o descifrar el archivo para que éste sea útil.