码迷,mamicode.com
首页 > 移动开发 > 详细

Android 中的反调试技术

时间:2018-07-15 16:17:13      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:turn   dem   awk   设备   awk命令   int   技术   打开   char   

比较简单的有下面这两种

调试端口检测, 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);
}

Android 中的反调试技术

标签:turn   dem   awk   设备   awk命令   int   技术   打开   char   

原文地址:https://www.cnblogs.com/seliote/p/9313641.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!