Quantcast
Channel: 看雪安全论坛
Viewing all articles
Browse latest Browse all 9556

AAnti_Debug(对抗反调试)系统实现

$
0
0
标 题: AAnti_Debug(对抗反调试)系统实现
作 者: 蟑螂一号
时 间: 2013-12-24,15:54:25
Android应用中,为了防止分析人员通过调试工具调试应用,会在应用中调用ptrace,防止其他调试进程再一次附加到本应用中。AAnti_Debug系统是经过android ROM定制之后的反反调试系统。该系统主要是在系统调用ptrace中进行特殊处理,使本进程在调用ptrace时候失败,而让其他调试进程附加到进程的时候调用ptrace成功。
AAnti_Debug系统关键技术:修改android源码中bionic中的libc中的ptrace系统调用。
关机实现代码:
1.根据附加进程pid返回进程uid。
代码:

int  get_uid_from_status(int pid)
{
  FILE *file;
  int uid=-1;
  char filename[512];
  sprintf(filename,"/proc/%d/status",pid);
  file=fopen(filename,"r");
  char line[256];
  if(!file)
  {
    return uid;
  }
  while(fgets(line,256,file))
  {
    sscanf(line,"Uid: %u",&uid);
  }
  fclose(file);
  return uid;
 
}

2.根据传入ptrace的参数,处理参数。
引用:

int uid=-1;
//获取当前进程uid
int myuid=getuid();
//uid>10000为非系统应用
if(pid>=0&&myuid>10000)
{
int val=get_val();
if(val>0)
{
uid=get_uid_from_status(pid);
// __libc_android_log_print(ANDROID_LOG_DEBUG,"PTRACE","uid:%d myuid:%d",uid,myuid);
if(request==PTRACE_TRACEME)
{
return -1;
}
if(uid==myuid)
{
return -1;
}
}
}


Viewing all articles
Browse latest Browse all 9556

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>