调试: 先把关键的物理页设置为不可写,一旦有代码试图写该页就会产生page fault异常,由此可以定位关键的代码,这就是传说中的(硬件)内存读写断点,一般用来定来定位关键的加密字段生成代码,也可以用来注入自己的恶意代码; 反调试:把物理内存页面设置为不可写,调试的时候由于需要插入int 3,遇到这种不可写的内存是会报...
这是因为当在子进程调用ptrace(PTRACE_TRACEME, 0, NULL, NULL)后,并且调用execl()系统调用,那么子进程会发送一个SIGCHLD信号给父进程(跟踪进程)并且自己停止运行,直到父进程发送调试命令,才会继续运行。 由于上面的代码中,父进程(跟踪进程)并没有发送任何调试命令就退出运行,所以子进程(被跟踪进程)在没有运行的情...