-
-
AAnti_Debug(对抗反调试)系统实现
-
2013-12-24 16:05
13830
-
标 题: 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;
}
}
}
阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开
发者可享99元/年,续费同价!