Ubuntu上编译多个版本的frida

简介: 【7月更文挑战第16天】在Ubuntu上编译多个版本的Frida(如15.1.28和16.1.4),首先确保系统为Ubuntu 20(WSL)或其他版本,并安装`build-essential`, `git`, `lib32stdc++-9-dev`, `libc6-dev-i386`等依赖。还需安装Node.js(例如20.15.1版)。通过`git clone`获取Frida源码,并根据所需版本进入对应分支。设置环境变量以指向正确的NDK和Node.js路径,可通过脚本如`env15.sh`来避免污染全局环境。

在 Ubuntu 上编译多个版本的 Frida,可以按照以下步骤进行操作(以下以编译 Frida 15.1.28 和 16.1.4 为例):


准备工作


  • 操作系统:Ubuntu 20(WSL)或其他版本。


安装依赖


sudo apt-get install build-essential git lib32stdc++-9-dev libc6-dev-i386 -y


并安装 Node.js(例如版本 20.15.1),从官网下载对应的安装包并解压。


下载源码


  1. 克隆 Frida 代码仓库:git clone -b 15.1.28 --recurse-submodules https://github.com/frida/frida
  2. 进入 Frida 目录:cd frida


对于不同版本的 Frida 编译,需要注意其对应的 NDK 版本要求。可以通过查看releng/setup-env.sh文件中的相关内容来确定所需的 NDK 版本,然后从https://github.com/android/ndk/wiki/unsupported-downloads下载相应的 NDK 版本。


开始编译特定版本(以 Frida 15.1.28 为例)

为了避免污染全局环境,可以创建一个脚本(如env15.sh)来设置相关环境变量,然后执行该脚本。例如:


export android_ndk_root=/home/kanade/android-ndk-r24
export node_home=/home/kanade/node-v20.15.1-linux-x64
export path=${node_home}/bin:$android_ndk_root:$path
# 设置代理(如果需要,根据实际代理地址修改)
exporthttps_proxy="http://192.168.31.25:7890"
exporthttp_proxy="http://192.168.31.25:7890"


执行source env15.sh后,开始编译:make core-android-arm64,它会先下载 toolchain 和 sdk。如果编译过程中卡住且 CPU 占用率不高,通常是网络原因导致,可以参考上述设置代理的方法。


编译完成后,构建好的文件在build/frida-android-arm64/bin目录下。如果想编译其他平台的版本,可以输入make查看所有支持的平台,然后选择需要编译的平台进行编译。


编译其他版本(以 Frida 16.1.4 为例)


  1. 切换到指定版本:git checkout 16.1.4,并更新子模块:git submodule update
  2. 将 NDK 版本切换到对应版本(如 25)。
  3. 清理之前的编译:make clean
  4. 按照之前的编译步骤重新编译:make core-android-arm64


编译更低版本(如 14.2.2)的注意事项

除了上述基本操作外,还需要创建一个build/frida-version.h文件,并写入相应版本的信息,例如:

这样可以避免出现类似“未定义的版本”错误。为了避免不同版本之间的干扰,建议每个版本在一个独立的目录中进行编译,以防止每次编译都需要删除 toolchain 和 sdk 并重新下载。

此外,编译过程中可能会遇到一些其他问题,例如缺少依赖库或工具。如果遇到问题,可以根据具体的错误提示进行相应的解决,如安装缺失的依赖、调整环境变量等。同时,确保网络连接稳定,以便顺利下载所需的文件和工具。

相关文章
|
9天前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(五):18.04安装多版本CUDA
这篇博客文章介绍了在Ubuntu 18.04系统上如何安装和切换不同版本的CUDA,以及如何安装不同版本的cuDNN。
48 2
|
2月前
|
Ubuntu Linux
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
500 3
|
8天前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
42 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
14天前
|
Ubuntu Shell API
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
|
14天前
|
并行计算 Ubuntu 算法
Ubuntu18 服务器 更新升级CUDA版本 pyenv nvidia ubuntu1804 原11.2升级到PyTorch要求12.1 全过程详细记录 apt update
Ubuntu18 服务器 更新升级CUDA版本 pyenv nvidia ubuntu1804 原11.2升级到PyTorch要求12.1 全过程详细记录 apt update
47 0
|
1月前
|
Ubuntu 编译器 C语言
Ubuntu 源码编译指定版本 make:神秘代码背后的激情冒险,等你来战!
【9月更文挑战第8天】在Ubuntu中,编译指定版本的源码`make`是一项挑战但也极具价值的任务。它允许我们根据特定需求定制软件,提升性能与功能适配。首先需安装必要工具包如GCC等;接着下载所需源码并阅读相关文档以了解编译要求。通过运行`./configure`、`make`及`sudo make install`命令完成编译安装流程。过程中可能遇到依赖项缺失或编译选项设置不当等问题,需根据错误提示逐一解决。对于大型项目,可利用多核编译加快速度。掌握这一技能有助于更好地探索开源世界。
37 2
|
1月前
|
存储 Kubernetes Ubuntu
Ubuntu 22.04LTS版本二进制部署K8S 1.30+版本
这篇文章详细介绍了在Ubuntu 22.04 LTS系统上使用VMware Fusion虚拟化软件部署Kubernetes 1.30+版本的完整过程,包括环境准备、安装containerd、配置etcd、生成证书、部署高可用组件、启动Kubernetes核心组件以及网络插件的部署和故障排查。
98 4
|
2月前
|
Ubuntu 编译器 C语言
Ubuntu 源码编译指定版本 make:神秘代码背后的激情冒险,等你来战!
【8月更文挑战第19天】在Ubuntu中编译指定版本的`make`工具是一项高级技巧,能让你针对特定需求定制软件。首先确保已安装`build-essential`等必要组件。下载所需版本源码后,遵循README指南配置与编译。使用`./configure`检测环境,`make`编译,最后`sudo make install`安装。面对问题如缺失依赖或编译选项不当,需耐心解决。对于大型项目,可利用多核加速编译,如`make -j 4`。这一过程虽具挑战,却能显著提升软件性能与功能适配。
55 2
|
1月前
|
Ubuntu NoSQL Linux
在Ubuntu上用Qemu模拟ARM版本的Fedora39
在Ubuntu上用Qemu模拟ARM版本的Fedora39
|
1月前
|
Ubuntu
编译ubuntu内核
编译ubuntu内核