android是否支持PTRACE_SINGLESTEP?

时间:2014-04-14 10:40:44

标签: android ptrace

好的,这是一个简单的问题。当我使用ptrace systemcall时,android是否支持PTRACE_SINGLESTEP?当我想要ptrace一个android apk程序时,我发现我无法处理SINGLESTEP跟踪。但是当我使用PTRACE_SYSCALL时情况发生了变化,它可以完美地工作。 android是否消除了这个功能或者手臂在硬件中缺少一些支持?任何帮助将不胜感激!谢谢。

这是我的核心计划:

    int main(int argc, char *argv[])
   {   
    if(argc != 2) {
    __android_log_print(ANDROID_LOG_DEBUG,TAG,"please input the pid!");
      return -1;
    }
    if(0 != ptrace(PTRACE_ATTACH, target_pid, NULL, NULL))
   {
    __android_log_print(ANDROID_LOG_DEBUG,TAG,"ptrace attach error");
    return -1;
   }
    __android_log_print(ANDROID_LOG_DEBUG,TAG,"start  monitor process     :%d",target_pid);
    while(1)
    {
    wait(&status);
    if(WIFEXITED(status))
    {
        break;
    }
if (ptrace(PTRACE_SINGLESTEP, target_pid, 0, 0) != 0)
__android_log_print(ANDROID_LOG_DEBUG,TAG,"PTRACE_SINGLESTEP attach error");
    }
ptrace(PTRACE_DETACH, target_pid, NULL, NULL);
__android_log_print(ANDROID_LOG_DEBUG,TAG,"monitor finished");   
return 0; 
    }

我在shell上运行这个程序。我可以获得root权限。   如果我将请求更改为PTRACE_SYSCALL,程序将正常运行。   但如果请求是PTRACE_SINGLESTEP,程序将收到错误!

1 个答案:

答案 0 :(得分:2)

已在ARM Linux check this

上删除了PTRACE_SINGLESTEP