Red de conocimiento informático - Material del sitio web - ¿Cómo activar la vulnerabilidad aritmética de punto flotante OD usando programación en lenguaje ensamblador?

¿Cómo activar la vulnerabilidad aritmética de punto flotante OD usando programación en lenguaje ensamblador?

20/4/2007

Themida shell explota una vulnerabilidad de instrucción de punto flotante no revelada en OllyDBG para bloquear OllyDBG

Themida/WinLicense ha estado trabajando duro recientemente

Desde que Themida/WinLicense.V1.1.1.0 abandonó el controlador, el Anti de Themida/WinLicense parece haber desaparecido de repente.

Sin embargo, desde Themida/WinLicense.V1.8.0.0, Oreans Technologies ha agregado la detección HeapMagic y este método Anti aún no se ha hecho público.

Themida/WinLicense.V1.8.2.0, Oreans Technologies aprovechó una vulnerabilidad de instrucción de punto flotante no revelada en OllyDBG para bloquear OllyDBG.

A continuación se utiliza un ejemplo para explicar brevemente la vulnerabilidad OllyDBG explotada por Themida/WinLicense.V1.8.2.0

MorGain Structure Rapid Design Installer.V2006.10.Revison.1571

/download.htm

No encontré otros pequeños ejemplos de empaquetadores de nuevas versiones, así que tomé prestado este

Configurar OllyDBG para pausar en WinMain, cargar HiDesign.exe, OllyDBG Salió automáticamente sin ningún motivo

Configure OllyDBG para que se detenga en el punto de interrupción del sistema y se puede cargar, pero después de seguir la entrada, OllyDBG volvió a salir automáticamente

Puede utilizar Hiew y otras herramientas para observar el código EP de HiDesign

CÓDIGO:

00740014 B8 00000000 mov eax, 0

00740019 60 pushad

0074001A 0BC0 o eax, eax

0074001C 74 68 je short 00740086

0074001E E8 00000000 llamar 00740023

00740023 58 pop eax

00740024 05 53000000 agregar eax, 53

00740029 8038 E9 cmp byte ptr ds: [eax], 0E9

0074002C 75 13 jnz short 00740041

0074002E 61 popad

0074002F EB 45 jmp short 00740076

00740031 DB2D 37007400 fld tbyte ptr ds: [740037]; el valor "37007400" no es único y se puede cambiar.

00740037 FFFF

00740039 FFFF

0074003B FFFF

0074003D FFFF

0074003F 3D 40E80000 cmp eax, 0E840

00740044 0000 agregar byte ptr ds: [eax], al

00740046 58 pop eax

00740047 25 00F0FFFF y eax, FFFFF000

00740041 es en realidad:

00740041 E8 00000000 llamada 00740046

00740046 58 pop eax

00740047 25 00F0FFFF y eax, FFFFF000

Toma otra mirada al código de entrada de la versión anterior de Themida/WinLicense:

CÓDIGO:

007F8014 B8 00000000 mov eax, 0

007F8019 60 pushad

007F801A 0BC0 o eax, eax

007F801C 74 58 je short 007F8076

007F801E E8 00000000 llamada 007F8023

007F8023 58 pop eax

007F8024 05 43000000 add eax, 43

007F8029 8038 E9 cmp byte ptr ds: [eax], 0E9

007F802C 75 03 jnz short 007F8031

007F802E 61 popad

007F802F EB 35 jmp corto 007F8066

007F8031 E8 00000000 call 007F8036

007F8036 58 pop eax

007F8037 25 00F0FFFF y eax, FFFFF000

El código de entrada Themida/WinLicense.V1.8.2.0 tiene las siguientes partes adicionales en comparación con la versión anterior:

CÓDIGO:

00740031

DB2D 37007400 fld tbyte ptr ds: [740037]

00740037 FFFF

00740039 FFFF

0074003B FFFF

0074003D FFFF

0074003F 3D 40E80000 cmp eax, 0E840

00740031 DB2D 37007400 fld tbyte ptr ds: [740037]

Tenga en cuenta los 10 bytes en [740037]:

CÓDIGO:

00740037 FF FF FF FF FF FF FF FF 3D 40

Número de coma flotante: 9.2233720368547758080e 18

OllyDBG se procesa actualmente con la última V1 Versión .10 ¡Este flotador se estrellará!

Mientras construyamos una trampa de instrucciones de punto flotante en el código, cuando OllyDBG V1.10 se desensamble hasta este punto, quedará atrapado, se bloqueará y saldrá.

QUOTE :

Trampa de instrucción de punto flotante de desmontaje de OllyDBG V1.10:

fld tbyte ptr ds: [XXXXXXXX]

Escribe FF FF FF FF FF FF en [XXXXXXXX ] FF 3D 40

CITA:

Solución:

1. Esperando la nueva versión de OllyDBG para corregir este error

2. En OllyDBG V1 10 Antes de la depuración, utilice otras herramientas hexadecimales para modificar los datos FF FF FF FF FF FF FF 3D 40 en [XXXXXXXX] y modifique uno de los datos a cualquier otro valor.

3. Configure OllyDBG para que se detenga en el punto de interrupción del sistema, en la ventana de datos Ctrl G: XXXXXXXX, modifique cualquier dato en [XXXXXXXX] FF FF FF FF FF FF 3D 40 a otros valores

4. El motor de OllyDBG V1.10 evita esta trampa de instrucciones de punto flotante

La tercera solución es la más fácil de operar