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 并重新下载。

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

相关文章
|
19天前
|
Ubuntu 计算机视觉 芯片
ADE下载问题解决:编译OpenCV于Ubuntu 18.04
如果显示了OpenCV的版本号,那恭喜你,一道编译大餐现已酣畅淋漓,色香味俱佳,等你品尝。
35 8
|
2月前
|
Ubuntu 开发工具
Ubuntu环境下以源码编译方式安装Vim的步骤介绍
以上就是在Ubuntu环境下以源码编译方式安装Vim的全部步骤。就像煮一杯咖啡,虽然过程中需要耐心和一些技巧,但等到你熟悉之后,你会发现,不仅可以定制自己喜欢的口味,过程中的乐趣也是不能忽视的。希望你在编译安装Vim的过程中,能体验到这份乐趣。
108 21
|
3月前
|
Ubuntu PHP
Ubuntu下使用apt为Apache2编译PHP7.1
以上就是在Ubuntu系统下,使用apt为Apache2编译PHP7.1的过程。希望这个过程对你有所帮助,如果你在执行过程中遇到任何问题,都可以在网上找到相关的解决方案。
64 25
|
3月前
|
Ubuntu PHP Apache
在Ubuntu系统中为apt的apache2编译PHP 7.1的方法
以上就是在Ubuntu系统中为apt的apache2编译PHP 7.1的方法。希望这个指南能帮助你成功编译PHP 7.1,并在你的Apache服务器上运行PHP应用。
99 28
|
3月前
|
Ubuntu 开发工具 C语言
Ubuntu环境下的Samba源码编译
以上就是在Ubuntu环境下编译Samba源码的步骤。希望这个指南能帮助你成功地从源码编译Samba。如果你在编译过程中遇到任何问题,你可以查阅Samba的官方文档,或者在网上搜索相关的教程和解决方案。
96 23
|
3月前
|
Ubuntu 编译器 开发工具
基于Ubuntu Server的YTM32 SDK工程编译
希望这个“烹饪”比喻能帮助你理解SDK工程编译的过程。记住,编程就像烹饪一样,需要耐心,实践,和不断的学习。祝你烹饪愉快!
69 21
|
4月前
|
Ubuntu 数据可视化 开发工具
【VTK】ubuntu手动编译VTK9.3 Generating qmltypes file 失败
通过以上步骤,您可以成功解决在Ubuntu上编译VTK 9.3时遇到的 `Generating qmltypes file`失败的问题。关键在于确保系统正确安装了所需的Qt库,并通过CMake配置正确的路径。编译完成后,您将拥有一个功能完备的VTK库,可以用于各种可视化任务。
84 14
|
6月前
|
Ubuntu 开发工具 git
Ubuntu编译ffmpeg解决错误:ERROR: avisynth/avisynth_c.h not found
通过本文的详细指导,您可以顺利地在Ubuntu系统上配置和编译FFmpeg,并解决Avisynth头文件缺失的问题。
260 27
|
6月前
|
Ubuntu 计算机视觉 C++
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
142 43
|
6月前
|
Ubuntu 计算机视觉 C++
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
158 30