《安卓逆向这档事》十八、表哥,你也不想你的Frida被检测吧!(上)

查看 179|回复 9
作者:shiyun01   

一、课程目标
1.了解常见frida检测
二、工具
1.教程Demo(更新)
2.jadx-gui
3.VS Code
4.jeb
三、课程内容
1.检测文件名、端口名、双进程保护、失效的检测点
1.检测/data/local/tmp路径下的是否有frida特征文件,server端改名,例如:fr
2.指定端口转发
./fs1 -l 0.0.0.0:6666
adb forward tcp:6666 tcp:6666
frida -H 127.0.0.1:6666 wuaipojie -l hook.js
3.spawn启动过双进程保护
frida -U -f 进程名 -l hook.js
PS:学会看注入报错的日志,比如说当app主动附加自身进程时,这时候再注入就会提示run frida as root(以spawn的方式启动进程即可)
4.借助脚本定位检测frida的so
function hook_dlopen() {
    Interceptor.attach(Module.findExportByName(null, "android_dlopen_ext"),
        {
            onEnter: function (args) {
                var pathptr = args[0];
                if (pathptr !== undefined && pathptr != null) {
                    var path = ptr(pathptr).readCString();
                    console.log("load " + path);
                }
            }
        }
    );
}
5.随着firda的版本迭代,以前诸多检测点以失效
(1.)例如检测D-Bus
D-Bus是一种进程间通信(IPC)和远程过程调用(RPC)机制,最初是为Linux开发的,目的是用一个统一的协议替代现有的和竞争的IPC解决方案。
bool check_dbus() {
    // 定义一个socket地址结构体变量sa
    struct sockaddr_in sa;
    // 创建一个socket文件描述符
    int sock;
    // 定义一个字符数组res,用于存储接收到的数据
    char res[7];
    // 循环遍历所有可能的端口号,从0到65535
    for(int i = 0; i
(2)检测fd
/proc/pid/fd 目录的作用在于提供了一种方便的方式来查看进程的文件描述符信息,这对于调试和监控进程非常有用。通过查看文件描述符信息,可以了解进程打开了哪些文件、网络连接等,帮助开发者和系统管理员进行问题排查和分析工作。
bool check_fd() {
    DIR *dir = NULL;
    struct dirent *entry;
    char link_name[100];
    char buf[100];
    bool ret = false;
    if ((dir = opendir("/proc/self/fd/")) == NULL) {
        LOGI(" %s - %d  error:%s", __FILE__, __LINE__, strerror(errno));
    } else {
        entry = readdir(dir);
        while (entry) {
            switch (entry->d_type) {
                case DT_LNK:
                    sprintf(link_name, "%s/%s", "/proc/self/fd/", entry->d_name);
                    readlink(link_name, buf, sizeof(buf));
                    if (strstr(buf, "frida") || strstr(buf, "gum-js-loop") ||
                        strstr(buf, "gmain") ||
                        strstr(buf, "-gadget") || strstr(buf, "linjector")) {
                        LOGI("check_fd -> find frida:%s", buf);
                        ret = true;
                    }
                    break;
                default:
                    break;
            }
            entry = readdir(dir);
        }
    }
    closedir(dir);
    return ret;
}
(3)检测文件
众所周知frida我们一般都会放在data/local/tmp目录下,旧版fridaserver端运行时都会释放到re.frida.server,所以这里在旧版也会被当做一个检测点,而新版已不再释放
2检测map
adb shell ps | findstr com.zj.wuaipojie
cat /proc/12186/maps|grep frida

[table]
[tr]
[td]字段[/td]
[td]描述[/td]
[/tr]
[tr]
[td]u0_a504

进程, 端口

Arcticlyc   

前排膜拜蒸鸡大佬,希望早日可以手撕360
fuwo   

加固厂商连夜推出反反调试
Cuveanst   

视频晚点上传
无闻无问   


涛之雨 发表于 2024-5-6 23:05
前排膜拜蒸鸡大佬,希望早日可以手撕360

不应该是涛哥哥教我手撕vmp,脚踩ollvm吗?
fuwo   

每日学习,膜拜大佬。
fuwo   

不知道从什么时候开始就看不懂了,只能捧个场了
无闻无问   

继续收藏,希望有朝一日能开始学习
Cuveanst   

应用一更新就碰到frida检测了,来学习学习
Arcticlyc   

所以,绝杀就是hook读写文件的API,如fgets…
您需要登录后才可以回帖 登录 | 立即注册

返回顶部