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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  [solucionado] Problema con PEB
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: [solucionado] Problema con PEB  (Leído 12,309 veces)
cuentanegra1990

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: Problema con PEB
« Respuesta #10 en: 20 Julio 2015, 09:24 am »

Te pido disculpas Eternal Idol enserio si te ha ofendido, pensé que al ser ensamblador podríais ayudarme.

Veras en el ejemplo que pongo en ensamblador hace uso de la lista InMemoryOrderModuleList(en el fondo me da igual utilizar esa u otra lista), esta si que tiene la dirección base en el desplazamiento de 0x010 de la tabla _LDR_DATA_TABLE_ENTRY, pero mi problema no es eso si no como enlazar la lista InMemoryOrderModuleList con la tabla _LDR_DATA_TABLE_ENTRY por medio de Flink.

Yo lo he llevado a la practica y veo que al realizar el desplazamiento que pongo ya estaría en la primera entrada si saber por que se hace uso de Flink.

pd: Como digo me da igual la lista que seleccione lo único que necesito que me digáis es si lo estoy haciendo bien ya que mi experiencia en dicha practica me lleva a pensar que al seleccionar la una lista ya me llevaría a la primera entrada ya que la lista es del tipo LIST_ENTRY y esta en su desplazamiento de 0 ya estaría apuntando directamente a _LDR_DATA_TABLE_ENTRY.

mov ebx, [ ebx + 0x14 ]    // get PEB->Ldr.InMemoryOrderModuleList.Flink (1st entry)         -----Aquí-----

En esa linea se hace un desplazamiento de 0x14 la cual selecciona la lista InMemoryOrderModuleList...Por que en el comentario pone que hace uso de Flink? y ademas dice que ya esta en la primera entrada(_LDR_DATA_TABLE_ENTRY)?

Mi problema es el uso de Flink, que como digo no se especifica en ningún lado.

Espero que se me haya entendido, por que de verdad no se si me explico bien o hago llegar a entender lo que pretendo explicar.

« Última modificación: 20 Julio 2015, 09:30 am por cuentanegra1990 » En línea

Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Problema con PEB
« Respuesta #11 en: 20 Julio 2015, 09:31 am »

Lee de nuevo y prestando atencion en lugar de escribir tanto.

Esto que pusiste antes esta bien hasta la ultima instruccion:
Código
  1.    xor ebx, ebx               // clear ebx
  2.    mov ebx, fs:[ 0x30 ]       // get a pointer to the PEB
  3.    mov ebx, [ ebx + 0x0C ]    // get PEB->Ldr
  4.    mov ebx, [ ebx + 0x14 ]    // get PEB->Ldr.InMemoryOrderModuleList.Flink (1st entry)         -----Aquí-----
  5.    mov ebx, [ ebx ]           // get the next entry (2nd entry)
  6.    mov ebx, [ ebx ]           // get the next entry (3rd entry)
  7.    mov ebx, [ ebx + 0x10 ]    // get the 3rd entries base address (kernel32.dll)

Ya te dije la razon en mi anterior mensaje, no necesitas preguntar mas nada sinceramente, tenes el codigo funcionando si solucionas ese error.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
cuentanegra1990

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: Problema con PEB
« Respuesta #12 en: 20 Julio 2015, 09:43 am »

Ami si que me da la dirección de kernel32 ya que esta en la tercera entrada:

1ª Entrada = proceso
2ª Entrada = ntdll
3ª Entrada = kernel32

Haciendo uso de la lista InMemoryOrderModuleList si que me pone en ebx la direccion de kernel32.dll

mov ebx, [ ebx + 0x10 ]    // get the 3rd entries base address (kernel32.dll)

0:000> dt nt!_LDR_DATA_TABLE_ENTRY
ntdll!_LDR_DATA_TABLE_ENTRY
   +0x000 InMemoryOrderLinks : _LIST_ENTRY
   +0x008 InInitializationOrderLinks : _LIST_ENTRY
   +0x010 DllBase          : Ptr32 Void
   +0x014 EntryPoint       : Ptr32 Void
   +0x018 SizeOfImage      : Uint4B
   +0x01C FullDllName      : _UNICODE_STRING
   +0x024 BaseDllName      : _UNICODE_STRING


Pero como digo la direccion de kernel32 la obtengo pero no contento con eso quiero saber como se obtenia y mi duda es la lina esta ya que me confunde su comentario.

mov ebx, [ ebx + 0x14 ]    // get PEB->Ldr.InMemoryOrderModuleList.Flink (1st entry)

Si con el desplazamiento 0x14 únicamente me selecciona la lista, por que ya esta en la primera entrada haciendo uso de Flink?
« Última modificación: 20 Julio 2015, 09:54 am por cuentanegra1990 » En línea

Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Problema con PEB
« Respuesta #13 en: 20 Julio 2015, 10:04 am »

Es el primer campo de la estructura  :rolleyes: No se que pretendes que haya ahi a excepcion de un FLink.

0:000> dt nt!_LDR_DATA_TABLE_ENTRY
ntdll!_LDR_DATA_TABLE_ENTRY
   +0x000 InMemoryOrderLinks : _LIST_ENTRY

0:000> dt ntdll!_LIST_ENTRY
   +0x000 Flink            : Ptr32 _LIST_ENTRY
   +0x004 Blink            : Ptr32 _LIST_ENTRY
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
cuentanegra1990

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: Problema con PEB
« Respuesta #14 en: 20 Julio 2015, 10:11 am »

Eternal Idol lo que necesito es una confirmación mas que nada,

Las 3 listas doblemente enlazadas son del tipo LIST_ENTRY y como tal estructura es como bien dices:

0:000> dt ntdll!_LIST_ENTRY
   +0x000 Flink            : Ptr32 _LIST_ENTRY
   +0x004 Blink            : Ptr32 _LIST_ENTRY

Que al seleccionar una de las listas ya estaría apuntando a _LDR_DATA_TABLE_ENTRY por que su desplazamiento es de +0x000?

Eso es lo único que necesito saber ya que de ser así ya encontraría sentido al comentario este:

mov ebx, [ ebx + 0x14 ]   // get PEB->Ldr.InMemoryOrderModuleList.Flink (1st entry)

Al hacer el desplazamiento de 0x14 por que esta haciendo un Flink? y como que llega a _LDR_DATA_TABLE_ENTRY?

Dios que mal me explico :-\
« Última modificación: 20 Julio 2015, 10:14 am por cuentanegra1990 » En línea

Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Problema con PEB
« Respuesta #15 en: 20 Julio 2015, 10:16 am »

No se cuantas veces habra que dartela. ES ASI, SI.

Al hacer el desplazamiento de 0x14 por que esta haciendo un Flink? y como que llega a _LDR_DATA_TABLE_ENTRY?

Dios que mal me explico :-\

0:000> dt ntdll!_PEB_LDR_DATA
   +0x000 Length           : Uint4B
   +0x004 Initialized      : UChar
   +0x008 SsHandle         : Ptr32 Void
  +0x00c InLoadOrderModuleList : _LIST_ENTRY
   +0x014 InMemoryOrderModuleList : _LIST_ENTRY
   +0x01c InInitializationOrderModuleList : _LIST_ENTRY
  +0x024 EntryInProgress  : Ptr32 Void
   +0x028 ShutdownInProgress : UChar
   +0x02c ShutdownThreadId : Ptr32 Void

Las benditas listas son LIST_ENTRY ... ahora mira la definicion de LIST_ENTRY y si seguis sin entenderlo creo que no hay solucion posible.
« Última modificación: 20 Julio 2015, 10:20 am por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
cuentanegra1990

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: Problema con PEB
« Respuesta #16 en: 20 Julio 2015, 10:23 am »

Era lo que me suponía, por cierto yo tras obtener la dirección del modulo kernel32 y ponerla en el registro ebx, si imprimo esa dirección junto a la que me devuelve la función GetModuleHandleA() observo que la misma dirección.
En línea

Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Problema con PEB
« Respuesta #17 en: 20 Julio 2015, 10:25 am »

Era lo que me suponía, por cierto yo tras obtener la dirección del modulo kernel32 y ponerla en el registro ebx, si imprimo esa dirección junto a la que me devuelve la función GetModuleHandleA() observo que la misma dirección.

Magia.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
cuentanegra1990

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: Problema con PEB
« Respuesta #18 en: 20 Julio 2015, 10:28 am »

Pues la gran duda que tenia ya me la has resuelto al decirme que mi suposiciones eran correctas.

Podemos dar el tema como correcto, gracias Eternal Idol!
En línea

Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Problema con PEB
« Respuesta #19 en: 20 Julio 2015, 10:30 am »

De nada.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[SOLUCIONADO] Problema con IIS
.NET (C#, VB.NET, ASP)
ReneDgo 3 6,315 Último mensaje 11 Junio 2009, 18:26 pm
por ReneDgo
[solucionado] problema css y php « 1 2 »
PHP
viher 19 9,676 Último mensaje 10 Octubre 2010, 23:39 pm
por bizco
problema con red [Solucionado] « 1 2 »
Redes
::: Devil ::: 16 12,576 Último mensaje 11 Enero 2011, 21:13 pm
por ::: Devil :::
[Solucionado] Problema con el GDB
Programación General
Shut 0 2,147 Último mensaje 7 Febrero 2011, 18:35 pm
por Shut
[SOLUCIONADO]Problema con FOR
Java
THANAT0S 2 2,636 Último mensaje 10 Febrero 2011, 15:07 pm
por THANAT0S
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines