frida反检测

一、frida介绍

简单来说,Frida是一个动态代码插桩框架。这意味着它能够在程序运行的时候,不改变原有程序代码的情况下,让你往里面添加自己的代码片段。这听起来可能有点像魔法,但实际上,它是通过一种叫做“HOOK”的技术实现的。Hook就像是在软件内部安装了一个小间谍,能够监听或修改特定部分的行为。

Frida特别灵活,因为它可以用Python来编写控制脚本,用JavaScript来编写注入到目标应用程序中的实际hook代码。这意味着,即使你不完全懂应用程序是怎么写的,只要懂得Python和一点点JavaScript,就能开始探索和修改它的行为。

举个例子,假设你想知道一个游戏是如何计算得分的,你可以用Frida来“挂钩”(hook)游戏中的计分函数,每当这个函数被调用时,Frida就会告诉你,并显示或修改传入的参数,比如让得分翻倍。

Frida不仅限于游戏,它还能用于安全研究、软件调试、性能监控等多种场景,支持Android、iOS、Windows等多个平台,是开发者和安全研究人员的强大助手。

二、frida检测

检测Frida注入通常涉及检查系统中与Frida相关的各种迹象,以下是几种常见的检测方法:

检查进程和线程:
早期的检测方法会检查是否有名为frida-server的进程运行,但这种方法在现代Android系统中已经不太有效,因为Frida可以更隐蔽地运行。

分析Maps文件:
Frida在注入过程中会在目标进程中加载其代理库(如frida-agent.so)。检查 /proc/[pid]/maps 文件可以发现这些额外加载的库,从而检测到Frida的存在。

扫描网络连接:
Frida使用D-Bus协议进行通信,可以通过遍历/proc/net/tcp或/proc/net/tcp6文件来查找与Frida服务器通信的端口,或者尝试向所有开放端口发送D-Bus认证消息,响应REJECT的端口可能表明存在Frida通信。

符号表分析:
对于Native代码,可以通过遍历目标进程的符号表来寻找Frida注入的线索,因为Frida注入可能会留下特定的函数签名或修改原有的函数地址。

检查临时文件和目录:
Frida在运行时可能会创建特定的目录(如/data/local/tmp/re.frida.server)或临时文件,检查这些位置可以发现Frida的活动痕迹。

Hook检测:
应用程序自身可以通过在关键函数前后设置陷阱(例如,在函数入口处设置断点或校验堆栈帧),来检测是否被Frida或其他工具进行了Hook操作。如果函数的执行流程或返回值不符合预期,可能是被Hook的迹象。

性能监控和异常检测:
异常的内存访问模式、CPU使用率突增或应用程序行为的其他异常变化,虽然不是直接证据,但也可能是Frida活动的间接指示。

代码完整性验证:
应用程序可以在启动时验证自身的代码完整性,对比当前运行代码与原始代码或校验和,以判断是否被篡改或注入了额外的代码。

三、Frida绕过

测试app我们选择bilibili,启动Frida server。

然后开始附加到我们的进程,脚本就开始奔溃了。

写一个脚本看看是哪个so在检测。

把so拖进ida看看pthread_create在哪,结果没有找到,那就是混淆了。

继续完善我们的脚本,找到pthread_create函数。

这下我们知道在加载libmsaoaidsec.so之后紧接这调用了2次pthread_create后Frida就奔溃了。那我们完全可以基于内存做一个替换。

function create_fake_pthread_create() {const fake_pthread_create = Memory.alloc(4096)Memory.protect(fake_pthread_create, 4096, "rwx")Memory.patchCode(fake_pthread_create, 4096, code => {const cw = new Arm64Writer(code, { pc: ptr(fake_pthread_create) })cw.putRet()})return fake_pthread_create
}

然后我们再运行一下frida。

完全没有问题了,可以愉快的玩耍了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/688032.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

六西格玛遇上AI:质量提升进入“快车道”

人工智能(AI)与六西格玛管理方法——正在慢慢接近我们的视野中,预示着在质量管理中一场改革重大改革将要到来。 AI,作为科技的前沿,正以其强大的数据处理能力和机器学习能力,为质量管理提供全新的视角。它…

QT---day5,通信

1、思维导图 2、TCp 服务器 #ifndef MYWIDGET_H #define MYWIDGET_H #include <QWidget> #include <QTcpServer> #include <QList> #include <QTcpSocket> #include <QMessageBox> #include <QDebug> #include <QTcpServer> QT_B…

Elasticsearch查看集群信息,设置ES密码,Kibana部署

Elasticsearch查看集群信息&#xff0c;设置ES密码&#xff0c;Kibana部署 查看集群信息查看节点信息查看集群健康状态查看分片信息查看其他集群信息 Kibana部署安装设置ES密码 查看集群信息 查看节点信息 curl http://127.0.0.1:9200/_cat/nodes?v 参数说明&#xff1a; ip…

【Redis】用户登录校验

对于用 redis 对用户进行登录校验&#xff0c;大致可分为以下六步&#xff1a; 首先通过查询数据库来查找具有提供的用户名、密码和delFlag值为0的用户。如果未找到用户&#xff0c;则抛出一个带有消息"用户不存在"的ClientException&#xff08;用户不存在&#xf…

做海外跨境电商难不难?做7-8年,发现卖家主要分三大群体!

做海外跨境电商&#xff0c;卖家有三大群体&#xff1a; 第一种&#xff1a;跨境头部大卖家&#xff0c;这些都是有综合优势的卖家&#xff0c;不论是供应链、还是资金量、还是运营团队&#xff0c;各方面硬实力都很强大&#xff0c;这也是中小卖家短时间难以企及的优势。 第二…

[C++核心编程-07]----C++类和对象之友元应用

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

java中EQ、NE、GE、GT、LE、LT

关系运算符 包括EQ、NE、GE、GT、LE、LT几个&#xff0c;关系运算符返回的是真“True”或假“False”。 eq&#xff08;Equal to&#xff09; 等 运算符 &#xff0c;如果运算符两边相同则返回真&#xff0c;否则返回假&#xff1b; ne&#xff08;Not Equal to&#xff09; 不…

JavaScript基础(六)

break & continue continue跳出本次循环&#xff0c;继续下面的循环。 break跳出终止循环。 写个简单的例子: <script> for (var i1; i<5; i){ if (i3){ continue; } console.log(i); } </script> 结果就是跳过i等于3的那次循环&#xff0c;而break: f…

YOLOv8火焰与烟雾智能检测系统

项目概述&#xff1a; 本项目旨在开发一款高效、实时的火焰与烟雾检测系统&#xff0c;利用先进的深度学习技术——YOLOv8&#xff0c;为安全监控领域提供智能化解决方案。系统不仅能够准确识别视频流或静态图像中的火焰与烟雾&#xff0c;还配备了用户友好的图形界面&#xff…

初阶数据结构—顺序表和链表

第一章&#xff1a;线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#xff0c;也就…

Metes and Bounds Pro for Mac 激活版:精准数据转换与绘图利器

Metes and Bounds Pro for Mac是一款专为土地测量和边界划定而设计的专业软件&#xff0c;为Mac用户提供了高效、精确的测量工具。其核心功能在于其全面的测量工具和简便的操作流程&#xff0c;能够满足在土地管理、房地产开发、农业规划等领域的多样化需求。 这款软件集合了距…

【Vue】Vue的核心

目录 计算属性-computed插值语法实现methods实现计算属性实现使用使用总结&#xff1a; 监视属性-watch监视的两种写法&#xff1a;深度监视备注&#xff1a; computed和watch之间的区别 绑定样式class样式绑定字符串写法数组写法对象写法 style样式绑定对象式1对象式2数组式 条…