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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Como comprobar el modo del procesador en Windows?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como comprobar el modo del procesador en Windows?  (Leído 3,819 veces)
t4r0x

Desconectado Desconectado

Mensajes: 92



Ver Perfil
Como comprobar el modo del procesador en Windows?
« en: 23 Septiembre 2014, 12:40 pm »

Buenas, segun tengo entendido en Windows x64 se puede cambiar el modo del
procesador usando un JMP FAR, asi que mi duda es si existe alguna manera de saber
el modo actual en el que se encuentra el procesador? talvez usando alguna instruccion
especial. para entederme mejor digamos que tengo mi codigo en un proceso X ahora
para ejecutar mi codigo de forma correcta necesito saber primero el modo en el que se
encuentra el procesador en ese punto porque segun tengo entendido los opcodes del
x86 son diferentes al de x64.

gracias.


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


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


Ver Perfil WWW
Re: Como comprobar el modo del procesador en Windows?
« Respuesta #1 en: 23 Septiembre 2014, 14:38 pm »

¿Y como llego tu codigo hasta ese proceso? Si abriste un HANDLE al proceso en cuestion entonces llama a IsWow64Process para saber si tenes que escribir codigo de 32 o 64 bits en el.


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
MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.465


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Como comprobar el modo del procesador en Windows?
« Respuesta #2 en: 23 Septiembre 2014, 17:02 pm »

Hola!

Si no quieres usar una API, revisa este post. En especial, la parte donde dice "In long mode the current CS determines if..."

Aqui hay otro link que puede interesarte tambien. Pregunta por Delphi, pero tambien le dan una respuesta usando asm.

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

t4r0x

Desconectado Desconectado

Mensajes: 92



Ver Perfil
Re: Como comprobar el modo del procesador en Windows?
« Respuesta #3 en: 23 Septiembre 2014, 19:10 pm »

¿Y como llego tu codigo hasta ese proceso? Si abriste un HANDLE al proceso en cuestion entonces llama a IsWow64Process para saber si tenes que escribir codigo de 32 o 64 bits en el.
Bueno no abro ninguna handle de proceso más bien un handle de hilo ya que inyecto codigo.
Pero IsWow64Process es para saber si el proceso es WOW64... estoy tomando en cuenta que el proceso
es ya WOW64 (32-bits) porque creo que sólo en proceso WOW64 es posible cambiar de procesador...


Hola!

Si no quieres usar una API, revisa este post. En especial, la parte donde dice "In long mode the current CS determines if..."

Aqui hay otro link que puede interesarte tambien. Pregunta por Delphi, pero tambien le dan una respuesta usando asm.

Saludos!
gracias, comparando directamente un valor es una manera confiable? :P
y eso de usar IsWow64Process no me funciona aqui, yo no quiero saber si el proceso es de 64bits or 32-bits, lo que quiero es saber el modo en el que se
encuentra un proceso X de 32bits en un Windows de 64bits y si es posible detectarlo mediante un codigo que seria inyectado.
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


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


Ver Perfil WWW
Re: Como comprobar el modo del procesador en Windows?
« Respuesta #4 en: 23 Septiembre 2014, 19:21 pm »

Si no quieres usar una API, revisa este post. En especial, la parte donde dice "In long mode the current CS determines if..."

Muy interesante aunque seria una solucion heuristica, investigue un poco mas por Internet y mientras Microsoft no cambie las GDT si CS es 0x33 estas en 64 bits y si es 0x23 en 32 bits (esto en una maquina de 64 bits con un Windows de 64 bits).

Aqui hay otro link que puede interesarte tambien. Pregunta por Delphi, pero tambien le dan una respuesta usando asm.

El codigo en assembly comprueba si la CPU es capaz de trabajar en 64 bits pero no es capaz de saber si el S.O. o un proceso en particular en ejecucion lo son (para eso hacen uso de la API que mencione).

Bueno no abro ninguna handle de proceso más bien un handle de hilo ya que inyecto codigo.
Pero IsWow64Process es para saber si el proceso es WOW64... estoy tomando en cuenta que el proceso
es ya WOW64 (32-bits) porque creo que sólo en proceso WOW64 es posible cambiar de procesador...

Si se puede saltando al otro selector.

gracias, comparando directamente un valor es una manera confiable? :P
y eso de usar IsWow64Process no me funciona aqui, yo no quiero saber si el proceso es de 64bits or 32-bits, lo que quiero es saber el modo en el que se
encuentra un proceso X de 32bits en un Windows de 64bits y si es posible detectarlo mediante un codigo que seria inyectado.

No al 100%. Un proceso en si puede ser de 32 o 64 bits, en todo caso los hilos pueden estar en X momento ejecutando codigo en un modo o en otro, solo podrias saberlo si los pausaras pero no veo cual es el objetivo sinceramente, si el tema es saber en que modo se ejecutara TU codigo inyectado la respuesta es muy sencilla: si es un proceso de 32 bits el hilo arrancara en 32 bits. Salvo que no crees un hilo sino que lo secuestres, en ese caso, estamos hablando de malware seguro ...
« Última modificación: 23 Septiembre 2014, 19:26 pm 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
t4r0x

Desconectado Desconectado

Mensajes: 92



Ver Perfil
Re: Como comprobar el modo del procesador en Windows?
« Respuesta #5 en: 23 Septiembre 2014, 19:29 pm »

Si se puede saltando al otro selector.
No entendi bien podrias explicarme...

No al 100%. Un proceso en si puede ser de 32 o 64 bits, en todo caso los hilos pueden estar en X momento ejecutando codigo en un modo o en otro, solo podrias saberlo si los pausaras pero no veo cual es el objetivo sinceramente, si el tema es saber en que modo se ejecutara TU codigo inyectado la respuesta es muy sencilla: si es un proceso de 32 bits el hilo arrancara en 32 bits.
Bueno en parte es curiosidad en saber en modo de ejecucion de un hilo de un proceso X ( desde mi proceso ) y tambien si es posible
estando ya mi codigo desde ese proceso X. cual seria la manera confable? :P
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


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


Ver Perfil WWW
Re: Como comprobar el modo del procesador en Windows?
« Respuesta #6 en: 23 Septiembre 2014, 19:38 pm »

No entendi bien podrias explicarme...

Como dijiste al principio con salto largo pasando de 0x23 a 0x33 y viceversa.

Bueno en parte es curiosidad en saber en modo de ejecucion de un hilo de un proceso X ( desde mi proceso ) y tambien si es posible
estando ya mi codigo desde ese proceso X. cual seria la manera confable? :P

No sirve para nada saber eso asi que no hace ninguna falta una manera mas confiable (esta implicaria poder leer la GDT), suspendes con SuspendThread y llamas a GetThreadContext .
« Última modificación: 23 Septiembre 2014, 19:43 pm 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
t4r0x

Desconectado Desconectado

Mensajes: 92



Ver Perfil
Re: Como comprobar el modo del procesador en Windows?
« Respuesta #7 en: 23 Septiembre 2014, 20:10 pm »

Como dijiste al principio con salto largo pasando de 0x23 a 0x33 y viceversa.

No sirve para nada saber eso asi que no hace ninguna falta una manera mas confiable (esta implicaria poder leer la GDT), suspendes con SuspendThread y llamas a GetThreadContext .
Bueno en parte era simplemente curiosidad... en otra parte talvez me funcione no lo se... gracias!
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Como comprobar el modo del procesador en Windows?
« Respuesta #8 en: 24 Septiembre 2014, 21:52 pm »

algunas instrucciones de x86 y x86-64 son codificadas de la misma manera, son pocas y se podria saber el modo en el cual se encuentra ejecutando el contexto sin necesidad de comparar usando push's y pop con un solo bit establecido para luego usar popf si la bandera es establecida entonces esta en 32-bits. aunque la verdad tambien me parece inutil (' modo en el que se
encuentra el procesador en ese punto')
« Última modificación: 24 Septiembre 2014, 21:53 pm por x64Core » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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