Autor
|
Tema: Desarrollo de malware en C (Leído 11,351 veces)
|
dyn4m0_st4rk
Desconectado
Mensajes: 7
|
Buenas a todos los foreros. La cuestión esque aprendí a manejar C estructurado, leí tutoriales y tras un buen rato de ocio por fin aprendí. Veo que muchos lo recomiendan como base en cuanto al desarrollo de malware, lamentablemente no le encuentro aplicación alguna para malware. Me la pase haciendo calculadores, agendas, repeticiones de numeros nones y pares, etc. etc. ¿Qué tiene que ver con un malware?, ahora veo que con batch es facilisimo hacer un bucle de procesos.. entonces todo lo que aprendí en C sirvio para nada?. ¿Hay algun tutorial de C enfocado al malware?, no encontre ninguno en los demas foros. ¿Alguna recomendación?.. Me sigo con el batch y abandono el C? Aquí les paso una de mis ultimas practicas en C. #include<stdlib.h>//libreria para comunicarme con el sistema #include<conio.h>//libreria para pausar el sistemea #include<stdio.h>// libreria estandar de entradas y salidas
//variables globales char nombreContacto[5][50]; char direccionContacto[5][50]; char telefonoCasa[5][15]; char telefonoCelular [5] [15]; int edad[5];
void modificarContacto(){ int numeroContactoModificar=0;
printf("\nQue contacto deseas modificar?" ); scanf("%d",&numeroContactoModificar); if ((numeroContactoModificar>5)||(numeroContactoModificar<=0)){ printf ("\n no existe ese contacto");} else { printf("Introduce el nombre del #%d contacto: ", (numeroContactoModificar)); fflush(stdin); gets(nombreContacto[numeroContactoModificar-1]); printf("Introduce la direccion del #%d contacto: ", (numeroContactoModificar)); fflush(stdin); gets(direccionContacto[numeroContactoModificar-1]); printf("Introduce el telefono del #%d contacto: ", (numeroContactoModificar)); fflush(stdin); gets(telefonoCasa[numeroContactoModificar-1]); printf("Introduce el celular del #%d contacto: ", (numeroContactoModificar)); fflush(stdin); gets(telefonoCelular[numeroContactoModificar-1]); printf("Introduce la edad del #%d contacto: ", (numeroContactoModificar)); scanf(" %d",&edad[numeroContactoModificar-1]); } }
void verTodos() { for (int indice=0; indice<=4; indice++) { printf("\n\nNombre: "); puts (nombreContacto[indice]); fflush(stdin); printf("Telefono: "); puts(telefonoCasa[indice]); fflush(stdin); printf("Celular: "); puts(telefonoCelular[indice]); fflush(stdin); printf("Edad: "); printf(" %d", edad[indice]); } } void verContacto() { int numeroContacto=0; printf ("\nIntroduce el numero del contacto que deseas ver: "); scanf (" %d",&numeroContacto); if ((numeroContacto>5)||(numeroContacto<=0)){ printf ("\n no existe ese contacto");} else { printf("\nNombre: "); puts (nombreContacto[numeroContacto-1]); fflush(stdin); printf("Telefono: "); puts(telefonoCasa[numeroContacto-1]); fflush(stdin); printf("Celular: "); puts(telefonoCelular[numeroContacto-1]); fflush(stdin); printf("Edad: "); printf(" %d", edad[numeroContacto-1]); } } void guardarAgenda () { FILE *miArchivoTexto;//CREO UNA VARIABLE QUE DIRECCIONA A UN TIPO ARCHIVO miArchivoTexto = fopen ("Agenda.txt","w"); for (int indice=0; indice<=4; indice++) { fprintf(miArchivoTexto, " \nNombre:%s", &nombreContacto[indice]); fprintf(miArchivoTexto, " Telefono:%s", &telefonoCasa[indice]); fprintf(miArchivoTexto, " Celular:%s", &telefonoCelular[indice]); fprintf(miArchivoTexto, " Edad:%d", edad[indice]); } fclose (miArchivoTexto); } main(){ system("title AGENDA "); system("color A"); char opcion; char final; printf("\t\t\tBIENVENIDO A TU AGENDA\n"); printf("\t\t\t======================\n"); for(int indice=0; indice<=4;indice++){ printf("\nIntroduce el nombre del #%d contacto: ", (indice+1)); fflush(stdin); gets(nombreContacto[indice]); printf("Introduce la direccion del #%d contacto: ", (indice+1)); fflush(stdin); gets(direccionContacto[indice]); printf("Introduce el telefono del #%d contacto: ", (indice+1)); fflush(stdin); gets(telefonoCasa[indice]); printf("Introduce el numero celular del #%d contacto: ", (indice+1)); fflush(stdin); gets(telefonoCelular[indice]); printf("Introduce la edad del #%d contacto: ", (indice+1)); scanf(" %d",&edad[indice]); } system ("cls"); do{ printf ("Que operacion deseas realizar?\na)Modificar un contacto\nb)Ver todos los contactos\nc)Ver un solo contacto\nd)Guardar agenta en memoria \n"); scanf (" %s",&opcion); switch (opcion) { case 'a': case'A': modificarContacto(); break; case'b':case'B': verTodos(); break; case'c': case'C': verContacto(); break; case'd': case'D': guardarAgenda(); break; default: printf ("\nOpcion invalida... "); } printf ("\nDeseas realizar otra operacion?s/n "); scanf (" %s",&final); system ("cls"); }while ((final=='s')||(final=='S')); printf ("\nGracias por utilizar este programa =) "); getch(); } Es frustrante solo saber hacer este tipo de programas, y ni si quiera algo cercano a un virus.... Gracias de antemano. Saludos
|
|
|
En línea
|
"El que busca la verdad corre el riesgo de encontrarla".
|
|
|
[Zero]
Wiki
Desconectado
Mensajes: 1.082
CALL DWORD PTR DS:[0]
|
Bueno, para hacer malware debes aprender a manejar archivos, memoria, sockets, registro, procesos, etc... Ya sea con las funciones de C o con las API's de Windows (ésto es lo más recomendable). No tienes más que buscar códigos por la red, seguro de ahí ya puedes arrancar.
Saludos
|
|
|
En línea
|
“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza. Nietzsche
|
|
|
Horricreu
Wiki
Desconectado
Mensajes: 290
¡La verdad os hará libres!
|
Estoy de acuerdo con [Zero]. En esta Web encuentras todas las funciones de la API de Windows bien explicadas y, muchísima más información acerca de lo que te dijo. Otra cosa, dices que ya sabes más o menos moverte bien en este lenguaje. Veo "errores" tontos como utilizar gets(), fflush(stdin), scanf(), la librería conio... puedes pasarte por acá, donde te solucionarán fácilmente estos errores. Saludos
|
|
« Última modificación: 18 Septiembre 2010, 02:39 am por Horricreu »
|
En línea
|
|
|
|
[L]ord [R]NA
Desconectado
Mensajes: 1.513
El Dictador y Verdugo de H-Sec
|
Para malware especialmente debe de conocer el sistema operativo, si lo conoces agregando la API de Windows e imaginacion ya serias muy bueno en malware.
|
|
|
En línea
|
|
|
|
dyn4m0_st4rk
Desconectado
Mensajes: 7
|
Gracias a todos por sus respuestas. Perdonen mi graaan ignorancia, reitero que soy un novato total en esto. Estoy de acuerdo con [Zero]. En esta Web encuentras todas las API's bien explicadas y, muchísima más información acerca de lo que te dijo. Otra cosa, dices que ya sabes más o menos moverte bien en este lenguaje. Veo "errores" tontos como utilizar gets(), fflush(stdin), scanf(), la librería conio, ... puedes pasarte por acá, donde te solucionarán fácilmente estos errores. Saludos Entre a la primera pagina que me diste, pero ¿En que apartado estan las API?, busque y solo encuentro tutoriales (para vb) que son para llamar APIS. y otra preguntaa ¿Dónde puedo encontrar los commandos de C para manejar archivos y librerias?... los tutoriales no salen del scanf y del pintf... Muchas gracias, aprecio sus respuestas
|
|
|
En línea
|
"El que busca la verdad corre el riesgo de encontrarla".
|
|
|
Horricreu
Wiki
Desconectado
Mensajes: 290
¡La verdad os hará libres!
|
Gracias a todos por sus respuestas. Perdonen mi graaan ignorancia, reitero que soy un novato total en esto. Estoy de acuerdo con [Zero]. En esta Web encuentras todas las API's bien explicadas y, muchísima más información acerca de lo que te dijo. Otra cosa, dices que ya sabes más o menos moverte bien en este lenguaje. Veo "errores" tontos como utilizar gets(), fflush(stdin), scanf(), la librería conio, ... puedes pasarte por acá, donde te solucionarán fácilmente estos errores. Saludos Entre a la primera pagina que me diste, pero ¿En que apartado estan las API?, busque y solo encuentro tutoriales (para vb) que son para llamar APIS. y otra preguntaa ¿Dónde puedo encontrar los commandos de C para manejar archivos y librerias?... los tutoriales no salen del scanf y del pintf... Muchas gracias, aprecio sus respuestas Bueno, es que hace poco cambiaron el diseño y la estructuración de la MSDN y, antes salía la lista de funciones de la API ordenadas alfabéticamente. Ahora tienes que ir acá. Dentro de esta página hay muchas otras páginas ordenadas y, vas encontrando las funciones. Por ejemplo, la información de ReadFile está en: System Services/File Services/Local File Systems/File Management/File Management Reference/File Management Functions y, dentro de ahí hay muchas funciones relacionadas con ficheros. Pero yo no lo haría de esta forma ya que es muy molesto encontrarlas. Lee muchos códigos y, luegos en Google pones la función que quieras consultar y, ya te saldrá la información de la MSDN. Pero, antes de he pasado el enlace de la MSDN no sólo por las funciones explicadas sino por la cantidad de información explicada. Saludos
|
|
« Última modificación: 1 Septiembre 2010, 19:50 pm por Horricreu »
|
En línea
|
|
|
|
dyn4m0_st4rk
Desconectado
Mensajes: 7
|
Bueno, es que hace poco cambiaron el diseño y la estructuración de la MSDN y, antes salían las API's ordenadas alfabéticamente. Ahora tienes que ir acá. Dentro de esta página hay muchas otras páginas ordenadas y, vas encontrando las API's. Por ejemplo, la información de ReadFile está en: System Services/File Services/Local File Systems/File Management/File Management Reference/File Management Functions y, dentro de ahí hay muchas API's relacionadas con ficheros.
Pero yo no lo haría de esta forma ya que es muy molesto encontrarlas. Lee muchos códigos y, luegos en Google pones la API que quieras consultar y, ya te saldrá la información de la MSDN. Pero, antes de he pasado el enlace de la MSDN no sólo por las API's sino por la cantidad de información explicada.
Ya entre a la web, muchisimas gracias, de igual manera sigo sin entender nada de esas cosas lo veo muuy complicado.. y en vista de esto.. realmente me recomiendan mas el C para malware que el batch?... me aferro a creer que el batch es mas útil..., pero no lo se, ignoro mucho y la ignorancia es valienteee. Gracias
|
|
|
En línea
|
"El que busca la verdad corre el riesgo de encontrarla".
|
|
|
braulio--
Wiki
Desconectado
Mensajes: 896
Imagen recursiva
|
Bueno, es que hace poco cambiaron el diseño y la estructuración de la MSDN y, antes salían las API's ordenadas alfabéticamente. Ahora tienes que ir acá. Dentro de esta página hay muchas otras páginas ordenadas y, vas encontrando las API's. Por ejemplo, la información de ReadFile está en: System Services/File Services/Local File Systems/File Management/File Management Reference/File Management Functions y, dentro de ahí hay muchas API's relacionadas con ficheros.
Pero yo no lo haría de esta forma ya que es muy molesto encontrarlas. Lee muchos códigos y, luegos en Google pones la API que quieras consultar y, ya te saldrá la información de la MSDN. Pero, antes de he pasado el enlace de la MSDN no sólo por las API's sino por la cantidad de información explicada.
Ya entre a la web, muchisimas gracias, de igual manera sigo sin entender nada de esas cosas lo veo muuy complicado.. y en vista de esto.. realmente me recomiendan mas el C para malware que el batch?... me aferro a creer que el batch es mas útil..., pero no lo se, ignoro mucho y la ignorancia es valienteee. Gracias Si aprendes el 10% de batch y de C, te será mucho más útil batch. En cambio, si aprendes el 80% por ciento de ambos , batch te parecerá un juguete. Por supuesto los porcentajes son inventados pero supongo que se entiende.
|
|
|
En línea
|
|
|
|
Horricreu
Wiki
Desconectado
Mensajes: 290
¡La verdad os hará libres!
|
Bueno, es que hace poco cambiaron el diseño y la estructuración de la MSDN y, antes salían las API's ordenadas alfabéticamente. Ahora tienes que ir acá. Dentro de esta página hay muchas otras páginas ordenadas y, vas encontrando las API's. Por ejemplo, la información de ReadFile está en: System Services/File Services/Local File Systems/File Management/File Management Reference/File Management Functions y, dentro de ahí hay muchas API's relacionadas con ficheros.
Pero yo no lo haría de esta forma ya que es muy molesto encontrarlas. Lee muchos códigos y, luegos en Google pones la API que quieras consultar y, ya te saldrá la información de la MSDN. Pero, antes de he pasado el enlace de la MSDN no sólo por las API's sino por la cantidad de información explicada.
Ya entre a la web, muchisimas gracias, de igual manera sigo sin entender nada de esas cosas lo veo muuy complicado.. y en vista de esto.. realmente me recomiendan mas el C para malware que el batch?... me aferro a creer que el batch es mas útil..., pero no lo se, ignoro mucho y la ignorancia es valienteee. Gracias Bueno, supongo que crees que Batch es más fácil para "programar" malware, pero te lo piensas porque es muy sencillo y, al principio puedes hacer cosas muy simples y rápidas. Créeme, cuando sepas manejar todo esto en C/C++ ya veremos... A ver, no es que no entiendas nada de estas cosas. Te dije que te miraras algunos códigos de malware programados en C/C++, donde manejan funciones de la API de Windows. A partir de ahí vas buscando información sobre ellas. Por ejemplo, te dejo un código que ofusca un simple fichero: #include <windows.h> int main() { HANDLE hHeap = GetProcessHeap(); //Abrimos la ruta del archivo LPSTR lpFileName = "C:\\prueba.txt"; HANDLE hFile = CreateFile(lpFileName, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0); //Leemos el archivo DWORD nNumberOfBytesToRead = GetFileSize(hFile, 0); LPSTR lpBuffer = (LPSTR)HeapAlloc(hHeap, HEAP_ZERO_MEMORY, nNumberOfBytesToRead); DWORD nNumberOfBytesRead = 0; ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, &nNumberOfBytesRead, 0); //Ofuscamos el buffer for(DWORD n = 0; n < nNumberOfBytesToRead; n++) lpBuffer[n] ^= 100; //Empezamos a guardar desde el principio del archivo SetFilePointer(hFile, FILE_BEGIN, 0, 0); //Sobreescribimos los carácteres ofuscados WriteFile(hFile, lpBuffer, nNumberOfBytesToRead, &lpNumberOfBytesRead, 0); //Liberamos la memoria dinámica HeapFree(hHeap, 0, lpBuffer); //Cerramos los handles CloseHandle(hFile); CloseHandle(hHeap); return 0; }
Crea un fichero que se llame prueba en el directorio C:\ y, luego escribe algo, guárdalo y ciérralo. Seguidamente ejecuta este programa y notarás una ligera diferencia. Te he puesto este código, comentado, porque estoy manejando las funciones que seguramente vas a utilizar más. Espero que lo vayas cogiendo. Saludos
|
|
« Última modificación: 1 Septiembre 2010, 19:39 pm por Horricreu »
|
En línea
|
|
|
|
dyn4m0_st4rk
Desconectado
Mensajes: 7
|
Bueno, es que hace poco cambiaron el diseño y la estructuración de la MSDN y, antes salían las API's ordenadas alfabéticamente. Ahora tienes que ir acá. Dentro de esta página hay muchas otras páginas ordenadas y, vas encontrando las API's. Por ejemplo, la información de ReadFile está en: System Services/File Services/Local File Systems/File Management/File Management Reference/File Management Functions y, dentro de ahí hay muchas API's relacionadas con ficheros.
Pero yo no lo haría de esta forma ya que es muy molesto encontrarlas. Lee muchos códigos y, luegos en Google pones la API que quieras consultar y, ya te saldrá la información de la MSDN. Pero, antes de he pasado el enlace de la MSDN no sólo por las API's sino por la cantidad de información explicada.
Ya entre a la web, muchisimas gracias, de igual manera sigo sin entender nada de esas cosas lo veo muuy complicado.. y en vista de esto.. realmente me recomiendan mas el C para malware que el batch?... me aferro a creer que el batch es mas útil..., pero no lo se, ignoro mucho y la ignorancia es valienteee. Gracias Bueno, supongo que crees que Batch es más fácil para "programar" malware, pero te lo piensas porque es muy sencillo y, al principio puedes hacer cosas muy simples y rápidas. Créeme, cuando sepas manejar todo esto en C/C++ ya veremos... A ver, no es que no entiendas nada de estas cosas. Te dije que te miraras algunos códigos de malware programados en C/C++, donde manejan las API's. A partir de ahí vas buscando información sobre ellas. Por ejemplo, te dejo un código que ofusca un simple fichero: #include <windows.h> int main() { //Abrimos la ruta del archivo LPSTR lpFileName = "C:\\prueba.txt"; HANDLE hFile = CreateFileA(lpFileName,GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0); //Leemos el archivo DWORD nNumberOfBytesToRead = GetFileSize(hFile,0); LPSTR lpBuffer = (LPSTR)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,nNumberOfBytesToRead); DWORD lpNumberOfBytesRead = 0; ReadFile(hFile,lpBuffer,nNumberOfBytesToRead,&lpNumberOfBytesRead,0); //Ofuscamos el buffer for(DWORD n = 0;n < nNumberOfBytesToRead;n++) lpBuffer[n] ^= 100; //Empezamos a guardar desde el principio del archivo SetFilePointer(hFile,FILE_BEGIN,0,0); //Sobreescribimos los carácteres ofuscados WriteFile(hFile,lpBuffer,nNumberOfBytesToRead,&lpNumberOfBytesRead,0); //Liberamos la memoria dinámica HeapFree(GetProcessHeap(),0,lpBuffer); //Cerramos los handles CloseHandle(hFile); return 0; }
Crea un fichero que se llame prueba en el directorio C:\ y, luego escribe algo, guárdalo y ciérralo. Seguidamente ejecuta este programa y notarás una ligera diferencia. Te he puesto este código, comentado, porque estoy manejando las API's que seguramente vas a utilizar más. Espero que lo vayas cogiendo. Saludos Muchas gracias, ya estoy en ello. Saludos
|
|
|
En línea
|
"El que busca la verdad corre el riesgo de encontrarla".
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
“Windows 7 afectará al desarrollo de malware en 2011”
« 1 2 »
Noticias
|
wolfbcn
|
15
|
9,054
|
23 Diciembre 2010, 01:39 am
por ~ Ghost_Networks ~
|
|
|
Hombre de Rusia reconoce que desarrolló y distribuyó el malware SpyEye
Noticias
|
wolfbcn
|
1
|
1,953
|
30 Enero 2014, 17:39 pm
por Vaagish
|
|
|
Libros de desarrollo web
Desarrollo Web
|
beto1555
|
1
|
3,291
|
17 Diciembre 2020, 09:54 am
por Hakkimen
|
|
|
Introducción al desarrollo de malware y a la evasión de antivirus
Análisis y Diseño de Malware
|
ehn@
|
1
|
9,824
|
6 Noviembre 2023, 09:19 am
por ehn@
|
|
|
Que tanto se puede publicar sobre desarrollo de malware?
Sugerencias y dudas sobre el Foro
|
D3s0rd3n
|
5
|
34,729
|
1 Diciembre 2023, 11:08 am
por fary
|
|