zoukankan      html  css  js  c++  java
  • 编译Xposed并魔改去特征

    环境

    ubuntu 16.04

    aosp7.1.2r8源码

    编译Xposed

    首先需要将xposed相关项目都clone到本地

    https://github.com/rovo89/Xposed.git

    https://github.com/rovo89/XposedBridge.git

    https://github.com/rovo89/android_art.git

    https://github.com/rovo89/XposedTools.git

    https://github.com/rovo89/XposedInstaller.git

    XposedBridge

    使用AS打开XposedBridge项目,直接build,在项目的app/build/outputs/apk下将app-release-unsigned.apk重命名为XposedBridge.jar

    将这个jar包放在aosp源码目录下的/out/target/product/sailfish/system/framework/目录下。

    /out/java/

    android_art

    将该项目直接替换源码目录的art目录

    Xposed

    将xposed目录复制到aosp712r8/frameworks/base/cmds/目录下

    XposedTools

    复制build.conf.sample并重命名为build.conf

    修改其中内容:

    [General]
    outdir = /home/tg/Desktop/COMPILE/aosp712r8/out
    javadir = /home/tg/Desktop/COMPILE/aosp712r8/out/java
    
    [Build]
    # Please keep the base version number and add your custom suffix
    version = 89 (custom build by TG / %s)
    # makeflags = -j4
    
    [GPG]
    sign = release
    user = 852109AA!
    
    # Root directories of the AOSP source tree per SDK version
    [AospDir]
    25 = /home/tg/Desktop/COMPILE/aosp712r8
    # SDKs to be used for compiling BusyBox
    # Needs https://github.com/rovo89/android_external_busybox
    [BusyBox]
    arm = 25
    x86 = 25
    armv5 = 25
    
    

    outdir指向的路径是xposed编译之后生成的文件的存放路径。
    version的值和后边的参数是自己设置的。编译之后会写入到xposed.prop文件中。
    makeflags是设置在后边编译过程中使用的线程数。
    AospDir指向的路径是android源码存放的路径,前边的值是源码对应的SDK的版本号。这里我指向的是android5.1.1的源码,对应的android sdk的版本是22。

    修改完之后需要下载一些perl的库。

    sudo apt-get install libauthen-ntlm-perl libclass-load-perl libcrypt-ssleay-perl libdata-uniqid-perl libdigest-hmac-perl libdist-checkconflicts-perl libfile-copy-recursive-perl libfile-tail-perl

    perl -MCPAN -e 'install File::ReadBackwards'

    使用build.pl进行编译./build.pl -t arm:25

    将生成的xposed.zip发布到web上,以供XposedInstall安装使用。

    XposedInstall

    修改de.robv.android.xppsed.installer.util.DownloadsUtil其中的setUrl函数

    public Builder setUrl(String url) {
                //mUrl = url;
        		// 改成XposedTools生成的XPosed.zip
                mUrl = "";
                return this;
            }
    

    然后安装,installXposed即可。

    魔改去特征

    XposedInstall

    直接修改包名即可。

    全局替换de.robv.android.xposed.installer,改为de.robv.android.xppsed.installer

    de.robv.android.xppsed.installer.XposedApp中的XPOSED_PROP_FILES内容改为:

    private static final String[] XPOSED_PROP_FILES = new String[]{
                "/su/xposed/xppsed.prop", // official systemless
                "/system/xppsed.prop",    // classical
        };
    

    再build->clean project。

    XposedBridge-art.jar

    替换包名为de.robv.android.xppsed,全局替换de.robv.android.xposed,改为de.robv.android.xppsed`。

    生成出来的jar包也改为XppsedBridge.jar

    gradle使用jarStubsSorcejarStubs生产api.jar包,给自己编写Xposed插件使用。

    Xposed

    libxposed_art.cpp改为libxppxosed_art.cpp

    xposed.h

    #define XPOSED_PROP_FILE "/system/xppsed.prop"
    #define XPOSED_LIB_ART           XPOSED_LIB_DIR "libxppsed_art.so"
    
    ...
    #define XPOSED_CLASS_DOTS_ZYGOTE "de.robv.android.xppsed.XposedBridge"
    #define XPOSED_CLASS_DOTS_TOOLS  "de.robv.android.xppsed.XposedBridge$ToolEntryPoint"
    

    libxposed_common.h

    #define CLASS_XPOSED_BRIDGE  "de/robv/android/xppsed/XposedBridge"
    ...
    #define CLASS_ZYGOTE_SERVICE "de/robv/android/xppsed/services/ZygoteService"
    #define CLASS_FILE_RESULT    "de/robv/android/xppsed/services/FileResult"
    

    xposed_service.cpp

    IMPLEMENT_META_INTERFACE(XposedService, "de.robv.android.xppsed.IXposedService");
    

    xposed_shared.h

    #define XPOSED_DIR "/data/user_de/0/de.robv.android.xppsed.installer/"
    
    ...
        
    #define XPOSED_DIR "/data/data/de.robv.android.xppsed.installer/"
    

    ART.mk

    LOCAL_SRC_FILES += 
      libxposed_common.cpp 
      libxppsed_art.cpp
    
    ...
    LOCAL_MODULE := libxppsed_art
    

    并将libxposed_art.cpp文件名改为libxppsed_art.cpp

    XposedTools

    build.pl中的xposed.prop改为xpposed.prop,将libxposed_art改为libxppsed_art,将XposedBridge.jar改为XppsedBridge.jar

    zipstatic/_all/META-INF/com/google/android/flash-script.sh中将xposed.prop改为xpposed.prop,将libxposed_art改为libxppsed_art,将XposedBridge.jar改为XppsedBridge.jar

    参考

  • 相关阅读:
    2020系统综合实践 第4次实践作业
    2020系统综合实践 第3次实践作业
    2020系统综合实践 第2次实践作业
    第1次实践作业
    Wireshark组 2019SDN大作业
    第04组 Beta版本演示
    转载:北大老师语录(2016年秋)
    康德哲学基本概念
    white album句子
    tex基础
  • 原文地址:https://www.cnblogs.com/Tu9oh0st/p/14185015.html
Copyright © 2011-2022 走看看