查看原文
其他

内置frida hook到Android系统

哆啦安全 2022-05-24

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/mycmdsqiang@ubuntu:~/lineageOs$ cd frameworks/base/cmds/mycmds/qiang@ubuntu:~/lineageOs/frameworks/base/cmds/mycmds$ ls -latotal 74412drwxrwxr-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 STARTPRODUCT_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 ENDLOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := myfridaserverarm64LOCAL_MODULE_CLASS := EXECUTABLESLOCAL_SRC_FILES := myfridaserverarm64include $(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.shbreakfast oneplus3brunch oneplus3


关注公众号,及时获取更新内容:

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存