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版本切换工具pyenv的安装及用法

《python版本切换工具pyenv的安装及用法》Pyenv是管理Python版本的最佳工具之一,特别适合开发者和需要切换多个Python版本的用户,:本文主要介绍python版本切换工具pyen... 目录Pyenv 是什么?安装 Pyenv(MACOS)使用 Homebrew:配置 shell(zsh

MySQL查看表的历史SQL的几种实现方法

《MySQL查看表的历史SQL的几种实现方法》:本文主要介绍多种查看MySQL表历史SQL的方法,包括通用查询日志、慢查询日志、performance_schema、binlog、第三方工具等,并... 目录mysql 查看某张表的历史SQL1.查看MySQL通用查询日志(需提前开启)2.查看慢查询日志3.

python项目环境切换的几种实现方式

《python项目环境切换的几种实现方式》本文主要介绍了python项目环境切换的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 如何在不同python项目中,安装不同的依赖2. 如何切换到不同项目的工作空间3.创建项目

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

Java编译错误java.lang.NoSuchFieldError的解决方案详析

《Java编译错误java.lang.NoSuchFieldError的解决方案详析》java.lang.NoSuchFieldError是Java中的一种运行时错误,:本文主要介绍Java编译错... 目录前言解决方案1. 统一JDK版本环境2. 优化maven-compiler-plugin配置3. 清

Python包管理工具uv下载python版本慢问题解决办法

《Python包管理工具uv下载python版本慢问题解决办法》uv是一个非常快的Python包和项目管理器,用Rust编写,使用热缓存安装Trio的依赖项的速度对比,:本文主要介绍Python包... 目录发现问题对于 MACOS / linux 用户 (zsh/bash):对于 Windows 用户:总

GO语言中gox交叉编译的实现

《GO语言中gox交叉编译的实现》本文主要介绍了GO语言中gox交叉编译的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、安装二、使用三、遇到的问题1、开启CGO2、修改环境变量最近在工作中使用GO语言进行编码开发,因

一篇文章彻底搞懂macOS如何决定java环境

《一篇文章彻底搞懂macOS如何决定java环境》MacOS作为一个功能强大的操作系统,为开发者提供了丰富的开发工具和框架,下面:本文主要介绍macOS如何决定java环境的相关资料,文中通过代码... 目录方法一:使用 which命令方法二:使用 Java_home工具(Apple 官方推荐)那问题来了,

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法