保护应用免于绕过根检测(Frida Server)

Posted

技术标签:

【中文标题】保护应用免于绕过根检测(Frida Server)【英文标题】:Protect the app from bypassing the root detection (Frida Server) 【发布时间】:2020-04-15 08:46:36 【问题描述】:

我看到post 使用 frida 服务器绕过 android 应用程序的根检测。当我按照这些步骤操作时,根检测不起作用。任何人都有一个想法来保护根检测不被绕过使用 Frida 服务器/任何其他

【问题讨论】:

【参考方案1】:

Check 用于共享库中的 root 和 launch 一个活动说,the device is rooted 来自共享库本身清除后台堆栈。 原生二进制文件很难进行逆向工程(它们需要函数名才能在 Frida 上进行操作)。

您还可以阻止 frida 从attaching 访问您的应用。 从 frida 文档我们可以看到 frida 使用 ptrace

Frid​​a 首先需要在目标应用程序中注入一个代理,使其位于进程的内存空间中。

在 Android 和 Linux 上,此类注入是使用 ptrace 通过附加来完成的 或产生一个进程,然后注入代理。一旦代理 注入后,它通过管道与其服务器通信。

当使用ptrace系统调用附加到进程时,被调试进程状态文件中的“TracerPid”字段显示附加进程的PID。 “TracerPid”的默认值为 0(未附加进程)。因此,在该字段中找到除 0 以外的任何内容都是调试或其他 ptrace 恶作剧的标志。 以下实现来自 Tim Strazzere 的 Anti-Emulator 项目:

#include <jni.h>
#include <unistd.h>
#include <sys/ptrace.h>
#include <sys/wait.h>
#include <pthread.h>

static int child_pid;

void *monitor_pid() 

    int status;

    waitpid(child_pid, &status, 0);

    /* Child status should never change. */

    _exit(0); // Commit seppuku



void anti_debug() 

    child_pid = fork();

    if (child_pid == 0)
    
        int ppid = getppid();
        int status;

        if (ptrace(PTRACE_ATTACH, ppid, NULL, NULL) == 0)
        
            waitpid(ppid, &status, 0);

            ptrace(PTRACE_CONT, ppid, NULL, NULL);

            while (waitpid(ppid, &status, 0)) 

                if (WIFSTOPPED(status)) 
                    ptrace(PTRACE_CONT, ppid, NULL, NULL);
                 else 
                    // Process has exited
                    _exit(0);
                
            
        

     else 
        pthread_t t;

        /* Start the monitoring thread */
        pthread_create(&t, NULL, monitor_pid, (void *)NULL);
    


JNIEXPORT void JNICALL
Java_sg_vantagepoint_antidebug_MainActivity_antidebug(JNIEnv *env, jobject instance) 

    anti_debug();

请参考guide,了解 vantagepoint 的反调试技巧。 本指南中有一个特定的 section 用于解决 frida

还有https://github.com/b-mueller/frida-detection-demo

否则,您可以使用 Appdome (IPaaS) 的服务将 blockfrida 附加到您的应用中

【讨论】:

以上是关于保护应用免于绕过根检测(Frida Server)的主要内容,如果未能解决你的问题,请参考以下文章

如何修复错误:frida 上的 java.lang.ClassNotFoundException

Android安卓应用渗透Hook:使用frida进行绕过和解密

使用 frida 绕过 Flutter 应用的 Sslpinning 中的空地址

android中无法绕过的根检测方法

SQL注入&WAF绕过姿势

虚拟机检测绕过总结--不定时更新