我正在反转一个 ELF x86 二进制文件,它显然具有反反转/反调试保护,而 ELF 做的第一件事就是调用带有 SIGTRAP 值的 sys_signal :
.text:08048063 mov eax, 48 ; sys_signal
.text:08048068 mov ebx, 5 ; SIGTRAP
.text:0804806D mov ecx, offset sub_80480E2
.text:08048072 int 80h ; LINUX - sys_signal
.text:08048074 jmp short loc_8048077
我有三个问题:
- 首先,我认为这样做的目的是为 SIGTRAP 信号创建一个处理程序是否正确,可能是为了防止任何调试器使用
- 其次,如果这是创建一个 SIGTRAP 处理程序,我应该根据这个 x86 系统调用表找到一个
__sighandler_tat 。如何设置 IDA 以便将其识别为 __sighandler_t 结构?sub_80480E2 - 第三,我找不到有关此结构的任何详细信息。它的成分是什么?
我在signal.h这些行中发现:
/* Type of a signal handler. */
typedef void (*__sighandler_t) (int);
__sighandler_t 只是一个函数的指针吗?
谢谢 !如果我不清楚或者我忘记了有用的信息,请随时告诉我。