elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
14 Febrero 2012, 09:10  

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  diferencia entre OpenProcess, NtOpenProcess, ZwOpenProcess?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: diferencia entre OpenProcess, NtOpenProcess, ZwOpenProcess?  (Leído 1,217 veces)
no se nada :(

Desconectado Desconectado

Mensajes: 7


Ver Perfil
diferencia entre OpenProcess, NtOpenProcess, ZwOpenProcess?
« en: 12 Marzo 2010, 01:39 »

ola compañeros.

pues esa es mi duda  :huh: se que ZwOpenProcess es de kernel mode

OpenProcess y NtOpenProcess son modo usuario...

pero:

¿Qué beneficios tiene ZwOpenProcess en compación a las otras?

¿Porqué OpenProcess y NtOpenProcess son user mode? ¿porqué no solo hay una?

esperando que alguien me pueda aclarar estas dudas, me despido  :)

edit:

bueno me entere de que openprocess llama a NtOpenProcess pero ahora me pregunto ¿para que hace eso  :xD ?





« Última modificación: 12 Marzo 2010, 06:42 por no se nada :( » En línea
Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 4.241


Clarin miente, TN opera y los giles regurgitan.


Ver Perfil WWW
Re: diferencia entre OpenProcess, NtOpenProcess, ZwOpenProcess?
« Respuesta #1 en: 12 Marzo 2010, 09:08 »

La unica de esas funciones que es exclusivamente de modo Usuario es OpenProcess, en este modo las otras dos son identicas (una es un alias de la otra) y lo que hacen es pasar a modo Kernel.

Por ejemplo en XP en mi maquina se usa sysenter y el servicio ZwOpenProcess es el numero 7Ah (se pasa en eax):

Código:
0:000> u ntdll!ntopenprocess
ntdll!ZwOpenProcess:
7c91d5fe b87a000000      mov     eax,7Ah
7c91d603 ba0003fe7f      mov     edx,offset SharedUserData!SystemCallStub (7ffe0300)
7c91d608 ff12            call    dword ptr [edx]
7c91d60a c21000          ret     10h

0:000> u poi(SharedUserData!SystemCallStub)
ntdll!KiFastSystemCall:
7c91e510 8bd4            mov     edx,esp
7c91e512 0f34            sysenter
ntdll!KiFastSystemCallRet:
7c91e514 c3              ret

Windows esta diseñado de manera que se puedan crear diferentes subsystems, uno de ellos es el de Win32 que tiene librerias como Kernel32.dll, que terminan llamando a la API nativa (NTDLL.dll).

En modo Kernel la diferencia fundamental entre estas dos esta dada por el PreviousMode, para hacerla corta los modulos de modo Kernel (drivers) tienen que usar las funciones Zw.


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.
no se nada :(

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: diferencia entre OpenProcess, NtOpenProcess, ZwOpenProcess?
« Respuesta #2 en: 12 Marzo 2010, 15:25 »

no entiendo de asm pero con eso quisiste decir que ZwOpenProcess y NtOpenProcess apuntan al mismo lugar  :huh:

entonces no hay ninguna ventaja si uso NtOpenProcess en vez de OpenProcess ?

perdon por ser ta duro pero me cuesta entender estas cosas  :laugh:
En línea
Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 4.241


Clarin miente, TN opera y los giles regurgitan.


Ver Perfil WWW
Re: diferencia entre OpenProcess, NtOpenProcess, ZwOpenProcess?
« Respuesta #3 en: 12 Marzo 2010, 15:31 »

no entiendo de asm pero con eso quisiste decir que ZwOpenProcess y NtOpenProcess apuntan al mismo lugar  :huh:

No hace falta el codigo para eso realmente, como te decia una es un alias de la otra, lo podes comprobar usando GetProcAddress (las 2 devuelven la misma direccion) o el Dependency Walker (las 2 tienen el mismo offset).

entonces no hay ninguna ventaja si uso NtOpenProcess en vez de OpenProcess ?

Depende que quieras hacer exactamente ... normalmente la respuesta es no.
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.
no se nada :(

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: diferencia entre OpenProcess, NtOpenProcess, ZwOpenProcess?
« Respuesta #4 en: 12 Marzo 2010, 15:42 »

Cita de: Eternal Idol link=topic=287304.msg1421177#msg1421177
Depende que quieras hacer exactamente ... normalmente la respuesta es no.
[/quote

como en que caso sería una ventaja  :xD
En línea
Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 4.241


Clarin miente, TN opera y los giles regurgitan.


Ver Perfil WWW
Re: diferencia entre OpenProcess, NtOpenProcess, ZwOpenProcess?
« Respuesta #5 en: 12 Marzo 2010, 16:11 »

Solo se me ocurre que algun software este interceptando OpenProcess y no NtOpenProcess ...
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.
no se nada :(

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: diferencia entre OpenProcess, NtOpenProcess, ZwOpenProcess?
« Respuesta #6 en: 12 Marzo 2010, 16:25 »

vale ya estoy entendiendo  :)

una última cosa.. estuve leyendo sobre el previous mode pero como estaba en ingles me costo un poco entenderlo  :xD .. el previous mode distingue si se esta usando user mode o kernel mode?

gracias por la ayuda Eternal Idol  ;)
En línea
Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 4.241


Clarin miente, TN opera y los giles regurgitan.


Ver Perfil WWW
Re: diferencia entre OpenProcess, NtOpenProcess, ZwOpenProcess?
« Respuesta #7 en: 12 Marzo 2010, 16:33 »

Indica si la llamada se origino en modo Usuario o Kernel, en el primer caso se comprobaran los parametros y el segundo no.
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.
no se nada :(

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: diferencia entre OpenProcess, NtOpenProcess, ZwOpenProcess?
« Respuesta #8 en: 12 Marzo 2010, 16:48 »

ya quedo todo aclarado por ahora  :o

gracias  ;D
En línea
Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 4.241


Clarin miente, TN opera y los giles regurgitan.


Ver Perfil WWW
Re: diferencia entre OpenProcess, NtOpenProcess, ZwOpenProcess?
« Respuesta #9 en: 12 Marzo 2010, 16:49 »

De nadas  ::)
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.
Zzombi

Desconectado Desconectado

Mensajes: 171



Ver Perfil WWW
Re: diferencia entre OpenProcess, NtOpenProcess, ZwOpenProcess?
« Respuesta #10 en: 13 Marzo 2010, 02:25 »

La unica de esas funciones que es exclusivamente de modo Usuario es OpenProcess, en este modo las otras dos son identicas (una es un alias de la otra) y lo que hacen es pasar a modo Kernel.

Por ejemplo en XP en mi maquina se usa sysenter y el servicio ZwOpenProcess es el numero 7Ah (se pasa en eax):

Código:
0:000> u ntdll!ntopenprocess
ntdll!ZwOpenProcess:
7c91d5fe b87a000000      mov     eax,7Ah
7c91d603 ba0003fe7f      mov     edx,offset SharedUserData!SystemCallStub (7ffe0300)
7c91d608 ff12            call    dword ptr [edx]
7c91d60a c21000          ret     10h

0:000> u poi(SharedUserData!SystemCallStub)
ntdll!KiFastSystemCall:
7c91e510 8bd4            mov     edx,esp
7c91e512 0f34            sysenter
ntdll!KiFastSystemCallRet:
7c91e514 c3              ret

Windows esta diseñado de manera que se puedan crear diferentes subsystems, uno de ellos es el de Win32 que tiene librerias como Kernel32.dll, que terminan llamando a la API nativa (NTDLL.dll).

En modo Kernel la diferencia fundamental entre estas dos esta dada por el PreviousMode, para hacerla corta los modulos de modo Kernel (drivers) tienen que usar las funciones Zw.

también te lo agradezco  :xD no tenía idea sobre esto

pero que pasa si es un driver llamo a una funcion del tipo Nt en vez de una con Zw?
si apuntan al mismo lugar... no daría lo mismo llamar una funcion nt o una zw ?

Edit:

ya entendi todo el asunto, perdón por preguntar inutilmente  :rolleyes:
« Última modificación: 13 Marzo 2010, 04:21 por Zzombi » En línea
Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 4.241


Clarin miente, TN opera y los giles regurgitan.


Ver Perfil WWW
Re: diferencia entre OpenProcess, NtOpenProcess, ZwOpenProcess?
« Respuesta #11 en: 13 Marzo 2010, 10:22 »

Eso es en modo Usuario, en modo Kernel son dos funciones diferentes:

Código:
lkd> u nt!ntopenprocess
nt!NtOpenProcess:
80581702 68c4000000      push    0C4h
80581707 68e8424f80      push    offset nt!ObWatchHandles+0x25c (804f42e8)
8058170c e87217f6ff      call    nt!_SEH_prolog (804e2e83)
80581711 33f6            xor     esi,esi
80581713 8975d4          mov     dword ptr [ebp-2Ch],esi
80581716 33c0            xor     eax,eax
80581718 8d7dd8          lea     edi,[ebp-28h]
8058171b ab              stos    dword ptr es:[edi]
lkd> u nt!zwopenprocess
nt!ZwOpenProcess:
804e3c0a b87a000000      mov     eax,7Ah
804e3c0f 8d542404        lea     edx,[esp+4]
804e3c13 9c              pushfd
804e3c14 6a08            push    8
804e3c16 e8b69bffff      call    nt!KiSystemService (804dd7d1)
804e3c1b c21000          ret     10h
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] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[MASM][UserMode]Hook OpenProcess
Análisis y Diseño de Malware
The Swash 8 1,442 Último mensaje 16 Julio 2011, 09:39
por SkaPuti
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines