Ubuntu22.04LTS编译Frida历史版本,环境配制及细节调整

2024-02-18 21:12

本文主要是介绍Ubuntu22.04LTS编译Frida历史版本,环境配制及细节调整,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

经常使用Frida的朋友们可能会遇到Frida的各种问题需要自定义的,而这时候Frida的本地编译就显得很重要了。

最近一位朋友发现使用Frida14/15/16版的server只能连拉一定数量的设备,超过了frida-device-manager便不能连接设备。

实现没有办法,我只好去修改源码,然后自己搭建编译环境,然后就有了这次的编译Frida。

一、系统

OS: Ubuntu22.04LTS

二、相关资源

参考了别人编译的文章,也放一些相关资源链接在这里

1.frida源码
GitHub - frida/frida: Clone this repo to build Frida

2.frida官方文档
Frida • A world-class dynamic instrumentation toolkit | Observe and reprogram running programs on Windows, macOS, GNU/Linux, iOS, watchOS, tvOS, Android, FreeBSD, and QNX

3.frida编译篇
Building | Frida • A world-class dynamic instrumentation toolkit

三、系统应用安装

在编译环境部署前,系统也需要安装一些应用,比如git, curl, 也相当于是一些常用的应用,一般开发人员的电脑上,这些应用应该不会没有。

还有一点就是必要的时候,需要科学上网。

这里不再多讲,直接上重点吧。

四、源码和环境部署

1、拉取Frida源码

git clone --recurse-submodules https://github.com/frida/frida或者git clone --recurse-submodules https://github.com/frida/frida.git

注意: 这样拉取的是Frida当前最新版本的源码,如果需要编译的是历史版本,需要再用git同步到历史

git checkout 15.2.2 #切换tag
git submodule update --recursive #其他子模块也跟着一起更新下或者使用commit 3ff85a5比如Frida 15.2.2的commit为 3ff85a5git checkout 3ff85a5
git submodule update --recursive

2、node/npm版本

虽然frida的作者推荐新版本的nodejs和npm,尤其是v20和更新版本,但每一个版本的frida release都会有固定版本的nodejs,如果想要不出错,还是建议使用release版本中的node版本

其中node版本和NODE_MODULE_VERSION对照表可以网上查询

而我本次编译,采用的是108对应的v18.12.0。

nodejs历史版本下载: Index of /download/release/

设置环境变量:

# set node
export NODE_HOME=/home/ubuntu/work/node-v18.12.0-linux-x64
export PATH=$PATH:${NODE_HOME}/bin

验证环境变量设置:

注意:设置环境变量的方便有三种,分别是设置 ~/.bashrc, /etc/profile, /etc/environment。第一种只适用于当前登录用户,第二种和第三种会保存给所有用户。

细节可以网上搜索,很多文章。

3、安卓NDK

关于安卓NDK的版本,不同的Frida也会有不同的要求,具体的版本在你的Frida源码目录:/frida/releng/setup-env.sh。

打开文件,即可以找到。

下载地址:https://developer.android.com/ndk/downloads?hl=zh-cn

然后设置NDK的环境变量

#set NDK env
export NDK_HOME=/home/ubuntu/work/android-ndk-r24
export PATH=$NDK_HOME:$PATH

验证NDK环境变量:

4、python环境

Frida要求python3环境,而Ubuntu一般会自带python3, 比如我的就是python3.10。而且Frida编译会自动使用"python3"来调用python3。

系统没有安装的,或者版本不对的,可以自行安装。

5、安卓SDK安装。

目前安装安卓SDK的方法还是用android-studio靠谱,也简单。

然后设置SDK的环境变量

#set sdk
export ANDROID_SDK_HOME=/home/ubuntu/Android/Sdk
export PATH=$PATH:${ANDROID_SDK_HOME}/tools
export PATH=$PATH:${ANDROID_SDK_HOME}/build-tools/29.0.0
export PATH=$PATH:${ANDROID_SDK_HOME}/platform-tools

验证SDK变量设置成功:

6、JDK环境

JDK使用1.8,相信只要做开发的人都会部署。

这里有一个问题就是很多人电脑上有多个java环境,怎么把jdk8变成首选的环境变量呢:

sudo update-alternatives --config java

五、toolchain和sdk下载

个人推荐使用Frida的自动下载。

自动下载:

运行

make -f Makefile.skd.mk FRIDA_HOST=android-arm64

frida会自动同步toolchain和sdk, 这一步可能会需要很久。

六、开始编译

输入命令

make -f Makefile.linux.mk

可以看到各个版本的编译命令:

然后输入命令:

make core-android-arm64

这篇关于Ubuntu22.04LTS编译Frida历史版本,环境配制及细节调整的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/722474

相关文章

Python实现剪贴板历史管理器

《Python实现剪贴板历史管理器》在日常工作和编程中,剪贴板是我们使用最频繁的功能之一,本文将介绍如何使用Python和PyQt5开发一个功能强大的剪贴板历史管理器,感兴趣的可以了解下... 目录一、概述:为什么需要剪贴板历史管理二、功能特性全解析2.1 核心功能2.2 增强功能三、效果展示3.1 主界面

Java版本不兼容问题详细解决方案步骤

《Java版本不兼容问题详细解决方案步骤》:本文主要介绍Java版本不兼容问题解决的相关资料,详细分析了问题原因,并提供了解决方案,包括统一JDK版本、修改项目配置和清理旧版本残留等步骤,需要的朋... 目录错误原因分析解决方案步骤第一步:统一 JDK 版本第二步:修改项目配置第三步:清理旧版本残留兼容性对

Gradle下如何搭建SpringCloud分布式环境

《Gradle下如何搭建SpringCloud分布式环境》:本文主要介绍Gradle下如何搭建SpringCloud分布式环境问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Gradle下搭建SpringCloud分布式环境1.idea配置好gradle2.创建一个空的gr

Linux搭建单机MySQL8.0.26版本的操作方法

《Linux搭建单机MySQL8.0.26版本的操作方法》:本文主要介绍Linux搭建单机MySQL8.0.26版本的操作方法,本文通过图文并茂的形式给大家讲解的非常详细,感兴趣的朋友一起看看吧... 目录概述环境信息数据库服务安装步骤下载前置依赖服务下载方式一:进入官网下载,并上传到宿主机中,适合离线环境

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave