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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Problema con el PEB
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con el PEB  (Leído 2,115 veces)
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Problema con el PEB
« en: 4 Julio 2014, 02:17 am »

Buenas!
Tengo el siguiente problema, estoy leyendo el peb, necesito que cada vuelta que da ese bucle, ebx se posicione sobre el nombre de la funcion exportada. Aclaro que la primer vuelta que da, ebx es correcto, apunta a ActivateActCtx cuando le sumo la direccion de kernel32 que tengo en eax

Código
  1. ; ********************************************
  2. ; Hasta aca, en eax tengo a kernel32.dll
  3. ; en ebx tengo la ExportTable
  4. ; ********************************************
  5.  
  6. mov edx, -1
  7.  
  8. bucle: ; Bucle para comprobar si es la función buscada
  9.  
  10. inc edx ; Para saber en que posicion está la funcion
  11.  
  12. mov ebx, [ebx + edx * 4] ; Direcion del nombre de la funcion buscada + Siguiente funcion
  13.  
  14. add ebx, eax ; RVA->VA | add eax, Kernel32Dir
  15. mov esi, ebx ; Mover a esi la funcion actual
  16.  
  17. lea edi, [FuncionBuscada] ; Mover a edi la funcion buscada
  18. mov ecx, 0Eh ; [FuncionBuscadaLen] Necesario cargarla en cada vuelta, porque se decrementa
  19.  
  20. repe cmpsb       ; Compara esi y edi, con una longitud de ecx
  21.  
  22. jnz bucle

Codigo ensamblable:

Código
  1. .386
  2. .model flat, stdcall
  3. option casemap:none
  4.  
  5. include windows.inc
  6. include kernel32.inc
  7. includelib kernel32.lib
  8.  
  9. .data
  10. FuncionBuscada db "GetProcAddress",0
  11. .code
  12.  
  13. inicio:
  14.  
  15. ; *******************************
  16. ; Obtener Kernel32.dll
  17. ; *******************************
  18. assume fs: nothing
  19. mov eax, fs:[30h]
  20. mov eax, [eax + 0Ch]
  21. lea eax, [eax + 0Ch]
  22. NextModule:
  23. mov eax, [eax]
  24. mov ebx, [eax + 30h]
  25. cmp byte ptr[ebx + 6*2], '3'
  26. jne NextModule
  27. mov ebx, [eax + 18h]
  28. mov eax, ebx ; EAX guarda el valor de kernel32.dll
  29. ; *******************************
  30.  
  31. ; ********************************
  32. ; Obtener direccion de funcion
  33. ; ********************************
  34.  
  35. add ebx, [ebx + 3Ch]
  36. add ebx, 78h
  37. mov ebx, [ebx]
  38. add ebx, eax
  39.  
  40. ; push ebx ; Guardamos el valor [ET] / Antes: mov [ET], eax
  41.  
  42. add ebx, 20h
  43. mov ebx, [ebx]
  44. add ebx, eax
  45.  
  46. ; pop ebx ; Recuperamos el valor de [ET]
  47.  
  48.  
  49. ; ***********************************************************************
  50. ; Hasta aca, en eax tengo a kernel32.dll, en ebx tengo la ExportTable
  51. ; ***********************************************************************
  52.  
  53. mov edx, -1
  54.  
  55. bucle: ; Bucle para comprobar si es la función buscada
  56.  
  57. inc edx ; Para saber en que posicion está la funcion
  58.  
  59. mov ebx, [ebx + edx * 4] ; Direcion del nombre de la funcion buscada + Siguiente funcion
  60.  
  61. add ebx, eax ; RVA->VA | add eax, Kernel32Dir
  62. mov esi, ebx ; Mover a esi la funcion actual
  63.  
  64. lea edi, [FuncionBuscada] ; Mover a edi la funcion buscada
  65. mov ecx, 0Eh ; [FuncionBuscadaLen] Necesario cargarla en cada vuelta, porque se decrementa
  66.  
  67. repe cmpsb       ; Compara esi y edi, con una longitud de ecx
  68.  
  69. jnz bucle
  70.  
  71. invoke ExitProcess, 0
  72. end inicio

Entiendo que el error esta en la linea 59, cuando edx vale 0, la direccion esta bien, cuando edx vale 1, la direccion salta para no se donde..

Gracias!!!


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


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


Ver Perfil WWW
Re: Problema con el PEB
« Respuesta #1 en: 4 Julio 2014, 08:39 am »

Y si, el error esta en esa linea, EBX ya no es mas un puntero a AddressOfFunctions (no a la ExportTable como dice tu comentario en el codigo) sino que apunta a la cadena de la primera funcion exportada. Con un simple push/pop EBX entre el inc EDX y el mov ESI, EBX se soluciona.


« Última modificación: 4 Julio 2014, 08:42 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
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Problema con el PEB
« Respuesta #2 en: 4 Julio 2014, 19:45 pm »

Gracias EI! Eso funciona! Pero ayer lo logre solucionar asi:

Código
  1. xor edx, edx
  2.  
  3. bucle:
  4.  
  5. inc edx
  6.  
  7. mov esi, dword ptr[ebx]
  8. add esi, eax
  9. add ebx, 4
  10.  
  11. lea edi, [FuncionBuscada]
  12. mov ecx, 0Eh
  13.  
  14. repe cmpsb
  15. jnz bucle
  16.  

Igual no estoy seguro de dejarlo asi,, pasan cosas raras cuando lo depuro.. por ejemplo, a veces no funciona el lea de la linea 11, entonces saco la sección .data y pongo a "FuncionBuscada" dentro de .code y funciona, pero donde cambie algo, deja de funcionar y tengo que volver a la sección .data..  :huh:

Creo que voy a tener que hacer otra pregunta, pero dentro de un rato.. cuando vea que no puedo..

Saludos! Gracias!

PD:
Citar
EBX ya no es mas un puntero a AddressOfFunctions (no a la ExportTable como dice tu comentario en el codigo)
Gracias por la aclaracion!  ;D

EDITO:

Ahora quedo asi:
Código
  1. mov esi, dword ptr[ebx + edx*4 ]
« Última modificación: 4 Julio 2014, 20:03 pm por Vaagish » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema BlueZScanner y problema de conexión
Hacking Mobile
Kasswed 3 6,301 Último mensaje 6 Mayo 2006, 22:04 pm
por Gospel
Problema Css o problema con el sidebar
Desarrollo Web
gaboomsk8 6 3,567 Último mensaje 27 Diciembre 2011, 21:56 pm
por gaboomsk8
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines