All Projects → lianglixin → epic

lianglixin / epic

Licence: other
EPIC For Android P/Q By Saurik

Programming Languages

java
68154 projects - #9 most used programming language
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to epic

linux-on-huawei-matebook-x-2017
Brain dump: Huawei MateBook X running Debian Linux
Stars: ✭ 73 (+73.81%)
Mutual labels:  huawei
GPSHook
利用Xposed框架hook系统方法 改变GPS定位 实现Android模拟定位
Stars: ✭ 78 (+85.71%)
Mutual labels:  xposed
AutoDark
A small android app to help you schedule dark mode on and off.
Stars: ✭ 56 (+33.33%)
Mutual labels:  xposed
Z-Spider
一些爬虫开发的技巧和案例
Stars: ✭ 33 (-21.43%)
Mutual labels:  xposed
openharmony-sheet
📊从零开始使用华为鸿蒙 OpenHarmony 开发游戏和表格渲染引擎
Stars: ✭ 132 (+214.29%)
Mutual labels:  huawei
hms-scene-demo
HMS Scene kit demo provides an example of integrating HUAWEI Scene Kit with an app. A 3D graphics rendering engine performs more with less. User-friendly rendering APIs for games, AR & VR apps, and other apps bring your users a stunning visual experience.
Stars: ✭ 18 (-57.14%)
Mutual labels:  huawei
Snorlax
Xposed module (Android) to check pokemons stats
Stars: ✭ 62 (+47.62%)
Mutual labels:  xposed
hms-toolkit-convertor
Convertor is a code conversion tool supporting Java and Kotlin projects. It helps developers to automatically convert GMS APIs called by apps into corresponding HMS APIs, implementing quick conversion and HMS integration.
Stars: ✭ 29 (-30.95%)
Mutual labels:  huawei
xposed.leewp14.NEClient
forked and modified from bin456789/Unblock163MusicClient-Xposed
Stars: ✭ 81 (+92.86%)
Mutual labels:  xposed
SandVXposed
Xposed environment without root (OS 5.0 - 12.0)
Stars: ✭ 241 (+473.81%)
Mutual labels:  xposed
hms-analytics-demo-android
HmsAnalyticsKitDemo is a app that applying HUAWEI Hianalytics SDK used for showing how to collect user engagement and user preference.
Stars: ✭ 19 (-54.76%)
Mutual labels:  huawei
RemotePreferences
A drop-in solution for inter-app access to SharedPreferences.
Stars: ✭ 121 (+188.1%)
Mutual labels:  xposed
README
All Huawei modifications README, compilation instructions, etc
Stars: ✭ 72 (+71.43%)
Mutual labels:  huawei
hms-3d-modeling-demo
HUAWEI 3D Modeling Kit project contains a sample app. Guided by this demo, you will be able to implement full 3D Modeling Kit capabilities, including 3D object reconstruction and material generation.
Stars: ✭ 45 (+7.14%)
Mutual labels:  huawei
AllMy...
Xposed Tweaks. Mostly for CyanogenMod/AOSP/TouchWiz.
Stars: ✭ 21 (-50%)
Mutual labels:  xposed
hms-safetydetect-demo-android
SafetyDetect Sample provides many sample programs for your reference or usage.This example demonstrates how to integrate services provided by Safetydetect Kit, such as APPchecks, URLcheck, Userdetect, Wifidetect.
Stars: ✭ 16 (-61.9%)
Mutual labels:  huawei
hms-computer-graphics-demo
This is the demo project of CGKit(Short for computer graphics kit). CGKit is a vulkan-based rendering framework, which is designed to improve performance of vulkan devices, especially for Android platform. This project will show you how to load textures, models, add pbr effects and render with vulkan.
Stars: ✭ 19 (-54.76%)
Mutual labels:  huawei
hms-ecommerce-demo
Build a shopping app by HMS Core kits which shows how to use the HMS Core solution in E-Commerce industry.
Stars: ✭ 70 (+66.67%)
Mutual labels:  huawei
hms-scene-RTcore-demo
This demo provides examples of how to use RTCore APIs, including using them to create reflection effects and draw triangles.
Stars: ✭ 13 (-69.05%)
Mutual labels:  huawei
debloat-adb
Bash Debloat-Scripts for Android Devices (using ADB)
Stars: ✭ 27 (-35.71%)
Mutual labels:  huawei

Download Join the chat at https://gitter.im/lianglixin/epic

中文文档入口

What is it?

Epic is the continution of Dexposed on ART(Supporting 4.0~9.0).

Dexposed is a powerful yet non-invasive runtime AOP (Aspect-oriented Programming) framework for Android app development, based on the work of open-source Xposed framework project.

The AOP of Dexposed is implemented purely non-invasive, without any annotation processor, weaver or bytecode rewriter. The integration is as simple as loading a small JNI library in just one line of code at the initialization phase of your app.

Not only the code of your app, but also the code of Android framework that running in your app process can be hooked.

Epic keeps the same API and all capability of Dexposed, you can do anything which is supported by Dexposed.

Typical use-cases

  • Classic AOP programming
  • Instrumentation (for testing, performance monitoring and etc.)
  • Security audit (sensitive api check,Smash shell)
  • Just for fun :)

Integration

Directly add epic aar to your project as compile libraries, it contains a jar file "dexposedbridge.jar" two so files "libdexposed.so libepic.so" from 'epic' directory.

Gradle dependency like following(jcenter):

dependencies {
    compile 'me.weishu:epic:0.3.6'
}

Everything is ready.

Newer version of epic is not open source, v0.3.6 is enough for test or personal usage. If you want for the newer version (better compatibility for Android 8.0+ and support for Android 9.0), please contact me.

Basic usage

There are three injection points for a given method: before, after, origin.

Example 1: monitor the creation and destroy of java thread

class ThreadMethodHook extends XC_MethodHook{
    @Override
    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
        super.beforeHookedMethod(param);
        Thread t = (Thread) param.thisObject;
        Log.i(TAG, "thread:" + t + ", started..");
    }

    @Override
    protected void afterHookedMethod(MethodHookParam param) throws Throwable {
        super.afterHookedMethod(param);
        Thread t = (Thread) param.thisObject;
        Log.i(TAG, "thread:" + t + ", exit..");
    }
}

DexposedBridge.hookAllConstructors(Thread.class, new XC_MethodHook() {
    @Override
    protected void afterHookedMethod(MethodHookParam param) throws Throwable {
        super.afterHookedMethod(param);
        Thread thread = (Thread) param.thisObject;
        Class<?> clazz = thread.getClass();
        if (clazz != Thread.class) {
            Log.d(TAG, "found class extend Thread:" + clazz);
            DexposedBridge.findAndHookMethod(clazz, "run", new ThreadMethodHook());
        }
        Log.d(TAG, "Thread: " + thread.getName() + " class:" + thread.getClass() +  " is created.");
    }
});
DexposedBridge.findAndHookMethod(Thread.class, "run", new ThreadMethodHook());

Example 2: Intercept the dex loading behavior

DexposedBridge.findAndHookMethod(DexFile.class, "loadDex", String.class, String.class, int.class, new XC_MethodHook() {
    @Override
    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
        super.beforeHookedMethod(param);
        String dex = (String) param.args[0];
        String odex = (String) param.args[1];
        Log.i(TAG, "load dex, input:" + dex + ", output:" + odex);
    }
});

Checkout the sample project to find out more.

Support

Epic support all dalvik runtime arm architecture devices from Android 2.3 to 4.4 (no include 3.0), which inherits from Dexposed. Further more, it support ART thumb2 and arm64 architecture from Android 5.0 to 8.1. arm32, x86, x86_64 and mips are not supported now. The stability is not proved in any online product, it is only personal use now(mainly for performance analysis), Welcome to any compatibility issues or PRs.

Follow is support status.

Runtime Android Version Support
Dalvik 2.2 Not Test
Dalvik 2.3 Yes
Dalvik 3.0 No
Dalvik 4.0-4.4 Yes
ART L (5.0) Yes
ART L MR1 (5.1) Yes
ART M (6.0) Yes
ART N (7.0) Yes
ART N MR1 (7.1) Yes
ART O (8.0) Yes
ART O MR1(8.1) Yes
ART P (9.0) Yes

And the architecture support status:

Runtime Arch Support
Dalvik All Yes
ART Thumb2 Yes
ART ARM64 Yes
ART ARM32 No
ART x86/x86_64 No
ART mips No

Known Issues

  1. Short method (instruction less 8 bytes on thumb2 or less 16bytes in ARM64) are not supported.
  2. Fully inlined methods are not supported.

Contribute

We are open to constructive contributions from the community, especially pull request and quality bug report. Currently, the implementation for ART is not proved in large scale, we value your help to test or improve the implementation.

You can clone this project, build and install the sample app, just make some click in your device, if some bugs/crash occurs, please file an issue or a pull request, I am very appreciative :)

Thanks

  1. Dexposed
  2. Xposed
  3. mar-v-in/ArtHook
  4. Nougat_dlfunctions

Contact me

[email protected]

Join discussion

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].