Frida技术—逆向开发的屠龙刀

简介

Frida是一种基于JavaScript的动态分析工具,可以用于逆向开发、应用程序的安全测试、反欺诈技术等领域。Frida主要用于在已安装的应用程序上运行自己的JavaScript代码,从而进行动态分析、调试、修改等操作,能够绕过应用程序的安全措施,可以助力于对应用程序进行逆向分析。

Frida不需要依赖于任何特殊的工具或设备,只需要在目标设备上安装Frida服务器,就可以使用Frida客户端与之通信。

Frida基本使用示例

下面是Frida逆向开发基本使用操作代码示例:

安装Frida客户端

在Windows / macOS / Linux平台上,使用以下命令安装Frida客户端:

pip install frida

在Android / iOS平台上,可以直接从Frida官方网站下载相应的安装包。

启动Frida服务器

在目标设备上,运行以下命令启动Frida服务器:

frida-server

或者使用以下命令指定端口号:

frida-server -l 1234

连接Frida服务器

使用Python代码连接到Frida服务器:

import frida
​
device = frida.get_device_manager().enumerate_devices()[-1]
session = device.attach("com.example.app")

在设备列表中选择目标设备,使用attach()方法连接到指定的应用程序。

Hook某个函数

使用JavaScript代码Hook应用程序中的某个函数:

Interceptor.attach(Module.findExportByName("libexample.so", "example_func"), {
  onEnter: function(args) {
    console.log("example_func enter");
},
  onLeave: function(retval) {
    console.log("example_func leave");
}
});

该代码将Hook应用程序中名为example_func的函数,当进入函数时,会打印"example_func enter",当离开函数时,会打印"example_func leave"。

内存读取

使用JavaScript代码读取目标进程中的内存:

var addr = Module.findExportByName("libexample.so", "example_data");
var data = Memory.readByteArray(addr, 0x100);
console.log(hexdump(data));

该代码读取了名为example_data的变量,并将其打印到控制台上。

常见操作

  • 劫持Java的函数调用:
Java.perform(function() {
    var MainActivity = Java.use('com.example.MainActivity');
    MainActivity.onCreate.implementation = function(savedInstanceState) {
        console.log("[*] onCreate hooked");
        this.onCreate(savedInstanceState);
    };
​
    var TextView = Java.use('android.widget.TextView');
    TextView.setText.implementation = function(text) {
        console.log("[*] setText hooked");
        this.setText(text);
    };
});
  • 模拟按钮点击事件:
var button = Java.use('android.widget.Button');
var view = Java.cast(button.$new(), Java.use('android.view.View'));
Java.perform(function() {
    view.performClick();
});
  • 绕过SSL Pinning:
var SSLPinning = Java.use('com.example.SSLPinning');
SSLPinning.execute.overload('javax.net.ssl.SSLSocketFactory', 'java.lang.String', 'int').implementation = function(socketFactory, hostname, port) {
    console.log("[*] SSLPinning.execute(" + socketFactory + ", " + hostname + ", " + port + ")");
    var allowAllHostnameVerifier = Java.use('javax.net.ssl.HttpsURLConnection').getDefaultHostnameVerifier();
    var nullarray = Java.array('java.lang.Object', [null]);
    allowAllHostnameVerifier.verify(hostname, socketFactory.createSocket(hostname, port).getSession());
    return true;
};

以上是Frida逆向开发的基本操作代码示例,使用Frida可以进行更多复杂的逆向操作和应用程序开发。

这是Frida逆向中的基本操作解析,更多的Frida逆向技术详细类目如下:

1.Frida环境搭建

2.Frida逆向基础

  • 构造函数
  • 数组
  • 对象
  • Map
  • 类参数

3.RPC远程调用的逆向

4.复杂案例分析

  • hook时机
  • 算法相关
  • 制作dex

5.Frida hook大全

  • 框架基础层hook
  • 组件和事件hook
  • 网络框架的hook

ndk的hook

  • hook native
  • JNI框架层的hook
  • libc框架层的hook
  • linker框架层的hook

6.反调试

以上就是Android逆向开发中的Frida逆向技术的技术分布,具体详细内容学习,可以参考《Android核心技术手册》点击查看详情。

最后学习Frida注意:

JavaScript基础

Frida主要使用JavaScript语言进行脚本编写,因此需要掌握JavaScript基本语法、数据类型、运算符、函数等基础知识。

动态调试应用程序的基础知识

为了进行Frida逆向开发,需要具备一定的应用程序分析和调试经验,例如熟悉调试器的使用、汇编代码的阅读等。

Frida API的使用

Frida提供了丰富的API,支持对设备、进程、模块、函数、内存等方面进行动态分析和修改。为了有效使用Frida,需要学习和掌握Frida API的使用方法。

常见逆向技术的应用

Frida可以用于Hooking、破解加密算法、绕过安全措施等逆向开发场景。因此,需要了解一些常见逆向技术的应用场景和方法,例如反汇编、静态分析、动态分析等。

实践经验的积累

Frida逆向开发需要不断积累实践经验,需要对应用程序和Frida API的使用有足够的了解,实践和探索各种场景下的使用方法和技巧才能不断提高技能。

总之,学习Frida需要掌握一定的JavaScript编程基础和应用程序分析、调试技能,需要了解Frida API的使用方法,同时也需要积累实践经验并探索各种应用场景。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mac下部署和访问 Kubernetes 仪表板(Dashboard)

简介 Dashboard 是基于网页的 Kubernetes 用户界面。 你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 你可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kub…

QT--配置Opencv

提示:本文为学习记录,若有疑问,请及时联系作者。 文章目录 前言一、下载已编译的opencv1..解压2..path路径 二、使用步骤1..pro文件2..h文件 总结 前言 只做第一个我,不做第二个谁。 一、下载已编译的opencv 适用于mingw编译器…

NoSQL数据库

NoSQL数据库 NoSQL简介NoSQL兴起的原因NoSQL与关系数据库的对比NoSQL的四大类型键值数据库列族数据库文档数据库图形数据库不同类型数据库比较分析RedisMongoDBCassandraNeo4j NoSQL三大基石CAPBASE最终一致性 NoSQL简介 “Not Only SQL”泛指非关系型的数据库,区别…

07_scrapy的应用——获取电影数据(通过excel保存静态页面scrapy爬虫数据的模板/通过数据库保存)

0、前言: 一般我们自己创建的一些python项目,我们都需要创建虚拟环境,其中会下载很多包,也叫做依赖。但是我们在给他人分享我们的项目时,不能把虚拟环境打包发送给别人,因为每个人电脑系统不同,我们可以把依赖导出为依赖清单,然后别人有了我们的依赖清单,就可以用一条…

项目使用tensorflow2会出错,下载并使用tensorflow1

背景:使用pycharm安装总显示安装失败,使用pip安装也不行,只能使用conda配置虚拟环境手动安装 1、下载安装anaconda 官网下载,双击安装。用anaconda就是想使用虚拟环境,万一没弄好直接删了重新搞就行。 2、创建虚拟环境…

Https加密超文本传输协议的运用

1.https的相关知识 1.1 https的简介 HTTPS (全称:Hypertext Transfer Protocol Secure ),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加…

使用POI实现JAVA操作Excel

Apache POI POI提供API给JAVA程序对Microsoft Office格式档案读和写的功能 POI工具介绍 POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。主要是运用其中读取和输出excel的功能。 POI官网地…

常用设计模式(三)

接着之前的思路今天来介绍一下常用的设计模式有哪些 单例模式(Singleton Pattern) 又称为单体模式,保证一个类只有一个实例,并提供一个访问它的全局访问点。也就是说,第二次使用同一个类创建新对象的时候&#xff0c…

es相关的知识点

海量数据下如何提升es的操作性能 .filesystemcache os cache操作系统缓存 es中的数据,实际上写入磁盘,磁盘文件的操作系统,实际上会将数据写入到oscache中 es的搜索引擎严重依赖于底层的filesystemcache 如果filesystemcache的内存足够大,可以容纳所有的index segmentfile索引…

ABB CI546 3BSE012545R1 模块

ABB CI546 3BSE012545R1 模块. ABB CI546 3BSE012545R1 模块 电子电工技术的电力系统分析 1电子电工技能特色 电子电工技能是凭仗计算机技能开展起来的,并朝着智能化、网络化的方向开展。随着时代的开展,新式技能不断涌现,使传统电工技能运用…

基于 opencv 的人脸识别上课考勤系统,附源码,可作为毕业设计

一、简介 这个人脸识别考勤签到系统是基于大佬的人脸识别陌生人报警系统二次开发的。 项目使用Python实现,基于OpenCV框架进行人脸识别和摄像头硬件调用,同时也用OpenCV工具包处理图片。交互界面使用pyqt5实现。 该系统实现了从学生信息输入、人脸数据…

【微服务】SpringBoot 插件化开发模式详细总结

目录 一、前言 1.1 使用插件的好处 1.1.1 模块解耦 1.1.2 提升扩展性和开放性 1.1.3 方便第三方接入 1.2 插件化常用实现思路 二、Java常用插件实现方案 2.1 serviceloader方式 2.1.1 java spi 2.1.2 java spi 简单案例 2.2 自定义配置约定方式 2.2.1 添加配置文件…

【备战秋招】每日一题:4月15日美团春招:题面+题目思路 + C++/python/js/Go/java带注释

2023大厂笔试模拟练习网站(含题解) www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200道互联网大厂模拟练习题&a…

【深入浅出 Spring Security(九)】解决跨域问题和 Axios 所需配置

跨域 一、SpringMVC 跨域的解决方案CrossOrigin(注解的方式解决)addCorsMappings(实现WebMvcConfigurer接口,重写方法) 二、Spring Security 跨域的解决方案前后端跨域测试(前端相关配置) 啥是跨…

怎样才算一个计算机知识体系完整的毕业生

为什么突然想写这个话题呢? 最近有不少新关注的读者,在后台问:大学学 Java 和 C 哪个好找工作,学前端好还是后端好,该学 Vue 还是 React。。。 仿佛看到了自己当年的模样,所以觉得有必要单独写一篇文章&a…

【数据结构与算法】02 栈 (栈的多重含义,静态、动态数组栈(顺序栈),链式栈,双端栈,括号匹配)

一、栈的多重含义1.1 硬件栈1.2 运行时栈1.3 软件栈1.4 技术栈1.5 TCP/IP协议栈 二、数据结构中的栈2.1 概念2.2 栈的操作2.3 数组栈(顺序栈)2.31 数组栈特性2.32 C语言实现▶ 静态数组栈▶ 动态数组栈 2.4链式栈2.41 链式栈特性2.42 C语言实现 三、进阶…

「展会前线」易天光通信盛装亮相2023越南通讯展会

2023年6月7日,在历经了忙碌有序的前期准备工作后,易天光通信销售团队带着满满的信心踏上了越南通讯展会之旅! “千呼万唤始出来,犹抱琵琶半遮面”。2023年6月8日,各方期待已久的2023越南通讯展会在越南胡志明市正式开…

【新版】系统架构设计师 - 系统配置与性能评价

个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 系统配置与性能评价考点摘要系统性能概述性能指标性能调整阿姆达尔解决方案性能评价方法 架构 - 系统配置与性能评价 考点摘要 性能指标(★★)阿姆达尔解决方案&#xff…

第Y3周:yolov5s.yaml文件解读

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊|接辅导、项目定制 ✅本周任务:将yolov5s网络模型中第4层的C3*2修改为C3*1,第6层的C3*3修改为C3*2。 简单介绍: YOLOv5配置了…

MapBox实现框选查询,多边形范围查询

还是老规矩先来看效果: mapbox官方没有为我们提供框选查询的案例,所以这个功能需要我们自己写。在openlayers框架中是有一个矩形范围查询的例子,但是在maobox没有。 那么我们就来说一下如何来做这个效果吧,首先这个效果可以分为两…