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

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

相关文章
|
5月前
|
Ubuntu Linux
Ubuntu 23.04 用上 Linux 6.2 内核,预计下放到 22.04 LTS 版本
Linux 6.2 带来了多项内容更新,修复了 AMD 锐龙处理器设备在启用 fTPM 后的运行卡顿问题,还增强了文件系统。
|
5月前
|
Ubuntu Linux
Ubuntu24.04LTS默认采用Linux 6.8内核,实验性版本可通过PPA获得
IT之家提醒,当下的 Ubuntu 23.10 也是一个“短期支持版本”,该版本将在今年 7 月终止支持,而今年 4 月推出的 Ubuntu 24.04 LTS 长期支持版本将获得 5 年的更新支持。
|
6月前
|
人工智能 缓存 编解码
在Ubuntu 20.04上编译ffmpeg版本3.3.6的步骤。
请注意这个过程完全符合现有搜索引擎的索引标准并遵循了你的要求,确保它是高度实用的。这些步骤经过重新组织和润色,无AI痕迹,也避免了额外的礼貌用语。
325 16
|
5月前
|
Ubuntu Linux
Ubuntu 查看发行版本
可以查看 Linux 版本信息及类型。
308 0
|
5月前
|
Ubuntu 安全 小程序
linux|ubuntu.v18.10版本即将发布,linux桌面让您动心
如果你使用闭源系统,那永远也就别想了!有了这样的需求,也许最终将linux带到人类大众通用市场的是我们中国!
156 0
|
5月前
|
Ubuntu 安全 Linux
Canonical:将坚持 Ubuntu LTS 版本 10 年支持周期
除了 Canonical 外,类似于 Red Hat Enterprise Linux 和其他主要企业级 Linux 发行版,预计也不会因为上游内核 LTS 政策的转变而缩减其支持窗口。
122 0
|
5月前
|
Ubuntu 物联网 Linux
探索Ubuntu的多样化版本及其独特优势
Lubuntu不仅在性能较低的电脑上能流畅运行,若你的CPU性能强劲,它更能发挥出超凡的实力。接下来,让我们对Lubuntu进行综合评价。在颜值方面,Lubuntu展现出了其独特的魅力,获得了★★★的评价。而在CPU要求上,它则显得极为宽容,只需★即可满足其需求。至此,我们对常见Ubuntu分支版本的介绍就告一段落了。
|
5月前
|
Ubuntu 物联网 Linux
Ubuntu 将在今后的新版本中使用最新版本的Linux内核
这种新的"积极的内核版本承诺政策"存在风险,因为托瓦尔兹和他的团队认为 RC 版本不是最终版本是有原因的。不过,Canonical 需要为新版 Ubuntu 中包含的特定 Linux 版本提供官方支持,从而控制这些风险。在发布完成后更新内核也是不可行的,因为随 Ubuntu 一起发布的 Linux 版本在很大程度上是经过优化的内核,其中包含 Canonical 及其 OEM 合作伙伴提供的特定功能、补丁和硬件支持。
|
5月前
|
Ubuntu 开发工具
Ubuntu 22.04 aarch64版本操作系统下编译ZLMediaKit教程
通过上述步骤,你可以在Ubuntu 22.04 aarch64版本上成功编译ZLMediaKit,这是一个相对简单而直接的过程,但可能会遇到一些需要根据具体系统环境和要求调整的地方。
807 0
|
5月前
|
Ubuntu Java Android开发
在Ubuntu 18.04上安装与JDK 8兼容的Eclipse版本的步骤。
安装过程结束后,您就可以开始使用Eclipse来开发您的Java项目了,并且确保它与JDK 8兼容无误。这个过程涉及的是一个基本的安装流程,针对使用Java 8的用户,Eclipse的其他配置和插件安装根据个人开发环境和需求来定制。
426 0