首页
社区
课程
招聘
[原创]手动编译Hluda Frida Server
2021-10-21 13:35 37140

[原创]手动编译Hluda Frida Server

2021-10-21 13:35
37140

本文基于ubuntu 21.04操作

 

frida 将默认分支从 master 切换到 main,如果编译出现

1
make[1]: *** No rule to make target '.git/refs/heads/master', needed by 'build/frida-version.h'.  Stop.

参考此commit:
https://github.com/frida/frida/commit/e4c6a1e646666284ea77c36d61f20558504847b5


1. 搭建编译环境

1.1 Install dependencies

1
2
3
4
5
sudo apt update
sudo apt-get install build-essential tree ninja-build gcc-multilib g++-multilib lib32stdc++-9-dev flex bison xz-utils ruby ruby-dev python3-requests python3-setuptools python3-dev python3-pip libc6-dev libc6-dev-i386 -y
 
sudo gem install fpm -v 1.11.0 --no-document
python3 -m pip install lief

1.2 Setup ndk

ndk版本与你想要编译的版本相关,在其/releng/setup-env.sh注明了需要的NDK版本

 

图片描述

 

这里以最新版的frida ndk依赖22 进行

 

ndk下载网址:https://developer.android.com/ndk/downloads?hl=zh-cn

1
2
wget https://dl.google.com/android/repository/android-ndk-r22b-linux-x86_64.zip
unzip android-ndk-r22b-linux-x86_64.zip
1
2
3
4
sudo mv android-ndk-r22b /opt/
 
#add env variables
export ANDROID_NDK_ROOT='/opt/android-ndk-r22b'

1.3 Setup nodejs

https://github.com/nvm-sh/nvm

1
2
3
4
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
 
# install node 10
nvm install 10

2. 编译frida

2.1 最新版

当前最新版本是:15.1.5

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

Apply hluda patch

1
2
3
4
5
6
7
8
git clone https://github.com/AAAA-Project/Patchs.git
 
cd frida/frida-core/
 
git am ../../Patchs/strongR-frida/frida-core/*.patch
 
# 回到frida 根目录
cd ..

编译:

 

编译时会自动下载 对应的toolchain和sdk。

1
2
3
4
make core-android-arm
make core-android-arm64
make core-android-x86
make core-android-x86_64

when compile completed, into build/frida-android-arm/bin ,you will see:

 

图片描述

2.2 老版本

看了看Patchs的commit message、时间,基本就能知道commit对应的patch,对应哪些版本:

 

图片描述

 

看看编译14.2.12怎么弄

1
2
3
git clone --recurse-submodules https://github.com/frida/frida.git
cd frida
git checkout 14.2.12

这里有个坑,当checkout的时候,仅frida这个仓库回滚到14.2.12,其中的submodule 依然是最新的,要让所有submodule也是14.2.12时的版本才行:

1
git submodule update --recursive

检查一下需要的ndk版本,依然是22:
图片描述

 

checkout Patchs 到 14.2.12:
图片描述

1
git checkout 8e1308b

Apply hluda patch:

1
2
cd frida/frida-core
git am ../../Patchs/strongR-frida/frida-core/*.patch

check一下,没报错就行。

 

接下来和之前的编译步骤一样

1
2
3
4
5
6
cd frida
 
make core-android-arm
make core-android-arm64
make core-android-x86
make core-android-x86_64

图片描述


 

Git History - https://githistory.xyz/ 在某些情况下确实有用:

 

图片描述


 

参考:

  1. hluwa - actions build.xml

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

最后于 2022-3-16 15:04 被lushanu编辑 ,原因: update
收藏
点赞16
打赏
分享
最新回复 (23)
雪    币: 0
活跃值: (393)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Light紫星 2022-2-16 15:43
2
0
这样build出来的frida-server还能用之前的pc端的frida调用吗
雪    币: 1118
活跃值: (1803)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
lushanu 2022-2-17 10:01
3
0
Light紫星 这样build出来的frida-server还能用之前的pc端的frida调用吗
当然可以啦,这种只是改了一些特征,逻辑没有改
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
长野飘荡 2022-3-16 13:58
4
0
编译失败,Mac和ubuntu都试过了,太坑了
雪    币: 1118
活跃值: (1803)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
lushanu 2022-3-16 15:02
5
0
长野飘荡 编译失败,Mac和ubuntu都试过了,太坑了
我真是服辣,失败也不贴报错信息,上来就说我坑?你这种症状多久了
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
长野飘荡 2022-3-16 17:06
6
0
lushanu 我真是服辣,失败也不贴报错信息,上来就说我坑?你这种症状多久了
额误会了,意思的frida编译太坑
雪    币: 1118
活跃值: (1803)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
lushanu 2022-3-18 09:43
7
0
长野飘荡 额误会了,意思的frida编译太坑
哈哈哈哈哈哈 抱歉抱歉
雪    币: 221
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
lamorm 2022-4-21 15:22
8
0
大佬问一下,这个报错是因为什么
lm@lamorm:~/frida$ make core-android-arm
make[1]: 进入目录“/home/lm/frida”
. build/frida-env-android-arm.rc; builddir=build/tmp-android-arm/frida-gum; if [ ! -f $builddir/build.ninja ]; then         meson_args="--native-file build/frida-linux-x86_64.txt"; if [ android-arm != linux-x86_64 ]; then meson_args="$meson_args --cross-file build/frida-android-arm.txt"; fi; python3 /home/lm/frida/releng/meson/meson.py setup $meson_args --prefix /home/lm/frida/build/frida-android-arm --libdir /home/lm/frida/build/frida-android-arm/lib --default-library static -Doptimization=s -Db_ndebug=true --strip -Dgumpp=enabled -Dgumjs=enabled -Dv8=auto -Ddatabase=enabled -Dfrida_objc_bridge=auto -Dfrida_swift_bridge=auto -Dfrida_java_bridge=auto -Dtests=enabled  frida-gum $builddir || exit 1; fi; python3 /home/lm/frida/releng/meson/meson.py install -C $builddir || exit 1
The Meson build system
Version: 0.60.99
Source dir: /home/lm/frida/frida-gum
Build dir: /home/lm/frida/build/tmp-android-arm/frida-gum
Build type: cross build
Project name: frida-gum
Project version: 1.0.0

frida-gum/meson.build:1:0: ERROR: Unknown compiler(s): [['/home/lm/frida/build/frida-android-arm-clang', '-include', '/home/lm/frida/build/frida-version.h']]

A full log can be found at /home/lm/frida/build/tmp-android-arm/frida-gum/meson-logs/meson-log.txt
make[1]: *** [Makefile.linux.mk:111:build/frida-android-arm/lib/pkgconfig/frida-gum-1.0.pc] 错误 1
make[1]: 离开目录“/home/lm/frida”
make: *** [Makefile:4:core-android-arm] 错误 2
雪    币: 1
活跃值: (2128)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wx_范迪塞尔 2022-4-25 10:29
9
0
编译很简单,主要是怎么改特征的啊,哪位大佬分享一下
雪    币: 225
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
biqiu 2022-7-11 10:33
10
0
wx_偏执。 大佬问一下,这个报错是因为什么 lm@lamorm:~/frida$ make core-android-arm make[1]: 进入目录“/home/lm/frida” . build/fr ...
你的ndk环境没配好
雪    币: 1118
活跃值: (1803)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
lushanu 2022-8-4 10:42
11
0
去特征的参考此 patch https://github.com/AAAA-Project/Patchs
雪    币: 33
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Bingo_player 2022-10-24 15:27
12
0

1

最后于 2022-10-24 19:45 被Bingo_player编辑 ,原因: 已解决
雪    币: 33
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Bingo_player 2022-10-24 15:27
13
0
Bingo_player make[1]: Entering directory '/home/ruibiao/Downloads/frida/frida' . build/frida-env-android-arm.rc; ...
完辣,哦吼
雪    币: 33
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Bingo_player 2022-10-24 17:55
14
0
FAILED: bindings/gumjs/gumquickscript-runtime.h bindings/gumjs/gumquickscript-objc.h bindings/gumjs/gumquickscript-java.h bindings/gumjs/gumv8script-runtime.h bindings/gumjs/gumv8script-objc.h bindings/gumjs/gumv8script-java.h bindings/gumjs/gumcmodule-runtime.h 
/home/ruibiao/Downloads/frida/frida/frida-gum/bindings/gumjs/generate-runtime.py arm /home/ruibiao/Downloads/frida/frida/frida-gum/bindings/gumjs /home/ruibiao/Downloads/frida/frida/frida-gum/gum /home/ruibiao/Downloads/frida/frida/build/sdk-android-arm/include/capstone /home/ruibiao/Downloads/frida/frida/build/sdk-android-arm/lib /home/ruibiao/Downloads/frida/frida/build/tmp-android-arm/frida-gum/bindings/gumjs/quickcompile /home/ruibiao/Downloads/frida/frida/build/tmp-android-arm/frida-gum/bindings/gumjs
/home/ruibiao/Downloads/frida/frida/frida-gum/bindings/gumjs/node_modules/frida-compile/bin/compile.js:40
  .catch(error=> {
              ^^
SyntaxError: Unexpected token =>
    at exports.runInThisContext (vm.js:54:16)
    at Module._compile (module.js:429:25)
    at Object.Module._extensions..js (module.js:464:10)
    at Module.load (module.js:341:32)
    at Function.Module._load (module.js:296:12)
    at Function.Module.runMain (module.js:487:10)
    at startup (node.js:111:16)
    at node.js:809:3
Traceback (most recent call last):
  File "/home/ruibiao/Downloads/frida/frida/frida-gum/bindings/gumjs/generate-runtime.py", line 335, in <module>
    subprocess.check_call([node_script_path("frida-compile"), "./runtime/entrypoint-quickjs.js", "-o", runtime] + quick_options, cwd=input_dir)
  File "/usr/lib/python3.10/subprocess.py", line 369, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/home/ruibiao/Downloads/frida/frida/frida-gum/bindings/gumjs/node_modules/.bin/frida-compile', './runtime/entrypoint-quickjs.js', '-o', '/home/ruibiao/Downloads/frida/frida/build/tmp-android-arm/frida-gum/bindings/gumjs/runtime-build-quick/frida.js', '-c']' returned non-zero exit status 1.
[94/209] Compiling C++ object bindings...ida-gumpp-1.0.so.p/sanitychecker.cpp.o
ninja: build stopped: subcommand failed.
make[1]: *** [Makefile.linux.mk:118: build/frida-android-arm/lib/pkgconfig/frida-gum-1.0.pc] Error 1
make[1]: Leaving directory '/home/ruibiao/Downloads/frida/frida'
make: *** [Makefile:4: core-android-arm] Error 2
雪    币: 33
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Bingo_player 2022-10-24 17:55
15
0
Bingo_player FAILED: bindings/gumjs/gumquickscript-runtime.h bindings/gumjs/gumquickscript-objc.h bindings/gumjs/ ...
上个问题解决了,接着遇到这个,呜呜呜
雪    币: 33
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Bingo_player 2022-10-25 17:24
16
0
解决了,谢谢博主
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_寻_412 2022-10-25 17:47
17
0
为什么没有编译好的直接安装
雪    币: 1118
活跃值: (1803)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
lushanu 2022-10-26 21:41
18
0

这个编译的时候也要注意nodejs的版本,具体可以去看你那个版本对应的ci文件 https://github.com/frida/frida/blob/main/.github/workflows/ci.yml


例如这个对应的 node 18


雪    币: 4665
活跃值: (2517)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rehai 2022-12-5 14:46
19
0

谢谢楼主,使用时报错了,说找不到system_server进程,用的16.0.7的版本。hluda服务没报错,也没任何输出。手机用的小米5X,第三方魔趣9系统,用官方frida-server arm64 16.0.7没问题,但不能过app检测。用hluda-server时就说找不到system_server进程,手机会黑一下屏然后重新加载界面(过程大概3-5秒)。

最后于 2022-12-5 14:50 被rehai编辑 ,原因:
雪    币: 1118
活跃值: (1803)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
lushanu 2022-12-5 22:07
20
0
rehai 谢谢楼主,使用时报错了,说找不到system_server进程,用的16.0.7的版本。hluda服务没报错,也没任何输出。手机用的小米5X,第三方魔趣9系统,用官方frida-server arm6 ...
这个补丁只支持到 15.0.14,之后的版本是用不了,Android 9的话,自己编一个14就可以
雪    币: 22
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_npwymnnm 2022-12-8 13:36
21
0
lushanu 当然可以啦,这种只是改了一些特征,逻辑没有改[em_6]
修改特征的教程一起放上吧
雪    币: 4665
活跃值: (2517)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rehai 2022-12-14 22:36
22
0
lushanu 这个补丁只支持到 15.0.14,之后的版本是用不了,Android 9的话,自己编一个14就可以
frida 14我的pip一直装不上,还在想办法
雪    币: 893
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
智取棋 2023-7-19 15:15
23
0
lushanu 这个编译的时候也要注意nodejs的版本,具体可以去看你那个版本对应的ci文件 https://github.com/frida/frida/blob/main/.github/workflows/c ...
谢谢!安装对应的node版本就可以编译成功了!
雪    币: 300
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_djoilweh 2024-1-6 13:07
24
0
root@lxm-virtual-machine:/home/lxm/frida# make -f Makefile.toolchain.mk
│ ninja :: Building for linux-x86_64
make: *** [Makefile.toolchain.mk:112:build/ft-linux-x86_64/manifest/ninja.pkg] 错误 1
root@lxm-virtual-machine:/home/lxm/frida# 
这是什么问题
游客
登录 | 注册 方可回帖
返回