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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Mostrar librerias cargadas en programa
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 4 5 Ir Abajo Respuesta Imprimir
Autor Tema: Mostrar librerias cargadas en programa  (Leído 21,873 veces)
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Mostrar librerias cargadas en programa
« en: 24 Abril 2014, 02:35 am »

Hola! Estoy intentando mostrar todas las librerias que carga el ejecutable, pero no logro mostrar el nombre, muestra la direccion.. Que me esta faltando poner??

Código
  1. .386
  2. .model flat, stdcall
  3. option casemap:none
  4. assume fs: nothing
  5.  
  6. include windows.inc
  7. include masm32rt.inc
  8. includelib masm32rt.lib
  9.  
  10. ObtenerModulos PROTO
  11.  
  12. .code
  13. start:
  14.  
  15. invoke ObtenerModulos
  16. inkey "pause"
  17.  
  18. ObtenerModulos proc
  19.  
  20. push 30h
  21. pop esi
  22. lodsd fs:[esi]
  23. mov eax, [eax + 0Ch]
  24. lea eax, [eax + 0Ch]
  25. NextModule:
  26. assume eax: ptr LIST_ENTRY
  27. mov eax, [eax].Flink
  28. assume eax: nothing
  29. mov ebx, [eax + 30h]
  30.  
  31. cmp ebx, 0
  32. je Exit
  33.  
  34. push eax
  35. print str$(ebx),13,10
  36. pop eax
  37.  
  38. jmp NextModule
  39.  
  40. Exit:
  41. ret
  42.  
  43. ObtenerModulos endp
  44.  
  45. end start

Saludos!!


En línea

xv0


Desconectado Desconectado

Mensajes: 1.026



Ver Perfil
Re: Mostrar librerias cargadas en programa
« Respuesta #1 en: 24 Abril 2014, 04:15 am »

Bueno, vengo a ayudarte a medias, se lo que hace ese codigo, pero no conozco como funciona Windows, pero he visto papers sobre esto.

Simplemente comento porque no se ha que viene todo esto.

Código
  1. .ObtenerModulos proc
  2.  
  3. push 30h
  4. pop esi
  5. lodsd fs:[esi]
  6.  

No es mejor cargar la direccion directamente?

Código
  1. movl %fs:0x30, %eax
  2.  
  3. ; supongo que en intel sera asi
  4.  
  5. mov eax, fs:[30h]

Un saludo.


En línea

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Mostrar librerias cargadas en programa
« Respuesta #2 en: 24 Abril 2014, 05:09 am »

Citar
Código
  1. movl %fs:0x30, %eax
  2.  
  3. ; supongo que en intel sera asi
  4.  
  5. mov eax, fs:[30h]

Efectivamente, funciona perfecto en intel..

Citar
No es mejor cargar la direccion directamente?

Y al parecer, tambien tenes razon.. La verdad es que a mi me queda mucho por aprender de ASM.. y habia entendido el codigo de la primer manera que lo vi.. ahora no entiendo porque encontre esa forma que es mas rebuscada,, supongo, quizas.. porque todos los ejemplos que vi son shellcodes y cosas por el estilo,, quizas sea una forma de "camuflar" la intencion... pero la verdad, tampoco estoy seguro...

Gracias cpu2! Saludos!
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: Mostrar librerias cargadas en programa
« Respuesta #3 en: 24 Abril 2014, 05:20 am »

Sera un problema con esas macros, proba con MessageBoxW.
« Última modificación: 24 Abril 2014, 05:23 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: Mostrar librerias cargadas en programa
« Respuesta #4 en: 24 Abril 2014, 05:29 am »

Perfect! Si no me equivoco, el puntero esta en ebx,, no? Mas precisamente en esta linea:

Código
  1. mov ebx, [eax + 30h]

Yo intente cambiar el valor por la direccion,, con "[]" que si no me equivoco es como decir "la direccion de" pero no me funciono,, se quedaba colgado  :rolleyes:

Saludos!


[Edit]

Citar
Sera un problema con esas macros, proba con MessageBoxW.

Opss.. hubo un cambiazo.. pruebo con eso a ver que panza..

Gracias! Saludos!
« Última modificación: 24 Abril 2014, 05:31 am por Vaagish » 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: Mostrar librerias cargadas en programa
« Respuesta #5 en: 24 Abril 2014, 05:40 am »

Si, me equivoque como dijiste que se veia la direccion y no tengo el MASM32 instalado ahora  :silbar: Igual ya lo probe a mano, con MessageBoxW funciona, ojo que nada te asegura que sean cadenas los Buffer, por eso UNICODE_STRING tiene campos de tamaño.

Código
  1. mov eax, fs:[30h]
  2. mov eax, [eax + 0Ch]
  3. lea eax, [eax + 0Ch]
  4. mov eax, [eax]
  5. mov ebx, [eax + 30h]
  6. invoke MessageBoxW, 0, ebx, ebx, 0
« Última modificación: 24 Abril 2014, 05:44 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: Mostrar librerias cargadas en programa
« Respuesta #6 en: 24 Abril 2014, 05:42 am »

Citar
Sera un problema con esas macros, proba con MessageBoxW.

Si señor.. ahi si que funciona!

Código
  1. invoke MessageBoxW, NULL, ebx, addr Titulo, MB_OK

El titulo sale mocho porque es W, pero no importa.. paso a explicar,, estoy viendo cual es, o son las librerias que inyecta el AV cuando pone un ejecutable en la SandBox,, o cuales le inyecta porque si nomas.. y ahora viendo eso justamente,, veo que me carga la libreria "RocketDock.dll", esto quiere decir que el dock hace su chanchada tambien?? Aparte hay un monton de librerias cargadas.. propio de Win7 quizas??

Saludos!

Citar
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.

Citar
ojo que nada te asegura que sean cadenas los Buffer, por eso UNICODE_STRING tiene campos de tamaño

Habia leido algo de eso si.. entonces puedo tener caracteres extraños sin 0 al final.. nop?
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: Mostrar librerias cargadas en programa
« Respuesta #7 en: 24 Abril 2014, 05:51 am »

El titulo sale mocho porque es W, pero no importa.. paso a explicar,, estoy viendo cual es, o son las librerias que inyecta el AV cuando pone un ejecutable en la SandBox,, o cuales le inyecta porque si nomas.. y ahora viendo eso justamente,, veo que me carga la libreria "RocketDock.dll", esto quiere decir que el dock hace su chanchada tambien?? Aparte hay un monton de librerias cargadas.. propio de Win7 quizas??

¿RocketDock? No tengo eso, tal vez sea un software que instalaste:
http://www.file.net/process/rocketdock.dll.html

Fijate con el Dependency Walker cuales tenes enlazadas estaticamente en tu ejecutable y en otras DLLs que se carguen. El subsystem de Windows necesita NTDLL.dll y con alguna funcion (ejemplo MessageBoxW que carga User32.dll y esta varias mas) casi seguro cargas Kernel32.dll y esta a su vez Kernelbase.dll.

Habia leido algo de eso si.. entonces puedo tener caracteres extraños sin 0 al final.. nop?

El buffer termina en el ultimo caracter valido, despues de eso la memoria corresponde a otra cosa.
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: Mostrar librerias cargadas en programa
« Respuesta #8 en: 24 Abril 2014, 06:23 am »

Citar
¿RocketDock? No tengo eso, tal vez sea un software que instalaste:

Ha,, sii.. es un dock que tengo instalado.. pero no se que hace metiendose en otros procesos..  :¬¬

Citar
Fijate con el Dependency Walker cuales tenes enlazadas estaticamente en tu ejecutable y en otras DLLs que se carguen. El subsystem de Windows necesita NTDLL.dll y con alguna funcion (ejemplo MessageBoxW que carga User32.dll y esta varias mas) casi seguro cargas Kernel32.dll y esta a su vez Kernelbase.dll.

Es verdad,, estan esas librerias tambien que no tome en cuenta..

Gracias EI! Saludos!
En línea

xv0


Desconectado Desconectado

Mensajes: 1.026



Ver Perfil
Re: Mostrar librerias cargadas en programa
« Respuesta #9 en: 24 Abril 2014, 08:24 am »

Efectivamente, funciona perfecto en intel..

Y al parecer, tambien tenes razon.. La verdad es que a mi me queda mucho por aprender de ASM.. y habia entendido el codigo de la primer manera que lo vi.. ahora no entiendo porque encontre esa forma que es mas rebuscada,, supongo, quizas.. porque todos los ejemplos que vi son shellcodes y cosas por el estilo,, quizas sea una forma de "camuflar" la intencion... pero la verdad, tampoco estoy seguro...

Gracias cpu2! Saludos!

Si, eso esta mas enfocado para las shellcode´s, ya que asi se "juega" mas con otros opcodes y no salta a la vista tan rapido, de poder puedes usar hasta la FPU.

Pero simplemente comente, porque no tiene ningun sentido hacer todo lo que te indique antes, es hasta estupido, sin ofender.

Un saludo.

P.D: Segun estoy viendo, estas enserio con el malware.
En línea

Páginas: [1] 2 3 4 5 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines