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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware
| | |-+  Abril negro (Moderadores: Man-In-the-Middle, WHK, kub0x, fary)
| | | |-+  Proyecto Metamorph
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 [3] 4 5 6 7 8 Ir Abajo Respuesta Imprimir
Autor Tema: Proyecto Metamorph  (Leído 82,483 veces)
[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.082


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Proyecto Metamorph
« Respuesta #20 en: 8 Mayo 2009, 21:54 pm »

Supongo que a ordenar los datos te refieres a que aumente según el AlignOfFile? Bueno como lo estaba intentando con un exe en concreto, pues puse añadir 0x200 que es el AlignOfFile sinó cargaría mal las secciones. Mirando el exe con el LordPe los valores están perfectos, pero el exe no arranca  :-\.

Saludos


En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
Arkangel_0x7C5


Desconectado Desconectado

Mensajes: 361



Ver Perfil
Re: Proyecto Metamorph
« Respuesta #21 en: 8 Mayo 2009, 22:04 pm »

yo me referia a que por ejemplo:

.text
base 0x400

.data
base 0x200


idata
base 0x600

No se lo que podra ser.

Lo mirare con el EditorHex

saludos


En línea

YST


Desconectado Desconectado

Mensajes: 965


I'm you


Ver Perfil WWW
Re: Proyecto Metamorph
« Respuesta #22 en: 8 Mayo 2009, 22:06 pm »

SectionAlignment
En línea



Yo le enseñe a Kayser a usar objetos en ASM
[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.082


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Proyecto Metamorph
« Respuesta #23 en: 8 Mayo 2009, 22:10 pm »

yo me referia a que por ejemplo:

.text
base 0x400

.data
base 0x200


idata
base 0x600

No se lo que podra ser.

Lo mirare con el EditorHex

saludos

Si cierto, eso se me pasó, tendré que arreglarlo comprobando el orden de las secciones, pero con el archivo que estaba probando el orden estaba normal, osea que hay otro error.

SectionAlignment

El SectionAlignment está a 0x1000 pero las secciones del exe original ocupan 0x200 y yo añado otros 0x200 por lo que quedaría en 0x400. Sería otra cosa a arreglar pero que tampoco es el error en ésta caso.

Saludos

Edito:

El exe modificado con el code queda así:


No veo el fallo :S

Saludos
« Última modificación: 8 Mayo 2009, 22:17 pm por Hacker_Zero » En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
YST


Desconectado Desconectado

Mensajes: 965


I'm you


Ver Perfil WWW
Re: Proyecto Metamorph
« Respuesta #24 en: 8 Mayo 2009, 22:16 pm »

Conectate a msn y pasame un ejecutable que este pasado por el source o postealo acá que no tengo compilador acá ;(
En línea



Yo le enseñe a Kayser a usar objetos en ASM
[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.082


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Proyecto Metamorph
« Respuesta #25 en: 8 Mayo 2009, 22:21 pm »

[Original]
[Modificado]

Saludos
« Última modificación: 8 Mayo 2009, 22:37 pm por Hacker_Zero » En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
Arkangel_0x7C5


Desconectado Desconectado

Mensajes: 361



Ver Perfil
Re: Proyecto Metamorph
« Respuesta #26 en: 8 Mayo 2009, 22:32 pm »

a mi no me va ninguno, los dos son diferentes. pero no tienen modificada la tabla de secciones. esta modificada la cabecera PE.

Hay que cambiarle SizeOfRawData y PointerToRawData

Saludos
En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.082


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Proyecto Metamorph
« Respuesta #27 en: 8 Mayo 2009, 22:37 pm »

Fallo mío, eso me pasa por tener el escritorio hecho un desastre de tanta prueba

[Original]
[Modificado]

Saludos
En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Proyecto Metamorph
« Respuesta #28 en: 8 Mayo 2009, 23:46 pm »

Recuerda modificar también los Data Directories :rolleyes:

Simplemente era que habías movido la Import Table, pero no habías modificado su Virtual Address...

Para solucionarlo solo has de recorrer todos los Data Directories, y si su V.A es distinta de 0 sumale el tamaño que agregas a la sección :)

Versión Funcional Modificada:
Código:
http://www.box.net/shared/ve6o4k2yea



Por lo visto no solo hace falta eso, el PE Explorer lo modifica casi todo :huh:
Código:
09.05.2009 00:26:11 : Saving new image file: Saving started...
09.05.2009 00:26:11 : Recalculating the Section Headers...
09.05.2009 00:26:11 : Section <.idata>:  Old "VirtualAddress": 00404200h; New "VirtualAddress": 00404000h
09.05.2009 00:26:11 : Data Directory <Import Table>:  Old "VirtualAddress": 00404200h; New "VirtualAddress": 00404000h
09.05.2009 00:26:11 : New Value of "SizeOfCode": 00000600h
09.05.2009 00:26:11 : Old "SizeOfImage": 00004256h; New "SizeOfImage": 00005000h; Change in "SizeOfImage": 00000DAAh
09.05.2009 00:26:22 : Updating "SizeOfImage"... New "SizeOfImage": 00005000h
09.05.2009 00:26:22 : Backup copy of the target file saved as: C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\Copia de modMessageBox.exe.(1).bak
09.05.2009 00:26:22 : New image file saved as: C:\Documents and Settings\Administrador\Escritorio\Copia de modMessageBox.exe
« Última modificación: 9 Mayo 2009, 00:29 am por Karcrack » En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.082


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Proyecto Metamorph
« Respuesta #29 en: 9 Mayo 2009, 00:55 am »

Dejando el source así con ese exe en concreto funciona:

Código
  1. HANDLE hFile=CreateFile(nFileName,GENERIC_READ+GENERIC_WRITE,FILE_SHARE_WRITE+FILE_SHARE_READ,0,OPEN_EXISTING,0,0);
  2. if(hFile == INVALID_HANDLE_VALUE)
  3. {
  4. return NULL;
  5. }
  6.  
  7. DWORD szFile=GetFileSize(hFile,0);
  8. if(szFile == INVALID_FILE_SIZE)
  9. {
  10. return NULL;
  11. }
  12.  
  13. szFile=szFile+0x200;
  14.  
  15. HANDLE hCFM=CreateFileMapping(hFile,0,PAGE_READWRITE,0,szFile,0);
  16. if(hCFM==NULL)
  17. {
  18. return NULL;
  19. }
  20.  
  21. CloseHandle(hFile);
  22.  
  23. LPSTR hMVOF=(LPSTR)malloc(szFile);
  24. hMVOF=(LPSTR)MapViewOfFile(hCFM,FILE_MAP_ALL_ACCESS,0,0,0);
  25. if(hMVOF==NULL)
  26. {
  27. return NULL;
  28. }
  29.  
  30. CloseHandle(hCFM);
  31.  
  32. PIMAGE_DOS_HEADER IDH;
  33. PIMAGE_NT_HEADERS INTH;
  34. PIMAGE_SECTION_HEADER ISH;
  35.  
  36. IDH=(PIMAGE_DOS_HEADER)&hMVOF[0];
  37. INTH=(PIMAGE_NT_HEADERS)&hMVOF[IDH->e_lfanew];
  38.  
  39. DWORD ExecutableSection=GetExecutableSection(hMVOF);
  40.  
  41. ISH=(PIMAGE_SECTION_HEADER)&hMVOF[IDH->e_lfanew+sizeof(IMAGE_NT_HEADERS)+sizeof(IMAGE_SECTION_HEADER)*ExecutableSection];
  42.  
  43. LPSTR Temp=(LPSTR)malloc(szFile-(ISH->PointerToRawData+ISH->SizeOfRawData+0x200));
  44. CopyMemory(&Temp[0],&hMVOF[ISH->PointerToRawData+ISH->SizeOfRawData],szFile-(ISH->PointerToRawData+ISH->SizeOfRawData+0x200));
  45.  
  46. CopyMemory(&hMVOF[ISH->PointerToRawData+ISH->SizeOfRawData+0x200],&Temp[0],szFile-(ISH->PointerToRawData+ISH->SizeOfRawData+0x200));
  47.  
  48. BYTE zero=0x00;
  49.  
  50. for(DWORD i=0;i<0x200;i++)
  51. {
  52. CopyMemory(&hMVOF[ISH->PointerToRawData+ISH->SizeOfRawData+i],&zero,1);
  53. }
  54.  
  55. ISH->SizeOfRawData=ISH->SizeOfRawData+0x200;
  56. ISH->Misc.VirtualSize=ISH->Misc.VirtualSize+0x200;
  57. //INTH->OptionalHeader.SizeOfImage=INTH->OptionalHeader.SizeOfImage+0x200;
  58.  
  59. //PIMAGE_DATA_DIRECTORY IDD;
  60. //PIMAGE_OPTIONAL_HEADER IOH;
  61.  
  62. //IOH=&INTH->OptionalHeader ;
  63. //IDD=IOH->DataDirectory;
  64. //IDD++;
  65. //IDD->VirtualAddress=IDD->VirtualAddress+0x200;
  66.  
  67. for(i=0;i<=INTH->FileHeader.NumberOfSections;i++)
  68. {
  69. ExecutableSection=GetExecutableSection(hMVOF);
  70. ISH=(PIMAGE_SECTION_HEADER)&hMVOF[IDH->e_lfanew+sizeof(IMAGE_NT_HEADERS)+sizeof(IMAGE_SECTION_HEADER)*(ExecutableSection+1+i)];
  71. ISH->PointerToRawData=ISH->PointerToRawData+0x200;
  72. //ISH->VirtualAddress=ISH->VirtualAddress+0x200;
  73. }
  74.  
  75. return hMVOF;
  76.  
  77. }
  78.  

Pero no entiendo un carajo, porqué así funciona? se supone que así está mal  :P. Osea el SizeOfImage original es 5000 entonces al aumentar 200 pos lo aumente 200, pero entonces peta (Creo que ya sé por que es  :xD). El virtual addres de la sección que viene después igual  :o. Y el puntero a la tabla de importaciones también, para que funcione hay que dejarlo como estaba, pero si lo moví 200 posiciones, que pasa? Lo único que se me ocurre es que funcione pero esté mal, que esos 0x200 que agregué no se carguen en memoria entonces las direcciones coinciden  :huh:.

Saludos
En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
Páginas: 1 2 [3] 4 5 6 7 8 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PROYECTO
Diseño Gráfico
kåhjî£ 1 2,603 Último mensaje 30 Julio 2004, 08:00 am
por Morris
Proyecto php « 1 2 ... 11 12 »
Sugerencias y dudas sobre el Foro
programatrix 111 26,981 Último mensaje 18 Septiembre 2005, 12:27 pm
por programatrix
duda con Cactus metamorph
Programación Visual Basic
[SMT] 5 3,166 Último mensaje 24 Junio 2008, 22:34 pm
por Xerok1!
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines