欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

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

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

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

     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;
}
}
}

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功