首页
社区
课程
招聘
Ubuntu上编译多个版本的frida
发表于: 2024-7-26 13:57 2087

Ubuntu上编译多个版本的frida

2024-7-26 13:57
2087

准备工作

Ubuntu20(WSL)

安装依赖

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

这里先不用apt安装nodejs,因为apt安装的版本是10,而官网需要的版本是18+

nodejs

官网下载nodejs,版本的话我就选的20.15.1:

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

下载源码

git clone -b 15.1.28 --recurse-submodules b9eK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6X3M7X3W2V1j5g2)9J5c8X3k6J5K9h3c8S2

cd frida

ndk

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

3f2K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6S2L8X3c8J5L8$3W2V1i4K6u0r3L8X3c8C8i4K6u0r3N6$3W2C8K9g2)9J5c8W2g2F1M7%4g2H3M7r3!0J5N6r3g2V1i4K6u0V1c8r3!0%4L8X3I4G2j5h3c8K6

开始编译

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

1
2
3
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加个设置代理的命令:

1
2
export https_proxy="de5K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5&6x3W2)9J5k6e0p5$3z5q4)9J5k6e0x3I4i4K6u0W2x3U0g2Q4x3@1p5%4z5o6V1H3"
export http_proxy="4c6K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5&6x3W2)9J5k6e0p5$3z5q4)9J5k6e0x3I4i4K6u0W2x3U0g2Q4x3@1p5%4z5o6V1H3"

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

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

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

测试

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

编译toolchain和sdk

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

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

解决方法: 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文件,写入以下内容

1
2
3
4
5
6
7
8
9
10
11
#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重新下载。

引用链接

  • [1] e27K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6F1L8$3c8W2K9Y4y4Q4x3X3g2G2M7X3N6Q4x3V1k6*7K9q4)9J5k6r3y4F1i4K6u0r3k6r3!0%4L8X3I4G2j5h3c8Q4x3V1k6H3M7X3g2T1N6h3W2D9N6q4)9J5k6r3u0A6L8X3q4J5K9h3g2K6
  • [2] 15aK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6U0L8$3&6S2L8W2)9J5k6r3W2G2i4K6u0r3j5$3!0F1j5h3&6Q4x3X3c8U0k6h3&6@1k6i4u0Q4x3X3c8A6L8X3c8W2P5q4)9J5c8X3W2K6M7%4g2W2M7#2)9J5c8U0R3$3x3K6V1`.

参考链接

  • 974K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6E0M7q4)9J5k6i4N6W2K9i4S2A6L8W2)9J5k6i4q4I4i4K6u0W2j5$3!0E0i4K6u0r3M7#2)9J5c8U0c8y4e0#2c8X3h3h3#2Q4x3X3c8s2e0i4m8K9f1f1k6K6e0p5E0a6e0@1S2%4f1b7`.`.

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回