просмотр реакции отладчика gdb на различные сигналы
Некоторые сигналы (например, сигнал SIGTRAP, возникающий при достижении программной точки останова) отладчик резервирует для своих собственных нужд. Этим обстоятельством пользуются многие защищенные программы, определяющие находятся ли они под отладкой или нет. Они устанавливают свой собственный обработчик SIGTRAP и затем выполняют инструкцию INT 03h. При выполнении без gdb управление получает обработчик, в противном случае сигнал поглощается отладчиком и обработчик уже не получает управление.
В частности, файлы, упакованные протектором burneye содержат следующий код:
0x053714a7: mov $0x5,%ebx
0x053714ac: mov $0x5371a0c,%ecx
0x053714b1: mov $0x30,%edx
0x053714b6: mov %edx,%eax
0x053714b8: int $0x80
0x053714ba: add $0x5375a00,%esi
0x053714c0: mov %esi,0xfffffd24(%ebp)
0x053714c6: int3
0x053714c7: cmpl $0x0,0x5375748
0x053714ce: jne 0x53714e2
…
0x05371a0c: push %ebp
0x05371a0d: mov %esp,%ebp
0x05371a0f: incl 0x5375748
0x05371a15: leave
0x05371a16: ret