自己动手编译----魔改frida

Frida在安卓逆向的过程中是一款很好用的hook框架,就目前情况而言,对Frida的检测越来越多,因此我们需要对Frida进行魔改,抹去它的一些特征信息,从而对抗加固厂商的检测。

1. 编译环境

  1. 操作系统:Ubuntu 22.04
  2. 目标Frida版本:14.2.12
  3. 注意事项:
    1. 换源,节省时间
    2. 切换用户shell为bash,而不是dash

1.1 安装依赖

首先安装编译Frida所需要的依赖:

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 nodejs npm -y

然后安装lief,这是一个python库,在魔改Frida时会用到:

python3 -m pip install lief

1.2 下载配置Android NDK

值得一提的是,要下载的NDK版本与想要编译的Frida版本有关,可在Frida目录下的releng/setup-env.sh查看需要下载的NDK版本:

cat releng/setup-env.sh |grep "ndk_required="

14.2.12版本对应的NDK为22,下载r22版本的NDK并解压

wget https://dl.google.com/android/repository/android-ndk-r22-linux-x86_64.zip
unzip android-ndk-r22-linux-x86_64.zip

然后将解压后的NDK添加到环境变量中:

export ANDROID_NDK_ROOT=/home/ubuntu/android-ndk-r22
export PATH=$ANDROID_NDK_ROOT:$PATH

然后执行命令ndk-build -v,如果有版本信息输出,说明环境变量配置生效了。

2. 编译Frida

2.1 下载

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

2.2 编译toolchain和sdk

根据官方指南我们应该编译toolchain和sdk,官方下载地址如下:

https://build.frida.re/deps/20210123/toolchain-linux-x86_64.tar.bz2
https://build.frida.re/deps/20210123/sdk-linux-x86_64.tar.bz2
https://build.frida.re/deps/20210123/sdk-android-arm.tar.bz2
https://build.frida.re/deps/20210123/sdk-android-arm64.tar.bz2

上述下载地址中的20210123是frida中releng/deps.mk中的frida_deps_version:

cat releng/deps.mk | grep "frida_deps_version"

后面部分则是toolchain-{平台-架构}.tar.bz2。

在frida目录下新建build目录,然后在build目录下通过wget下载上述文件:

mkdir build
cd build

wget https://build.frida.re/deps/20210123/toolchain-linux-x86_64.tar.bz2
wget https://build.frida.re/deps/20210123/sdk-linux-x86_64.tar.bz2
wget https://build.frida.re/deps/20210123/sdk-android-arm.tar.bz2
wget https://build.frida.re/deps/20210123/sdk-android-arm64.tar.bz2

然后回到frida目录执行以下命令:

chmod -R 777 ./*
sh releng/setup-env.sh

输出大概是这样:

如果不手动下载,sh脚本以及make的时候也会帮你下载,但是手动下载方便一点。

然后在build目录下创建头文件frida-version.h,如果没有就手动创建,然后根据自己编译版本填入下面代码:

#ifndef __FRIDA_VERSION_H__
#define __FRIDA_VERSION_H__

#define FRIDA_VERSION "14.2.12"

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

#endif

2.3 打patch

1)去除frida:rpc特征

diff --git a/lib/interfaces/session.vala b/lib/interfaces/session.vala
old mode 100644
new mode 100755
index 16ff05ed..87fcdec4
--- a/lib/interfaces/session.vala
+++ b/lib/interfaces/session.vala
@@ -879,7 +879,7 @@ namespace Frida {
 			var request = new Json.Builder ();
 			request
 				.begin_array ()
-				.add_string_value ("frida:rpc")
+				.add_string_value ((string) GLib.Base64.decode("ZnJpZGE6cnBj="))
 				.add_string_value (request_id)
 				.add_string_value ("call")
 				.add_string_value (method)
@@ -932,7 +932,7 @@ namespace Frida {
 		}
 
 		public bool try_handle_message (string raw_message) {
-			if (raw_message.index_of ("\"frida:rpc\"") == -1)
+			if (raw_message.index_of ((string) GLib.Base64.decode("ImZyaWRhOnJwYyI=")) == -1)
 				return false;
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值