Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - dyn4m0_st4rk

#1
Cita de: Horricreu en 15 Julio 2010, 13:04 PM
Cita de: dyn4m0_st4rk en 14 Julio 2010, 22:41 PM
CitarBueno, 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:

Código (cpp) [Seleccionar]
#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 :P


Muchas gracias, ya estoy en ello.

Saludos
#2
CitarBueno, 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
#3
Gracias a todos por sus respuestas.

Perdonen mi graaan ignorancia, reitero que soy un novato total en esto.

Cita de: Horricreu en 14 Julio 2010, 12:45 PM
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 :P
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  ;-)
#4
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
#5
Muchas gracias a todos.

En vista de que mi código esta por los suelos y funciones como WinExec no las conocia....seguire dedicandome a aprender C.


Saludos
#6
Sí sirve tu código, muchas gracias por las correcciones.

¿Y cómo configuro el navegador para que ejecute las n veces que yo desee?

No tengo problemas realmente con C... es solo que yo quiero aprender a desarrollar malware, veo que el C puramente no me es muy util para eso, pues lo que debo hacer es combinar el C con el batch con la orden system.

Es por eso que estaba experimentando con los bucles. pero veo que si lo hago en batch si se ejecuta la pagina las veces que quiero, pero en el C no.


Gracias  :laugh:

EI: juntando mensajes.

¿Puede haber problemas si incluyo librerias que estan de más?

Mí código a pesar de tener fallas, se ejecutaba bién, no me daba problemas, reitero que el único fallo esque no se ejecuta la pagina las N veces que solicite.


¿Es tan grave dejar los códigos como el que deje alla arriba?


Saludos
#7
Buenas a todos los foreros.

Tengo un problema con el siguiente código.

//prueba by dyn4m0

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
main () {
for (int contador=1; contador<=4; contador++) {
system ("start www.elhacker.net");
}
getch ();
}


Se supone que deberia de ejecutarse la web 4 veces.. pero a la hora de ejecutar el exe solo se ejecuta una vez.. ya verifique y no muestra errores, y el codigo parece estar bien...

¿Por qué solo se esta ejecutando la web una vez?

Gracias de antemano ;-)