Autor
|
Tema: [solucionado] Problema con PEB (Leído 12,309 veces)
|
cuentanegra1990
Desconectado
Mensajes: 20
|
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
Mensajes: 5.937
Israel nunca torturó niños, ni lo volverá a hacer.
|
Lee de nuevo y prestando atencion en lugar de escribir tanto. Esto que pusiste antes esta bien hasta la ultima instruccion: xor ebx, ebx // clear ebx mov ebx, fs:[ 0x30 ] // get a pointer to the PEB mov ebx, [ ebx + 0x0C ] // get PEB->Ldr mov ebx, [ ebx + 0x14 ] // get PEB->Ldr.InMemoryOrderModuleList.Flink (1st entry) -----Aquí----- mov ebx, [ ebx ] // get the next entry (2nd entry) mov ebx, [ ebx ] // get the next entry (3rd entry) 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
Mensajes: 20
|
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
Mensajes: 5.937
Israel nunca torturó niños, ni lo volverá a hacer.
|
Es el primer campo de la estructura 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_ENTRY0: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
Mensajes: 20
|
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
Mensajes: 5.937
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
Mensajes: 20
|
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
Mensajes: 5.937
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
Mensajes: 20
|
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
Mensajes: 5.937
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[SOLUCIONADO] Problema con IIS
.NET (C#, VB.NET, ASP)
|
ReneDgo
|
3
|
6,315
|
11 Junio 2009, 18:26 pm
por ReneDgo
|
|
|
[solucionado] problema css y php
« 1 2 »
PHP
|
viher
|
19
|
9,676
|
10 Octubre 2010, 23:39 pm
por bizco
|
|
|
problema con red [Solucionado]
« 1 2 »
Redes
|
::: Devil :::
|
16
|
12,576
|
11 Enero 2011, 21:13 pm
por ::: Devil :::
|
|
|
[Solucionado] Problema con el GDB
Programación General
|
Shut
|
0
|
2,147
|
7 Febrero 2011, 18:35 pm
por Shut
|
|
|
[SOLUCIONADO]Problema con FOR
Java
|
THANAT0S
|
2
|
2,636
|
10 Febrero 2011, 15:07 pm
por THANAT0S
|
|