ptrace.rs 381 B

123456789101112
  1. #![allow(dead_code)]
  2. use crate::include::bindings::bindings::pt_regs;
  3. /// @brief 判断给定的栈帧是否来自用户态
  4. /// 判断方法为:根据代码段选择子是否具有ring3的访问权限(低2bit均为1)
  5. pub fn user_mode(regs: *const pt_regs) -> bool {
  6. if (unsafe { (*regs).cs } & 0x3) != 0 {
  7. return true;
  8. } else {
  9. return false;
  10. }
  11. }