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


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  Problema al desplazar el EOF
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema al desplazar el EOF  (Leído 1,798 veces)
Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Problema al desplazar el EOF
« en: 29 Agosto 2013, 20:40 pm »

Bueno... estoy haciendo un crypter, como dije en mi anterior post, e intento añadir una sección al ejecutable para añadir una rutina que añadiré como una TLS Callback function.

Al crear una nueva sección, hago que apunte al final del ejecutable indicado por el PointerToRawData+SizeOfRawData de la última sección, ese será el valor del PointerToRawData de mi nueva sección. Claro que, ahí puede haber un EOF Data, así que miramos si lo hay y si lo hay lo copiamos tantos bytes más abajo como indique el SizeOfRawData de mi nueva sección. ¿Hasta aquí va bien?

De acuerdo, pues aquí dejo un fragmento de código en ensamblador que hace lo dicho:

Código:
mov      esi, [ebx].PointerToRawData
               add      esi, [ebx].SizeOfRawData
               mov      [eax].PointerToRawData, esi
              
    
               .IF      dwFileSize > esi
                    push    eax
                    mov     ecx, dwFileSize
                    sub     ecx, esi
                    mov     dwEOFDataSize,ecx
                    add     esi,lpMappedView
                    mov     lpEOFData,esi
                    
                    invoke  GlobalAlloc,GPTR,dwEOFDataSize
                    mov     lpEOFBuffer, eax
                    invoke  RtlMoveMemory,eax,lpEOFData,dwEOFDataSize
                    pop     eax
                    push    eax
                    mov     ecx,[eax].SizeOfRawData
                    add     dword ptr[lpEOFData],ecx
                    invoke  RtlMoveMemory,lpEOFData,lpEOFBuffer,dwEOFDataSize
                    pop     eax    
               .ENDIF


EAX y EBX son punteros a estructuras IMAGE_SECTION_HEADER

EAX apunta a la estructura de la nueva sección, la sección que estamos creando.
EBX apunta a la estructura de la anterior sección, lo que por el momento es la última, la que tiene un PointerToRawOffset mayor.

Por lo demás, el dwFileSize es el tamaño total del fichero obtenido con GetFileSize() y lpMappedFile es la dirección de inicio de la vista del fichero de mapeo.

EDIT:

Solucionado. Da una rabia estarte horas por tonterías...


« Última modificación: 30 Agosto 2013, 01:44 am por Binary_Death » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Desplazar form « 1 2 »
Programación Visual Basic
yeikos 10 4,347 Último mensaje 6 Junio 2006, 20:40 pm
por jocker
desplazar form estilo msn
Programación Visual Basic
vivachapas 7 2,679 Último mensaje 2 Mayo 2007, 00:15 am
por vivachapas
desplazar listview
Programación Visual Basic
juanjoxx 2 1,876 Último mensaje 20 Marzo 2008, 09:16 am
por juanjoxx
Nueva técnica permite desplazar la información en nube a un universo externo ...
Noticias
wolfbcn 0 1,489 Último mensaje 27 Septiembre 2012, 14:07 pm
por wolfbcn
Ubuntu va a desplazar a Windows en China
Noticias
wolfbcn 2 2,010 Último mensaje 23 Marzo 2013, 00:50 am
por OmarHack
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines