android的反调试方法,Android 中的反调试技术

比较简单的有下面这两种

调试端口检测, 23946(0x5D8A)

Demo:

void CheckPort23946ByTcp()

{

FILE* pfile=NULL;

char buf[0x1000]={0};

// 执行命令

char* strCatTcp= "cat /proc/net/tcp |grep :5D8A";

//char* strNetstat="netstat |grep :23946";

pfile=popen(strCatTcp,"r");

if(NULL==pfile)

{

LOGA("CheckPort23946ByTcp popen打开命令失败!\n");

return;

}

// 获取结果

while(fgets(buf,sizeof(buf),pfile))

{

// 执行到这里,判定为调试状态

LOGA("执行cat /proc/net/tcp |grep :5D8A的结果:\n");

LOGB("%s",buf);

}//while

pclose(pfile);

}

Android设备中调试器进程名检测, android_server, gdbserver, gdb 等

Demo:

void SearchObjProcess()

{

FILE* pfile=NULL;

char buf[0x1000]={0};

// 执行命令

//pfile=popen("ps | awk '{print $9}'","r"); // 部分不支持awk命令

pfile=popen("ps","r");

if(NULL==pfile)

{

LOGA("SearchObjProcess popen打开命令失败!\n");

return;

}

// 获取结果

LOGA("popen方案:\n");

while(fgets(buf,sizeof(buf),pfile))

{

// 打印进程

LOGB("遍历进程:%s\n",buf);

// 查找子串

char* strA=NULL,strB=NULL,strC=NULL,strD=NULL;

strA=strstr(buf,"android_server");

strB=strstr(buf,"gdbserver");

strC=strstr(buf,"gdb");

strD=strstr(buf,"fuwu");

if(strA || strB ||strC || strD)

{

// 执行到这里,判定为调试状态

LOGB("发现目标进程:%s\n",buf);

}//if

}//while

pclose(pfile);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值