GithubHelp home page GithubHelp logo

pandajoy / dexkit Goto Github PK

View Code? Open in Web Editor NEW

This project forked from luckypray/dexkit

0.0 0.0 0.0 881 KB

An easy-to-use, high-performance dex deobfuscation library.

Home Page: https://luckypray.org/DexKit/

License: GNU Lesser General Public License v3.0

C++ 79.44% C 4.99% Kotlin 14.39% TypeScript 0.94% CMake 0.23%

dexkit's Introduction

DexKit

license Maven Central

English | 简体中文

A high-performance runtime parsing library for dex implemented in C++, used for lookup of obfuscated classes, methods, or properties.


DexKit Document contains some examples of API calls, and more APIs can be found in DexKitBridge.

DexKit API KDoc is a KDoc (similar to JavaDoc) generated from source code comments. However, it is recommended to use an IDE such as IDEA to view source code comments during development.

Background

For Xposed modules, we often need to Hook specific methods, but due to obfuscation, we need to use means to find the methods we need. However, for JVM languages, the information we can obtain at runtime is limited. In the past, we looked up obfuscated methods by traversing all classes in the ClassLoader, filtering by package name, the number of methods contained in the class, and method signature. This approach is not only very inefficient, but also helpless in the case of completely obfuscated package names.

So, do we have other ways? The answer is yes. ProGuard obfuscation rules only obscure class names, method names, and property names, but they do not modify code logic, and there are usually no major code changes during minor updates. Therefore, we can reverse search for the information we need by parsing bytecode.

Currently, there are many libraries for parsing Dex files, but most are implemented based on dexlib2. If the host application has a large number of Dex files, the search time can take several minutes, which is a poor user experience. That's where DexKit comes in. It is implemented in C++ and uses multi-threading acceleration to complete searches in a short amount of time. It has extremely high performance, with search times in the milliseconds range and support for multi-threaded concurrent searches. Even for large applications with 30+ Dex files, DexKit can complete a single search in about 100 milliseconds. In addition, it is also optimized for string search scenarios, even if you want to search hundreds of strings, it only takes no more than twice the time to complete.

Supported features

  • Batch search methods/classes with a specific string
  • Find methods/classes using a specific string
  • Method call/called search
  • Direct subclass search
  • Method multi-condition search
  • Op sequence search (only supports standard dex instructions)
  • Annotation search (currently only supports searching for values that are strings)

Note: This is the early stage of the project, and we cannot guarantee that the API will not change in the future. If you have any suggestions or opinions, please let us know.

Start using

  • Click here to go to the documentation page to view more detailed tutorials.

Cooperation project

The following are projects that have cooperated and stable use of DexKit.

Repository Developer
XAutoDaily 韵の祈
QAuxiliary ACh Sulfate
QTool Hicores
PPHelper lliiooll
MIUI QOL ChsBuffer
TwiFucker Js0nNullptr
FuckCoolApk R QQ little icelz差不多是条咸鱼了

Are you also using DexKit? Welcome to submit PR to add your repository to the list above (private repositories do not need to include web link).

Open source reference

License

LGPL-3.0 © LuckyPray

dexkit's People

Contributors

teble avatar tiann avatar keta1 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.