Cita de: MCKSys Argentina en 23 Septiembre 2014, 17:02 PMSi 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).
Cita de: MCKSys Argentina en 23 Septiembre 2014, 17:02 PMAqui 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).
Cita de: t4r0x en 23 Septiembre 2014, 19:10 PM
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.
Cita de: t4r0x en 23 Septiembre 2014, 19:10 PMgracias, comparando directamente un valor es una manera confiable?
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 ...