内置frida hook到Android系统
The following article is from 卓码空间 Author QDroid88888
一、内置方法
在Android系统中 ,预编译so或者可执行程序可以使用Android.mk配置模块方式或者使用源码中提供的RODUCT_COPY_FILES复制拷贝。
Android.mk中预编译脚本可以参考上一章中的说明。
PRODUCT_COPY_FILES:
在Android源码中可以使用使用PRODUCT_COPY_FILES 预拷贝文件和目录。以下列举了一个使用的方式:
RODUCT_COPY_FILES += \
vendor/lineage/prebuilt/common/bin/backuptool.sh:install/bin/backuptool.sh \
vendor/lineage/prebuilt/common/bin/backuptool.functions:install/bin/backuptool.functions \
vendor/lineage/prebuilt/common/bin/50-lineage.sh:$(TARGET_COPY_OUT_SYSTEM)/addon.d/50-lineage.sh
本文中准备使用Android.mk文件"include $(BUILD_PREBUILT)"方式内置frida-server,使用PRODUCT_COPY_FILES内置frida-gadget arm和arm64平台动态库到系统中。
二、开始内置
2.1 准备素材以及源码存放目录
分别官网下载frida-server可执行程序(由于我的是64位系统,只考虑arm64)和frida-gadget动态库(arm arm64)。在源码中创建保存文件的路径framework/base/cmds/mycmds,并将文件拷贝到该目录。如下所示:
qiang@ubuntu:~/lineageOs$ mkdir -p frameworks/base/cmds/mycmds
qiang@ubuntu:~/lineageOs$ cd frameworks/base/cmds/mycmds/
qiang@ubuntu:~/lineageOs/frameworks/base/cmds/mycmds$ ls -la
total 74412
drwxrwxr-x 2 qiang qiang 4096 1月 3 03:03 .
drwxrwxr-x 36 qiang qiang 4096 1月 2 05:59 ..
-rwxrw-rw- 1 qiang qiang 20162208 1月 2 05:56 libmyfridagadgetarm64.so
-rwxrw-rw- 1 qiang qiang 14677128 1月 2 05:56 libmyfridagadgetarm.so
-rwxrw-rw- 1 qiang qiang 41338528 1月 2 05:38 myfridaserverarm64
2.2 内置frida-gadget动态库
在源码中搜索PRODUCT_COPY_FILES使用的地方,找一个最好和具体设备无关的使用的地方。此处我选择build/make/target/product/handheld_system.mk文件中添加。在该文件中添加如下内容完成frida-gadget 动态库的复制工作。
# ///ADD START
PRODUCT_COPY_FILES += \
frameworks/base/cmds/mycmds/libmyfridagadgetarm.so:$(TARGET_COPY_OUT_SYSTEM)/lib/libmygadget.so \
frameworks/base/cmds/mycmds/libmyfridagadgetarm64.so:$(TARGET_COPY_OUT_SYSTEM)/lib64/libmygadget.so
# ///ADD END
2.3 内置frida-server可执行文件
在上面的framework/base/cmds/mycmds文件夹中,添加Android.mk实现frida-server的内置工作。Android.mk内容如下:
#///ADD START
#///ADD END
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := myfridaserverarm64
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_SRC_FILES := myfridaserverarm64
include $(BUILD_PREBUILT)
在frida-server编译模块Android.mk文件创建好之后,将myfridaserverarm64模块加入build/make/target/product/base_system.mk中的PRODUCT_PACKAGES
编译文件链中。加入之后PRODUCT_PACKAGES如下:
#///ADD START
# add frida server to system
#///ADD END
# Base modules and settings for the system partition.
PRODUCT_PACKAGES += \
myfridaserverarm64 \
abb \
adbd \
am \
...(此处省略)
三、编译刷机测试
source build/envsetup.sh
breakfast oneplus3
brunch oneplus3
关注公众号,及时获取更新内容