Ubuntu上编译多个版本的frida

news2025/2/23 14:19:36

准备工作

Ubuntu20(WSL)

安装依赖

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

nodejs

去官网[1]下载nodejs,版本的话我就选的20.15.1:

tar -xf node-v20.15.1-linux-x64.tar.xz

下载源码

git clone -b 15.1.28 --recurse-submodules https://github.com/frida/frida

cd frida

ndk

frida各个版本需要的ndk版本都不一样,可以通过cat releng/setup-env.sh |grep ndk查看

https://github.com/android/ndk/wiki/Unsupported-Downloads

开始编译

为了方便先写个env15.sh的脚本,然后执行source env15.sh,这样不会污染全局环境,如果你想编译frida16的话,再写个env16.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

开始编译:make core-android-arm64,会先下载toolchain和sdk。

然后就一直卡在这里,这种没有占用CPU的卡住一般都是网络原因

所以在env15.sh加个设置代理的命令:

export https_proxy="http://192.168.31.25:7890"
export http_proxy="http://192.168.31.25:7890"

重新编译:make core-android-arm64,等待个两三分钟就编译完成了:

构建好的文件在build/frida-android-arm64/bin

想编译其他平台的话,可以输入make先查看所有的平台,选择需要编译的平台

测试

将frida-server推送到手机试试,运行没问题就不测试脚本了

编译toolchain和sdk

这个一般不用操作,当你使用make编译时,如果不存在默认会下载编译好的,这里就只是提一下。

编译toolchain:proxychains make -f Makefile.toolchain.mk

解决方法[2]: sudo apt install m4 -y

编译sdk:proxychains make -f Makefile.sdk.mk FRIDA_HOST=linux-x86_64

这个不显示具体的错误,看Makefile.sdk.mk的282行也看不出什么猫腻,但可以知道的是在构建gn的时间出错的。所以可以看一下gn的构建日志,先找一下日志所在路径,tree -NCfhl |grep build.log

查看这个文件发现是python命令没找到,看了下确实没有,因为现在Ubuntu自带的是python3,之前从Makefile.sdk.mk里看到执行的是deps/gn/build/gen.py这个python代码,打开文件确认下是支持python3的语法,所以做个软链接应该就可以: sudo ln -s /usr/bin/python3 /usr/bin/python

运行sudo releng/setup-env.sh加载编译好的toolchain和sdk

编译其他版本

git checkout 16.1.4 git submodule update

然后将ndk版本切换到25,接着就可以开始编译了。

make clean make core-android-arm64

编译低版本

编译更低版本时(14.2.2),除了上面的操作,还需要创建一个build/frida-version.h文件,写入以下内容

#ifndef __FRIDA_VERSION_H__
#define __FRIDA_VERSION_H__

#define FRIDA_VERSION "14.2.2"

#define FRIDA_MAJOR_VERSION 14
#define FRIDA_MINOR_VERSION 2
#define FRIDA_MICRO_VERSION 2
#define FRIDA_NANO_VERSION 0

#endif

不然会出现下面的错误:

其实还是一个版本一个目录文件比较好,不然每次编译都要删除toolchain和sdk重新下载。

下一篇文章说一下怎么魔改frida去特征,不过现在很多APP和壳的检测都比较严格了,去特征的frida也可能过不了检测,还得自己能会找监测点去过检测。

引用链接
  • [1] https://nodejs.org/zh-cn/download/prebuilt-binaries
  • [2] https://github.com/conan-io/conan-center-index/issues/8639
参考链接
  • https://mp.weixin.qq.com/s/4MOTfYm-GMpZQFsLKOOHwQ

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1954495.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

科研论文之Word论文编辑

这篇文章介绍在word中怎么编辑论文,包括论文的模板、论文的字体设置、论文的插图、论文的参考文献等等。 为便利知识传播,我的所有文章都不会设置收费专栏。但文章写作不易,如有可能麻烦打赏一下,金额随意。收款码见下图&#xff…

Ubuntu下手动部署Java项目

1.1 打包项目上传至Ubuntu 1.2 java -jar 项目压缩包 1.3 确认防火墙打开 1.4 令进程在后台运行 nohup java -jar boot工程.jar &> hello.log & 1.5 停止项目运行 查看进程号,杀掉进程

基于微信小程序+SpringBoot+Vue的刷题系统(带1w+文档)

基于微信小程序SpringBootVue的刷题系统(带1w文档) 基于微信小程序SpringBootVue的刷题系统(带1w文档) 本系统是将网络技术和现代的管理理念相结合,根据试题信息的特点进行重新分配、整合形成动态的、分类明确的信息资源,实现了刷题的自动化,…

axure制作切换栏--动态面板的应用

先看下效果:点击上面的切换栏 切换到西游记栏目: 切换到水浒传栏目: 上述两个图片比对可以发现,在点击切换栏的时候,里面的内容以及切换栏的下面蓝色横线也会发生对应的变化。这里涉及到两个地方的变化,就…

VirtualBox虚拟机安装,Ubuntu iso 镜像下载

利用VirtualBox,在Windows主机上装Ubuntu的虚拟机 视频教程在这: Virtualbox虚拟机安装,Ubuntu iso镜像下载_哔哩哔哩_bilibili 一、Ubuntu iso 镜像下载 我们是要在Windows主机上装Ubuntu的虚拟机,下载下Ubuntu iso 镜像。下…

react中如何避免父子组件同时渲染(memo的使用)

1.需求说明 react的渲染机制是父子组件同时渲染,不管子组件是否有变化只要父组件重新渲染了子组件就跟着重新渲染。为了避免不必要的消耗,我们可以使用memo钩子函数 2.使用memo前展示 import { memo,useState } from "react"function Son()…

【03】Java虚拟机是如何加载Java类的

从class文件到内存中的类,按先后顺序需要经过加载、链接以及初始化三个步骤 一、加载 加载就是查找字节流,并且据此创建类的过程。 除了启动类加载器(所有类加载器的祖师爷,由C实现,没有对应的Java对象)之外…

uniapp实现局域网(内网)中APP自动检测版本,弹窗提醒升级

uniapp实现局域网(内网)中APP自动检测版本,弹窗提醒升级 在开发MES系统的过程中,涉及到了平板端APP的开发,既然是移动端的应用,那么肯定需要APP版本的自动更新功能。 查阅相关资料后,在uniapp的…

安全哈希算法:SHA算法

🎯 主题简介 SHA(Secure Hash Algorithm)是比MD5更安全的哈希算法。通过案例形式了解SHA算法的原理、实现方法及注意细节。无论你是Python爱好者还是JavaScript高手,这篇内容都将为你提供一个深入了解SHA算法的机会。 &#x1f…

基于Libero的工程创建

基于Libero的工程创建 第一步:双击进入到工程界面,编写项目详细信息。 Project Name:标识您的项目名称。不要使用空格或保留的Verilog或VHDL关键字。 Project Location:在磁盘上标识您的项目位置。 Description:关于…

图论:1615. 最大网络秩(贪心,非完全图一定存在两个点之间没有边)

文章目录 1.计算出度排序哈希2.枚举3.贪心4.思考 1615. 最大网络秩 在不考虑两座道路直接相连时,我们求出入度(或出度)最大的两个点即可。 若相连,则存在一条边,所以我们将边存入一个集合中,快速查找是否存…

[每周一更]-(第107期):经典面试题-从输入URL到页面加载发生了什么

文章目录 过程概述简化版:详细版:1. 用户输入URL2. 浏览器解析URL3. DNS解析4. TCP连接5. SSL/TLS握手(如果使用HTTPS)6. HTTP请求和响应7. 浏览器渲染页面8. 处理后续请求 一般前后端都可以考察问题,让参与者了解网页…

WordPress设置固定连接后提示404

WordPress设置固定链接后出现404错误通常是因为服务器的伪静态规则没有正确设置。以下是几种常见的服务器环境下的解决方案: 宝塔面板:如果服务器安装了宝塔面板,可以在宝塔面板中选择对应的WordPress伪静态规则并保存设置 。 Apache服务器&a…

星间链路的卫星节点网络接口IP地址规划问题 based on 卫星互联网Walker星座

★★★第p个轨道面上的第n个卫星节点[ XL_p_n ]的IPv4子网和网络接口地址规划★★★ IPv4子网问题:中间2个点分十进制分别表示[P:轨道面索引]和[N:当前轨道面上的卫星索引]。考虑Exata设置IPv4子网默认为 190.0.0.0 ,不妨: 将某个轨道高度的W…

【通信模块】简单玩转WiFi模块(ESP32、ESP8266)

笔者学习太极创客的学习笔记,链接如下:www.taichimaker.com 前期准备 电脑端口 固件烧录 WIFI到网页 对应七层网络协议 WIFI工作模式(链路层) 接入点模式、无线中断模式、混合模式 IP协议(网络层) 子网…

【python】Python考研分数 线性回归模型预测(源码+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

前端缓存问题(浏览器缓存和http缓存)- 解决办法

问题描述:前端代码更新,但因浏览器缓存问题,导致页面源代码并未更新 查看页面源代码的方法:鼠标右键,点击查看页面源代码 如图: 解决方法: 注:每执行一步,就检查一下浏览…

c生万物系列(加减乘除模篇)

为了提高c语言的运行效率,我们需要采用更高效的运算,那么切入点就是随处可见的基本运算符合,从底层架构考虑,加减乘除的效率比位运算低很多,为了能够更好迎合CPU的二进制,有必要取代基本的加减乘除以及求余…

Java----队列(Queue)

目录 1.队列(Queue) 1.1概念 1.2队列的使用 1.3队列的模拟实现 1.4循环队列 1.4.1循环队列下标偏移 1.4.2如何区分队列是空还是满 1.5双端队列 (Deque) 1.队列(Queue) 1.1概念 队列:只允许在一端进行插入数据…

GraphRAG:全局搜索方法在RAG系统中的应用

GraphRAG:全局搜索方法在RAG系统中的应用 传统RAG系统的局限性全局搜索方法的优势全局搜索的工作流程关键配置参数实现考虑结论 在检索增强生成(Retrieval-Augmented Generation,RAG)系统中,传统的基线方法在处理需要跨…