Giter VIP home page Giter VIP logo

xposedhook's Introduction

说明

  • 这种方案建议只在开发阶段调试的时候使用,因为这将损耗一些性能(需要额外加载apk文件),调试没问题后,直接修改xposed_init配置文件指向目标类即可。

原理如下:

  • Android设备安装一个app后,会在/data/app/目录下保存一份原始的apk。
  • 自己写一个方法,将所有Hook逻辑直接或者间接的包含进来,作为"程序的入口"。
  • 这里通过读取包含"hook逻辑"的apk文件,然后new一个PathClassLoader,该PathClassLoader用于加载包含"hook处理逻辑"的类,最后使用反射的方式进入到"程序的入口"。
  • 由于这里是动态加载的"hook逻辑",所以不需要每次都重启设备,仅仅在第一次需要重启。
  • 虽然不用每次都重启设备了,不过由于Xposed实现机制的原因(handleLoadPackage方法的被调用时机的问题),需要杀死宿主程序后,并重新启动宿主程序才能生效。

注意

  1. 该项目使用的是XposedBridgeApi-54.jar开发的.
  2. 须根据实际情况修改HookLoader类中以下各项值
    //按照实际使用情况修改下面几项的值
    /**
     * 当前Xposed模块的包名,方便寻找apk文件
     */
    private final String thisModulePackage = "com.example.xposedhook";
    /**
     * 宿主程序的包名(允许多个),过滤无意义的包名,防止无意义的apk文件加载
     */
    private static List<String> hostAppPackages = new ArrayList<>();

    static {
        // TODO: Add the package name of application your want to hook!
        hostAppPackages.add("xxx.xxx.xxx");
    }

    /**
     * 实际hook逻辑处理类
     */
    private final String handleHookClass = HookLogic.class.getName();
    /**
     * 实际hook逻辑处理类的入口方法
     */
    private final String handleHookMethod = "handleLoadPackage";
  1. 如果XposedInstaller的log中提示未找到apk文件之类的错误,请首先检查thisModulePackage是否设置正确需要与build.gradle中的applicationId值对应,如果build.gradle中没有配置applicationId,就与AndroidManifest.xml的package值对应.

xposedhook's People

Contributors

shuihuadx avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.