Detectar un SO de 64bits

  • 13 Respuestas
  • 6521 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Arkangel

  • *
  • Underc0der
  • Mensajes: 15
  • Actividad:
    0%
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Detectar un SO de 64bits

  • en: Julio 05, 2013, 03:18:46 pm
Bueno, se me ocurrio hablando con Zero una manera de detectar desde 32bits si el SO es de 64 y se me ocurrio esto para solucionar su problema
Gracias Zero por preguntar

Código: (cpp) [Seleccionar]
bool __declspec(naked) is64BitOS(){
    __asm{
        mov eax,fs:[0xC0]
        test eax,eax
        je _32bits
        mov eax,1
      _32bits:
        ret
    }
}

Saludos
« Última modificación: Julio 05, 2013, 03:32:49 pm por Arkangel »

Desconectado The Swash

  • *
  • Underc0der
  • Mensajes: 18
  • Actividad:
    0%
  • Actividad:
    0%
  • Reputación 0
  • Return to reversing!
  • Skype: [email protected]
    • Ver Perfil
    • Email

Re:Detectar un SO de 64bits

  • en: Julio 05, 2013, 03:27:09 pm
A dudas interesantes, soluciones interesantes :)
Muy bueno si señor :P

Saludos.

Desconectado Karcrack

  • *
  • Underc0der
  • Mensajes: 87
  • Actividad:
    0%
  • Actividad:
    0%
  • Reputación 0
  • Se siente observado ¬¬'
    • Ver Perfil

Re:Detectar un SO de 64bits

  • en: Julio 05, 2013, 07:17:33 pm
Me he tomado la libertad de minimizar el código. Soy un maniático  :P
Código: (asm) [Seleccionar]
     xor   eax, eax
     cdq
     xor   edx, [FS:0xC0]
     setnz al
     ret   

Gracias por compartir ;)
I code for $$$.

(PGP ID 0xCC050E77)
ASM, C, C++, VB6... skilled [malware] developer

Desconectado -Nox-

  • *
  • Underc0der
  • Mensajes: 13
  • Actividad:
    0%
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Re:Detectar un SO de 64bits

  • en: Julio 06, 2013, 01:04:27 am

Me ha gustado, muy bueno eh!

Saludos,
Nox.

Desconectado Vermillion

  • *
  • Underc0der
  • Mensajes: 3
  • Actividad:
    0%
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Re:Detectar un SO de 64bits

  • en: Julio 06, 2013, 05:51:38 pm
El [FS:0xC0] se puede hacer más pequeño por ser IMM32. No encontré ningún modo más bonito :

Código: (asm) [Seleccionar]
     xor   eax, eax
     cdq
     mov   al, -40
     xor   edx, [FS:eax]
     setnz al
     ret   

Excelente aporte :D
« Última modificación: Julio 06, 2013, 06:56:28 pm por Vermillion »

Desconectado [Zero]

  • *
  • Underc0der
  • Mensajes: 7
  • Actividad:
    0%
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • H-Sec.org
    • Email

Re:Detectar un SO de 64bits

  • en: Julio 06, 2013, 07:15:12 pm
Código: (asm) [Seleccionar]
MOV EAX,DWORD PTR FS:[0C0h]
TEST EAX,EAX
SETNE AL
RETN

Mismos bytes pero menos lineas jaja.

Saludos
« Última modificación: Julio 07, 2013, 12:41:51 am por [Zero] »
   
 H-Sec.org

Desconectado Karcrack

  • *
  • Underc0der
  • Mensajes: 87
  • Actividad:
    0%
  • Actividad:
    0%
  • Reputación 0
  • Se siente observado ¬¬'
    • Ver Perfil

Re:Detectar un SO de 64bits

  • en: Julio 07, 2013, 06:36:36 pm
Muy bueno Vermillion, yo probé usando fs[eax+$C0] pero al ser mayor que $7F se seguían gastando 4 bytes para el inmediato ^^ Muy listo usando al :D
I code for $$$.

(PGP ID 0xCC050E77)
ASM, C, C++, VB6... skilled [malware] developer

Desconectado [L]ord [R]NA

  • *
  • Underc0der
  • Mensajes: 89
  • Actividad:
    0%
  • Actividad:
    0%
  • Reputación 0
  • H-Sec
  • Skype: lordrna
  • Twitter: lordrna
    • Ver Perfil

Re:Detectar un SO de 64bits

  • en: Julio 08, 2013, 12:01:23 am
Menos bytes... En C/C++ todo valor diferente de 0 es true :P

Código: (asm) [Seleccionar]
MOV EAX,DWORD PTR FS:[0C0h]
RETN

Desconectado [Zero]

  • *
  • Underc0der
  • Mensajes: 7
  • Actividad:
    0%
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • H-Sec.org
    • Email

Re:Detectar un SO de 64bits

  • en: Julio 08, 2013, 01:13:02 am
Menos bytes... En C/C++ todo valor diferente de 0 es true :P

Código: (asm) [Seleccionar]
MOV EAX,DWORD PTR FS:[0C0h]
RETN

Eso es trampa :P .
   
 H-Sec.org

Desconectado [L]ord [R]NA

  • *
  • Underc0der
  • Mensajes: 89
  • Actividad:
    0%
  • Actividad:
    0%
  • Reputación 0
  • H-Sec
  • Skype: lordrna
  • Twitter: lordrna
    • Ver Perfil

Re:Detectar un SO de 64bits

  • en: Julio 08, 2013, 10:18:51 am
Trampa... :P Claro que no. Es legal.

Desconectado Karcrack

  • *
  • Underc0der
  • Mensajes: 87
  • Actividad:
    0%
  • Actividad:
    0%
  • Reputación 0
  • Se siente observado ¬¬'
    • Ver Perfil

Re:Detectar un SO de 64bits

  • en: Julio 08, 2013, 11:04:04 am
No sólo es trampa sino que no funcionará. Haciendo esto:
Código: (cpp) [Seleccionar]
bool __declspec(naked) is64(){
__asm{
mov eax, fs:[0xC0]
ret
}
}
El compilador solo comprobará al para ver el valor booleano.

Haciendo esto sí que serviría:
Código: (cpp) [Seleccionar]
bool Is64(){
return __readfsdword(0xC0);
}
Aunque salta un warning diciendo que habrá pérdidas de rendimiento al hacer el casting forzoso.

Saludos ^^
I code for $$$.

(PGP ID 0xCC050E77)
ASM, C, C++, VB6... skilled [malware] developer

Desconectado [L]ord [R]NA

  • *
  • Underc0der
  • Mensajes: 89
  • Actividad:
    0%
  • Actividad:
    0%
  • Reputación 0
  • H-Sec
  • Skype: lordrna
  • Twitter: lordrna
    • Ver Perfil

Re:Detectar un SO de 64bits

  • en: Julio 09, 2013, 11:37:31 am
-_-... lee las etiquetas. Dice ASM

Desconectado Pr0ph3t

  • *
  • Underc0der
  • Mensajes: 443
  • Actividad:
    0%
  • Actividad:
    0%
  • Reputación 0
  • © Underc0de Team
  • Skype: thebrowfc
    • Ver Perfil

Re:Detectar un SO de 64bits

  • en: Julio 09, 2013, 11:44:31 am
Muy bueno, a ver si haceis un taller de ASM  :P
Twitter: @The_Pr0ph3t
[email protected]

Desconectado [L]ord [R]NA

  • *
  • Underc0der
  • Mensajes: 89
  • Actividad:
    0%
  • Actividad:
    0%
  • Reputación 0
  • H-Sec
  • Skype: lordrna
  • Twitter: lordrna
    • Ver Perfil

Re:Detectar un SO de 64bits

  • en: Julio 10, 2013, 12:32:29 am
Si los juntas a todos y los pones a trabajar a tiempo completo, en 15 años tendras el tuto.