我正在尝试为商业Linux软件实施一些最小的防反转保护。计算可执行文件的校验和似乎可以防止软件断点。有没有办法在Linux中检测硬件断点?
答案 0 :(得分:1)
似乎没有,因为当满足其调试寄存器中的条件时,处理器会执行中断,即程序代码不会发生变化。
当程序在运行时/运行时进入调试器时,您无法[轻松]保护软件断点:调试器将使用导致异常的指令替换指令,捕获异常,停止程序,显示寄存器以及何时继续,恢复指令等。
虽然很多年前我试图破解DBASE并找到了一个非常聪明的技巧:程序在某些时候检查下一条指令是否为INT 3
指令(软件断点),如果是,则跳入虚无。花了我几天才找到那个伎俩...