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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 [101] 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 ... 123
1001  Seguridad Informática / Análisis y Diseño de Malware / Re: Intento de agregar sección a ejecutable en: 18 Septiembre 2011, 20:15 pm
...

pffff... es qeu mi problema creo que esta en cosa de punteros o algo así  :-\ y no lo logro encontrar.

saludos.
1002  Foros Generales / Foro Libre / Re: A que velocidad SALTAN los radares en España????? en: 18 Septiembre 2011, 15:39 pm
a la velocidad no permitida XD

jajajaja si, si nuna te pasas nunca salta XD

1003  Seguridad Informática / Análisis y Diseño de Malware / Intento de agregar sección a ejecutable en: 16 Septiembre 2011, 23:22 pm
Ya estoi aqui de nuevo, esta vez e intentado agregar una nueva sección a un ejecutable, sin exito  :xD

este es el código que tengo:

Código
  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int main()
  6. {
  7. IMAGE_DOS_HEADER dh;
  8. IMAGE_NT_HEADERS nth;
  9.  
  10. IMAGE_SECTION_HEADER * sección;
  11. IMAGE_SECTION_HEADER nSeccion;
  12.    // char * stub_dos -> Datos del STUB_DOS
  13.    // char * dSecciones -> Datos de las secciones
  14.  
  15. FILE * archivo = fopen("c:\\windows\\system32\\calc.exe","r+b");
  16.    if (archivo == NULL)
  17.    {
  18.        printf("Error al leer el archivo\n");
  19.        system("PAUSE");
  20.  
  21.        return 1;
  22.    }
  23.  
  24. fread(&dh,sizeof(dh),1,archivo); // Rellenamos IMAGE_DOS_HEADER
  25.  
  26.    char * stub_dos = (char*)malloc(dh.e_lfanew-0x40);
  27.  
  28.    fread(stub_dos,1,dh.e_lfanew-0x40,archivo); // Leemos el Stub DOS
  29.    fread(&nth,sizeof(nth),1,archivo); // leemos nt headers
  30.  
  31.    sección = (IMAGE_SECTION_HEADER*)malloc(sizeof(IMAGE_SECTION_HEADER)*nth.FileHeader.NumberOfSections);
  32.  
  33.    fread(sección,sizeof(IMAGE_SECTION_HEADER),nth.FileHeader.NumberOfSections,archivo);
  34.  
  35.    char * dSecciones = (char*)malloc(nth.OptionalHeader.SizeOfImage);
  36.    fread(dSecciones,nth.OptionalHeader.SizeOfImage,1,archivo); //leo todos los datos de las secciones.
  37.  
  38.    fclose(archivo); // terminamos de leer
  39.  
  40.    ZeroMemory(&nSeccion,sizeof(IMAGE_SECTION_HEADER));
  41.  
  42.    int A = sección[nth.FileHeader.NumberOfSections-1].VirtualAddress;
  43.    int B = sección[nth.FileHeader.NumberOfSections-1].Misc.VirtualSize;
  44.    int C = nth.OptionalHeader.SectionAlignment;
  45.  
  46.    strcpy((char*)nSeccion.Name,".fary"); // nombre de la nueva sección: .fary
  47.    nSeccion.VirtualAddress = ((A+B)/C)*C+C;// direccion Virtual
  48.    nSeccion.SizeOfRawData = 0x64; // tamaño de la sección: 100
  49.    nSeccion.PointerToRawData = sección[nth.FileHeader.NumberOfSections-1].PointerToRawData + 0x64;  // direccion fisica
  50.    nSeccion.Characteristics = 0x10000020;
  51.    nSeccion.Misc.VirtualSize = 0x64;
  52.    //nSeccion.VirtulSize
  53.  
  54.    nth.FileHeader.NumberOfSections += 1; // sumamos la nueva sección
  55.    nth.OptionalHeader.SizeOfImage += 0x64;
  56.  
  57.    FILE * nuevo = fopen("NuevaCalc.exe","wb+");
  58.  
  59.    fwrite(&dh,sizeof(dh),1,nuevo);
  60.    fwrite(stub_dos,dh.e_lfanew-0x40,1,nuevo);
  61.    fwrite(&nth,sizeof(nth),1,nuevo);
  62.    fwrite(sección,sizeof(IMAGE_SECTION_HEADER)*nth.FileHeader.NumberOfSections,1,nuevo);
  63.    fwrite(&nSeccion,sizeof(IMAGE_SECTION_HEADER),1,nuevo);
  64.    fwrite(dSecciones,nth.OptionalHeader.SizeOfImage,1,nuevo);
  65.  
  66.    char * DatosSeccion = (char*)malloc(0x64);
  67.    ZeroMemory(DatosSeccion,0x64);
  68.  
  69.    fwrite(DatosSeccion,0x64,1,nuevo);
  70.  
  71.    fclose(nuevo);
  72. system("PAUSE");
  73. return 0;
  74. }

Genera bien el nuevo archivo pero no pone bien los datos de la sección y ni que decir de ejecutarse (peta) XD. Así es como salen los datos de mi sección desde el lordPE:




haber si aguien sabe que ago mal...

saludos.
1004  Seguridad Informática / Análisis y Diseño de Malware / Re: [AYUDA] formato PE obtener dirección fisica de secciones y mas cosas en: 5 Septiembre 2011, 16:21 pm
Puedes programar la entrada y salida de ficheros, y básicamente todo el código, con las funciones de la API, así te ahorras la C Runtime Library y reduces el peso del ejecutable.

Cierto pero bueno yo ya lo hice asi ;)
1005  Seguridad Informática / Análisis y Diseño de Malware / Re: [AYUDA] formato PE obtener dirección fisica de secciones y mas cosas en: 5 Septiembre 2011, 13:21 pm
Ya lo e conseguido, muchas gracias a todos...
El código arreglado es el siguiente:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4.  
  5. int main()
  6. {
  7. IMAGE_DOS_HEADER idh;
  8. IMAGE_FILE_HEADER ifh;
  9. IMAGE_OPTIONAL_HEADER ioh;
  10. IMAGE_SECTION_HEADER ish;
  11.  
  12. char ruta[] = "C:\\MS-DOC.exe";
  13.  
  14. FILE * archivo = fopen(ruta,"r+b");
  15. if (archivo == NULL)
  16. { // si no podemos abrri el archivo.
  17. printf("Error al abrir el archivo\n");
  18. system("PAUSE");
  19.  
  20. return 1;
  21. }
  22.  
  23. fread(&idh,0x40,1,archivo); // rellenamos IMAGE_DOS_HEADER
  24. if (idh.e_magic != IMAGE_DOS_SIGNATURE)
  25. { // comprovamos el e_magic para saber si es un EXE
  26. printf("No es un archivo EXE\n");
  27. system("PAUSE");
  28.  
  29. return 1;
  30. }
  31.  
  32. fseek(archivo,idh.e_lfanew + 4,SEEK_SET);
  33. fread(&ifh,0x14,1,archivo); // rellenamos IMAGE_FILE_HEADER
  34. fseek(archivo, idh.e_lfanew + 4 + sizeof(ifh), SEEK_SET);
  35. fread(&ioh,ifh.SizeOfOptionalHeader,1,archivo); // Leemos IMAGE_OPTIONAL_HEADER
  36.  
  37. for (int i=0;i<ifh.NumberOfSections;i++)
  38. {
  39. fread(&ish, sizeof(ish),1,archivo);
  40. printf("%x\n",ish.Misc.PhysicalAddress);
  41. }
  42.  
  43. fclose(archivo);
  44.  
  45. system("PAUSE");
  46.  
  47. return 0;
  48. }

saludos.
1006  Seguridad Informática / Análisis y Diseño de Malware / Re: Reto # Crear malware inofensivo en: 3 Septiembre 2011, 07:31 am
Si se llega a hacer un torneo me apuntooooo!!
1007  Seguridad Informática / Análisis y Diseño de Malware / [AYUDA] formato PE obtener dirección fisica de secciones y mas cosas en: 2 Septiembre 2011, 13:38 pm
Buenas, bueno al fin he decidido meterme de lleno a aprender el formato PE y tenia pensado agrandar  la sección de código par aintroducir un pequeño opcode con un msgbox y tal una chorradilla pero para ensayar no me parece mal  >:D.
El problema viene cuando no puedo detectar el ISH bien de todas las secciones, solo lo detecta bien de la primera, el código que he creado es este:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4.  
  5. int main()
  6. {
  7. IMAGE_DOS_HEADER idh;
  8. IMAGE_FILE_HEADER ifh;
  9. IMAGE_OPTIONAL_HEADER ioh;
  10. IMAGE_SECTION_HEADER ish;
  11.  
  12. char ruta[] = "C:\\MS-DOC.exe";
  13.  
  14. FILE * archivo = fopen(ruta,"r+b");
  15. if (archivo == NULL)
  16. { // si no podemos abrri el archivo.
  17. printf("Error al abrir el archivo\n");
  18. system("PAUSE");
  19.  
  20. return 1;
  21. }
  22.  
  23. fread(&idh,0x40,1,archivo); // rellenamos IMAGE_DOS_HEADER
  24. if (idh.e_magic != IMAGE_DOS_SIGNATURE)
  25. { // comprovamos el e_magic para saber si es un EXE
  26. printf("No es un archivo EXE\n");
  27. system("PAUSE");
  28.  
  29. return 1;
  30. }
  31.  
  32. fseek(archivo,idh.e_lfanew + 4,SEEK_SET);
  33. fread(&ifh,0x14,1,archivo); // rellenamos IMAGE_FILE_HEADER
  34. fseek(archivo, idh.e_lfanew + 4 + sizeof(ifh), SEEK_SET);
  35. fread(&ioh,ifh.SizeOfOptionalHeader,1,archivo); // Leemos IMAGE_OPTIONAL_HEADER
  36.  
  37. int suma = 0;
  38.  
  39. for (int i=0;i<ifh.NumberOfSections;i++)
  40. {
  41. fseek(archivo, idh.e_lfanew + 4 + sizeof(ifh) + ifh.SizeOfOptionalHeader + (sizeof(ish)*(ifh.NumberOfSections-1)) + suma ,SEEK_SET);
  42. fread(&ish, sizeof(ish),1,archivo); // rellenamos IMAGE_SECTION_HEADER
  43.  
  44. printf("%x\n",(&ish)[i].Misc.PhysicalAddress);
  45.  
  46. suma += 0x28; // sumo 0x28 que es lo que ocupa ish para pasar a los datos de la siguiente sección.
  47. }
  48.  
  49. fclose(archivo);
  50.  
  51. system("PAUSE");
  52.  
  53. return 0;
  54. }

Nose que andará mal por ahi si me peuden hechar una mano sería de gran ayuda >:(

un saludo.
1008  Programación / ASM / Re: duda con parametros sin definir y saber su direccion en: 1 Septiembre 2011, 08:22 am
Son diferentes formas de hacerlo... de la forma que yo púse tambien se puede hacer pero si tienes muchos parametros es mas lio obviamente :P

PD: tambien sirve con stdcall y etc.

saludos.
1009  Programación / ASM / Re: duda con parametros sin definir y saber su direccion en: 1 Septiembre 2011, 03:37 am
Hasta donde se, en ASM los params se PUSHean al reves de como los declaras.

Código:
int AgregarRegistro(int param1, int param2)
{
       void* ptrreg;
       void* ptrreg2;
__asm eax, dword ptr [esp+4] //recupera param2
        __asm mov ptrreg, eax
__asm eax, dword ptr [esp+8] //recupera param1
        __asm mov ptrreg2, eax
}

Si no es asi, debe ser al reves...  ;D

Saludos!

no sería asi exactamente, fijate:

Código
  1. include 'win32ax.inc'
  2.  
  3. .data
  4.        cadena1 db 'primero',0
  5.        cadena2 db 'segundo',0
  6.  
  7. .code
  8. start:
  9.        push cadena2
  10.        push cadena1
  11.  
  12.        call Msgbox
  13.  
  14.        invoke MessageBoxA,0,"Sali del proceso",0,0
  15.  
  16.        ret
  17.  
  18.        Msgbox:
  19.             pop eax ; dirección de retorno
  20.  
  21.             pop ecx ;primer parametro
  22.             pop edx ;segundo parametro
  23.  
  24.             push eax
  25.             invoke MessageBoxA,0,edx,ecx,0
  26.             pop eax
  27.  
  28.  
  29.             jmp eax ; retornamos
  30. .end start        


Aunque con las macros de las funciones y tal creo qeu variaria un poco.

saludos.
1010  Programación / ASM / Re: Salto de línea (fasm16) y algo mas je en: 23 Agosto 2011, 13:40 pm
Código
  1. org     100h
  2.  
  3. MOV      AH,9
  4. MOV      DX,Texto
  5. INT       21h             ;Muestro "Hola mundo!"
  6. MOV      AH,1            ;Espero el ingreso de una tecla
  7. INT        21H
  8. INT        20h
  9.  
  10. Texto db 'Hola mundo!',10,13,'Presione una tecla para continuar.',24h
  11.  

Páginas: 1 ... 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 [101] 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 ... 123
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines