frida反检测

news2024/12/29 10:20:26
一、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.coloradmin.cn/o/1663132.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解构复合人工智能系统(Compound AI Systems):关键术语、理论、思路、实践经验

编者按: 大模型的出现为构建更智能、更复杂的人工智能系统带来了新的契机。然而,单一的大模型难以应对现实世界中错综复杂的问题,需要与其他模块相结合,构建出复合人工智能系统(Compound AI Systems)。 本文…

wordpress 访问文章内容页 notfound

解决&#xff1a; 程序对应的伪静态规则文件.htaccess是空的 网站根目录下要有 .htaccess 文件&#xff0c;然后将下面的代码复制进去。 <ifmodule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-fRew…

AI领域最伟大的论文检索网站

&#x1f4d1; 苏剑林&#xff08;Jianlin Su&#xff09;开发的“Cool Papers”网站旨在通过沉浸式体验提升科研工作者浏览论文的效率和乐趣。这个平台的核心优势在于利用Kimi的智能回答功能&#xff0c;帮助用户快速了解论文的常见问题&#xff08;FAQ&#xff09;&#xff0…

STL-Setmap

前言 大家好&#xff0c;我是jiantaoyab&#xff0c;我们将进入到CSTL 的学习。STL在各各C的头文件中&#xff0c;以源代码的形式出现&#xff0c;不仅要会用&#xff0c;还要了解底层的实现。源码之前&#xff0c;了无秘密。 STL六大组件 Container通过Allocator取得数据储存…

多标签分割

https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.9/configs/multilabelseg/README_cn.md

el-select选项框内容过长

利用popper-class实现选项框内容过长&#xff0c;截取显示功能&#xff1a; <el-select popper-class"popper-class" :popper-append-to-body"false" v-model"value" placeholder"请选择"><el-optionv-for"item in opt…

大模型prompt实例:知识库信息质量校验模块

大模型相关目录 大模型&#xff0c;包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步&#xff0c;扬帆起航。 大模型应用向开发路径&#xff1a;AI代理工作流大模型应用开发实用开源项目汇总大模…

war包放在tomcat服务器中,服务启动之后war包并没有正常展开如何解决?

这里我问题出现的是 XWiki 的 WAR 包未能自动展开&#xff0c;于是尝试手动解压并部署。下面是手动解压 WAR 包的步骤思路展示&#xff1a; 1. 准备目录 首先&#xff0c;创建一个新的目录用于存放解压后的文件。在 webapps 目录中创建一个名为 xwiki 的目录&#xff1a; mkd…

webjars学习

webjars介绍 官网&#xff1a;WebJars - Web Libraries in Jars github: WebJars GitHub 文档&#xff1a;WebJars - Documentation WebJAR 是一个用于管理Web前端依赖的工具。它允许开发者将特定的客户端库&#xff08;如JavaScript、CSS等&#xff09;打包成JAR&#xf…

【打工日常】云原生之搭建一款轻量级的开源Markdown笔记工具

一、flatnotes介绍 1.flatnotes简介 一个自托管的&#xff0c;无数据库的笔记网络应用程序&#xff0c;利用平面文件夹的markdown文件进行存储。 2.项目特点 A.干净简单的用户界面B.响应式移动端界面C.原生/所见即所得Markdown编辑模式D.高级搜索功能E.笔记“标签”功能F.…

安服仔番外——IaaS、PaaS、SaaS

云安全也是很重要的一个方向&#xff0c;当然了&#xff0c;今天开启这一篇的目的是up发现安服仔们需要懂的东西很多&#xff0c;确实不只局限于所谓的设备、漏扫、渗透之类的大家明面上都懂的&#xff0c;持续学习&#xff01;恰好up所在的项目对云接触很多&#xff0c;那就刚…

Rank Math Pro插件下载 - 您的SEO优化新引擎

在当今数字时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;对于任何希望提升在线可见性和吸引更多访客的网站来说都是至关重要的。Rank Math Pro是一款先进的SEO插件&#xff0c;专为WordPress网站设计&#xff0c;它能够帮助网站管理员和内容创作者轻松实现SEO最佳实…

撤销及变更:31个自然基金项目!

本周投稿推荐 SSCI • 2区社科类&#xff0c;3.0-4.0&#xff08;社科均可&#xff09; EI • 计算机工程类&#xff08;接收广&#xff0c;录用极快&#xff09; SCI&EI • 4区生物医学类&#xff0c;1.5-2.0&#xff08;录用率99%&#xff09; • 1区工程类&#…

Oracle到PostgreSQL的不停机数据库迁移

1970 年&#xff0c;数据库之父 Edgar Frank Codd 发表了“数据的关系模型”论文&#xff0c;该论文为往后的关系型数据库的发展奠定了基础。1979 年&#xff0c;基于关系模型理论的数据库产品 Oracle 2 首次亮相&#xff0c;并在过去的三四十年时间里&#xff0c;横扫全球数据…

开放式耳机哪个品牌好?性能超强的五款耳机推荐!速来码住!

运动已经融入了我们的日常生活&#xff0c;组团徒步、爬山、跑步、骑行等项目都收到了很人的喜爱。运动加耳机的组合也成了年轻人热爱的方式&#xff0c;在激烈运动的过程中往往会照成颠簸&#xff0c;在佩戴耳机上稳固性和舒适性就变得很重要了&#xff0c;因此开放式蓝牙耳机…

408算法题专项-2019年

题目&#xff1a; 分析&#xff1a;要求空间复杂度为O&#xff08;1&#xff09;&#xff0c;我们可以逆向假设可以开空间&#xff0c;得出一种思路&#xff0c;然后对这种思路优化空间即可得到O&#xff08;1&#xff09; 思路一&#xff1a;假设开空间 思考&#xff1a;再开…

【初阶数据结构】单链表之环形链表

目录标题 前言环形链表的约瑟夫问题环形链表环形链表|| 前言 前面我们已经学习了关于单链表的一些基本东西&#xff0c;今天我们来学习单链表的一个拓展——环形链表&#xff0c;我们将用力扣和牛客网上的三道题目来分析讲解环形链表问题。 环形链表的约瑟夫问题 我们首先来看…

iOS性能指标和性能测试工具

一&#xff1a; iOS性能测试指标 作为一名软件测试工程师&#xff0c;在测试 iOS 应用的性能时&#xff0c;需要关注以下几个方面&#xff1a; 1. 响应时间&#xff1a;应用的启动时间、页面加载速度、接口响应时间等。 2. CPU 使用率&#xff1a;应用在各种操作下的 CPU 占…

python中如何把list变成字符串

python中如何把list变成字符串&#xff1f;方法如下&#xff1a; python中list可以直接转字符串&#xff0c;例如&#xff1a; data ["hello", "world"] print(data1:,str(data)) 得到结果&#xff1a; (data1:, "[hello, world]") 这里将整个…

C脚本实现WIncc模拟量趋势窗口弹出

文章目录 前言一、步骤及解析二、运行画面演示三、总结 前言 本文给出了一种基于C脚本实现点击输入输出域对象&#xff0c;弹出对应模拟量趋势窗口的方法。 一、步骤及解析 在Wincc变量管理中&#xff0c;添加两个变量&#xff1b; 示例如下&#xff1a; 将以上两个变量添加到…