首页
论坛
课程
招聘
[系统相关] [源码分析] 玩转Android10源码开发定制(九)内置frida-gadget so文件和frida-server可执行文件到系统
2021-1-3 20:37 1602

[系统相关] [源码分析] 玩转Android10源码开发定制(九)内置frida-gadget so文件和frida-server可执行文件到系统

2021-1-3 20:37
1602

一、内置方法

       在Android系统中 ,预编译so或者可执行程序可以使用Android.mk配置模块方式或者使用源码中提供的RODUCT_COPY_FILES复制拷贝。

      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,并将文件拷贝到该目录。如下所示:

 mkdir -p frameworks/base/cmds/mycmds
 cd 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 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 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



[注意] 招人!base上海,课程运营、市场多个坑位等你投递!

最后于 2021-4-12 22:01 被蟑螂一号编辑 ,原因:
收藏
点赞2
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回