Mostrar librerias cargadas en programa

Iniciado por Vaagish, 24 Abril 2014, 02:35 AM

0 Miembros y 2 Visitantes están viendo este tema.

Vaagish

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 (asm) [Seleccionar]
.386
.model flat, stdcall
option casemap:none
assume fs: nothing

include windows.inc
include masm32rt.inc
includelib masm32rt.lib

ObtenerModulos PROTO

.code
start:

invoke ObtenerModulos
inkey "pause"

ObtenerModulos proc

push 30h
pop esi
lodsd fs:[esi]
mov eax, [eax + 0Ch]
lea eax, [eax + 0Ch]
NextModule:
assume eax: ptr LIST_ENTRY
mov eax, [eax].Flink
assume eax: nothing
mov ebx, [eax + 30h]

cmp ebx, 0
je Exit

push eax
print str$(ebx),13,10
pop eax

jmp NextModule

Exit:
ret

ObtenerModulos endp

end start


Saludos!!

cpu2

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 (asm) [Seleccionar]
.ObtenerModulos proc

push 30h
pop esi
lodsd fs:[esi]


No es mejor cargar la direccion directamente?

Código (asm) [Seleccionar]
movl %fs:0x30, %eax

; supongo que en intel sera asi

mov eax, fs:[30h]


Un saludo.

Vaagish

Citar
Código (asm) [Seleccionar]
movl %fs:0x30, %eax

; supongo que en intel sera asi

mov eax, fs:[30h]

Efectivamente, funciona perfecto en intel..

CitarNo 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!

Eternal Idol

#3
Sera un problema con esas macros, proba con MessageBoxW.
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

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

Código (asm) [Seleccionar]
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]

CitarSera un problema con esas macros, proba con MessageBoxW.

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

Gracias! Saludos!

Eternal Idol

#5
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 (asm) [Seleccionar]
mov eax, fs:[30h]
mov eax, [eax + 0Ch]
lea eax, [eax + 0Ch]
mov eax, [eax]
mov ebx, [eax + 30h]
invoke MessageBoxW, 0, ebx, ebx, 0
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

CitarSera un problema con esas macros, proba con MessageBoxW.

Si señor.. ahi si que funciona!

Código (asm) [Seleccionar]
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!

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

Citarojo 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?

Eternal Idol

Cita de: Vaagish en 24 Abril 2014, 05:42 AMEl 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.

Cita de: Vaagish en 24 Abril 2014, 05:42 AMHabia 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.
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

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..  :¬¬

CitarFijate 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!

cpu2

Cita de: Vaagish en 24 Abril 2014, 05:09 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.