[英]Detecting hardware breakpoints in Linux
我正在尝试为商业Linux软件实施一些最小的防逆转保护。 计算可执行文件的校验和似乎可以防止软件断点。 有没有办法检测Linux中的硬件断点?
似乎没有,因为当调试寄存器中的条件得到满足(即程序代码不变)时,是处理器会中断。
而且,无论何时/在运行时将程序放入调试器中,您都无法[轻松地]防止软件断点:调试器将用导致和异常的指令替换一条指令,捕获异常,暂停程序,显示注册,并在您希望其继续执行时恢复指令等。
尽管很多年前,我试图破解DBASE,但发现了一个非常聪明的窍门:该程序在某个时刻检查了下一条指令是否为INT 3
指令(软件断点),如果是,则跳入无内容。 花了我几天的时间找到这个窍门...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.