que - sistema operativo linux caracteristicas
¿Cuál es el propósito del código de operación UD2 en el kernel de Linux? (1)
He encontrado el siguiente fragmento en el kernel de Linux (no el código C correspondiente), en algún lugar durante la fase de inicio. Puede ver claramente las partes 0F 0B
, que representan el código de operación UD2 (IDA se negó a desmontar).
Hay algunos usos posibles para este código de operación explicados aquí y aquí . En este caso, sin embargo, los códigos de operación después de esta instrucción realmente no tienen sentido.
seg000:000C059E test edx, edx
seg000:000C05A0 jnz short loc_C05AA
seg000:000C05A0 ; --------------------------------------------------
seg000:000C05A2 db 0Fh
seg000:000C05A3 db 0Bh
seg000:000C05A4 db 73h
seg000:000C05A5 db 0
seg000:000C05A6 db 86h ; å
seg000:000C05A7 db 4Ah ; J
seg000:000C05A8 db 27h ; ''
seg000:000C05A9 db 0C0h ; +
seg000:000C05AA ; --------------------------------------------------
seg000:000C05AA
seg000:000C05AA loc_C05AA:
seg000:000C05AA cmp eax, [edi+4]
seg000:000C05AD jbe short loc_C05B7
seg000:000C05AD ; --------------------------------------------------
seg000:000C05AF db 0Fh
seg000:000C05B0 db 0Bh
seg000:000C05B1 db 75h
seg000:000C05B2 db 0
seg000:000C05B3 db 86h
seg000:000C05B4 db 4Ah ; J
seg000:000C05B5 db 27h ; ''
seg000:000C05B6 db 0C0h ; +
seg000:000C05B7 ; --------------------------------------------------
seg000:000C05B7
seg000:000C05B7 loc_C05B7:
seg000:000C05B7 add ecx, 0FFFh
seg000:000C05BD shr esi, 0Ch
seg000:000C05C0 shr ecx, 0Ch
seg000:000C05C3 sub ecx, esi
seg000:000C05C5 cmp ecx, ebx
seg000:000C05C7 jnb short loc_C05E9
seg000:000C05C9 lea esi, [esi+0]
seg000:000C05D0
seg000:000C05D0 loc_C05D0:
seg000:000C05D0 mov edx, [edi+8]
seg000:000C05D3 btr [edx], ecx
seg000:000C05D6 sbb eax, eax
seg000:000C05D8 test eax, eax
seg000:000C05DA jnz short loc_C05E4
seg000:000C05DA ; ------------------------------------------------
seg000:000C05DC db 0Fh
seg000:000C05DD db 0Bh
seg000:000C05DE db 7Fh
seg000:000C05DF db 0
seg000:000C05E0 db 86h ; å
seg000:000C05E1 db 4Ah ; J
seg000:000C05E2 db 27h ; ''
seg000:000C05E3 db 0C0h ; +
seg000:000C05E4 ; -------------------------------------------------
seg000:000C05E4
seg000:000C05E4 loc_C05E4:
seg000:000C05E4 inc ecx
Es la macro BUG () de include / asm-i386 / bug.h.
/*
* Tell the user there is some problem.
* The offending file and line are encoded after the "officially
* undefined" opcode for parsing in the trap handler.
*/
#ifdef CONFIG_DEBUG_BUGVERBOSE
#define BUG() /
__asm__ __volatile__( "ud2/n" /
"/t.word %c0/n" /
"/t.long %c1/n" /
: : "i" (__LINE__), "i" (__FILE__))
Por ejemplo, el que está en 0C05AF es para archivo con nombre en 0xC0274A86 y número de línea 117 (0x75).