Инструкция по сборке ICEBP - PullRequest
0 голосов
/ 29 июня 2019

В качестве обходного пути с инструкциями x86 я использовал код операции, похожий на .byte 0xf1, 0xc1, и попытался выполнить его внутри GDB.дизассемблирование этой строки показывает

f1      icebp

Таким образом, когда выбирается первый байт, который является F1, он распознается как инструкция с именем icebp.Известно, что это недокументированная инструкция.Единственное, что я нашел в SDM, это сноска в разделах INT, в которой сказано:

The mnemonic ICEBP has also been used for the instruction with opcode F1

В продолжение gdb написано:

Cannot access memory at address 0x1ffffc20

Итак, что это за адрес?Как это генерируется?Это физический или виртуальный?и как я могу проверить его реальную функциональность?

ОБНОВЛЕНИЕ:

Операции GDB показаны ниже:

(gdb) list
1       void main()
2       {
3         __asm__(".byte 0xf1, 0xc1");
4       }
(gdb) set disassembly-flavor intel
(gdb) disass /r main
Dump of assembler code for function main:
   0x00000000004004ed <+0>:     55      push   rbp
   0x00000000004004ee <+1>:     48 89 e5        mov    rbp,rsp
   0x00000000004004f1 <+4>:     f1      icebp
   0x00000000004004f2 <+5>:     c1 5d c3 66     rcr    DWORD PTR [rbp-0x3d],0x66
End of assembler dump.
(gdb) b main
Breakpoint 1 at 0x4004f3: file machine2.c, line 4.
(gdb) run
Starting program: /home/mahmood/Documents/./machine2

Program received signal SIGTRAP, Trace/breakpoint trap.
0x00000000004004f2 in main () at machine2.c:2
2       {
Missing separate debuginfos, use: debuginfo-install glibc-2.17-196.el7.x86_64
(gdb) x/i $pc
=> 0x4004f2 <main+5>:   rcr    DWORD PTR [rbp-0x3d],0x66
(gdb) n
Cannot access memory at address 0x1ffffc20
(gdb) x/i $pc
=> 0x4004f5:    nop    WORD PTR cs:[rax+rax*1+0x0]

UDPATE2:

После удаления c1, отладчик не может установить точку останова в строке asm.

(gdb) list
1       void main()
2       {
3         __asm__(".byte 0xf1");
4       }
(gdb) b machine2.c:3
Breakpoint 1 at 0x4004f2: file machine2.c, line 3.
(gdb) run
Starting program: /home/mahmood/Documents/./machine2

Breakpoint 1, main () at machine2.c:4
4       }
Missing separate debuginfos, use: debuginfo-install glibc-2.17-196.el7.x86_64
...