我正在尝试为商业Linux软件实施一些最小的防逆转保护。计算可执行文件的校验和似乎可以防止软件断点。有没有办法检测Linux中的硬件断点?
最佳答案
似乎没有,因为当调试寄存器中的条件得到满足时,即程序代码未更改时,是处理器会中断。
而且,无论何时/在运行时将程序放入调试器中,您都无法[轻松地]防止软件断点:调试器将用导致和异常的指令替换一条指令,捕获异常,暂停程序,显示注册,当您希望它继续时,恢复指令等。
尽管很多年前,我试图破解DBASE,但发现了一个非常聪明的窍门:该程序在某个时刻检查了下一条指令是否为INT 3
指令(软件断点),如果是,则跳入无内容。花了我几天的时间找到这个窍门...
关于c - 在Linux中检测硬件断点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33606075/