A high performance dex deobfuscator library.

Overview

DexKit-Android

license

README|中文文档

This repository update has been terminated, Please use DexKit in the future, it's easier to use.

A high performance dex deobfuscator library(NDK).

Warning: The current project has been refactored, 1.1.0 and earlier APIs are deprecated. Please refer to the latest documentation for use.

API introduction

These two APIs can meet most of your usage scenarios:

  • DexKit::BatchFindClassesUsedStrings
  • DexKit::BatchFindMethodsUsedStrings

Note: In all cases you should avoid searching for keywords that contain duplicate content, eg: {"key_word", "word"}, as this will cause tags to be overwritten, resulting in inaccurate search results. If there is such a need, open the advanced search mode as much as possible, and use the string to match the content exactly, for example, modify it to this: {"^key_word$", "^word$"}

And there are many other APIs:

  • DexKit::FindMethodBeInvoked: find caller for specified method.
  • DexKit::FindMethodInvoking: find the called method
  • DexKit::FindMethodUsedField: find method getting specified field, access types(put/get) can be limited by setting used_flags
  • DexKit::FindMethodUsedString: find method used utf8 string
  • DexKit::FindMethod: find method by multiple conditions
  • DexKit::FindSubClasses: find all direct subclasses of the specified class
  • DexKit::FindMethodOpPrefixSeq: find all method used opcode prefix sequence

For more detailed instructions, please refer to dex_kit.h.

Integration

Gradle:

implementation: com.github.LuckyPray:DexKit-Android:<version>

This library uses prefab, you should enable it in gradle (Android Gradle Plugin 4.1+):

android {
    buildFeatures {
        prefab true
    }
}

Note: DexKit-Android uses the prefab package schema v2, which is configured by default since Android Gradle Plugin 7.1.0. If you are using Android Gradle Plugin earlier than 7.1.0, please add the following configuration to gradle.properties:

android.prefabVersion=2.0.0

Usage

CMake

You can use find_package in CMakeLists.txt:

add_library(mylib SHARED main.cpp)

# Add two lines below
find_package(dexkit REQUIRED CONFIG)
target_link_libraries(mylib dexkit::dex_kit_static z)

Note: This header file was added since 1.1.0

At the same time, we also provide DexKitJniHelper.h for the conversion of complex objects between java and c++. For example: HashMap<String, HashSet<String>> -> std::map<std::string, std::set<std::string>>

JNI used example :

Example

Benchmark

qq-example.cpp in MacPro M1 to deobfuscate qq-8.9.3.apk, the result is:

findClass count: 47
findMethod count: 29
used time: 207 ms

License

The slicer directory is partially copied from AOSP.

Modified parts are owed by LuckyPray Developers. If you would like to use it in an open source project, please submodule it.

You might also like...
This Kotlin Multiplatform library is for accessing the TMDB API to get movie and TV show content. Using for Android, iOS, and JS projects.

Website | Forum | Documentation | TMDb 3 API Get movie and TV show content from TMDb in a fast and simple way. TMDb API This library gives access to T

Android SharedPreference management library made with kotlin

Kref Android SharedPreference management library made for kotlin Download Use Gradle: allprojects { repositories { ... maven { url

Android Multi Theme Switch Library ,use  kotlin language ,coroutine ,and so on ...
Android Multi Theme Switch Library ,use kotlin language ,coroutine ,and so on ...

Magic Mistletoe Android多主题(换肤)切换框架 背景 时隔四年,在网易换肤之前的思路下,做了几点改进,现在完全通过反射创建View,并且在SkinLoadManager中提供一个configCustomAttrs以支持自定义View的属性插队替换 摈弃了之前的AsyncTask

Simple event library to communicate between Activity/Fragment and ViewModel

Setup dependencies { implementation "com.github.skgmn:viewmodelevent:1.1.0" } If you don't know how to access to GitHub Packges, please refer to

🧚‍♀️ Java library to interact with YouTrack's REST API.

YouTrack Kotlin API 🧚‍ Kotlin JVM library to interact with YouTrack's REST API. Usage fun main(args: ArrayString) { val youtrack = YouTrack {

A Simple Android library to get the number of words and give you the time it will take you to finish an article/story.

MinRead A Simple Android library to get the number of words and give you the time it will take you to finish an article/story. Prerequisite Androidx K

S2 geometry library in Kotlin

S2 is a library for spherical geometry that aims to have the same robustness, flexibility, and performance as the best planar geometry libraries.

Spikot is a Kotlin library to make Spigot development easier

Spikot is a Kotlin library to make Spigot development easier Using Spikot Installation To use spikot add the following to your build.gradle.kts file.

A project aiming to generate KMP declarations from several library versions

kotlin-ketchup A project aiming to generate KMP declarations from several library versions LICENSE Apache 2.0. See ./LICENSE in this repository See th

Releases(1.3.0)
  • 1.2.2(Sep 20, 2022)

  • 1.2.1(Sep 19, 2022)

  • 1.2.0(Sep 17, 2022)

    Warning: The current project has been refactored, 1.1.0 and earlier APIs are deprecated. Please refer to the latest documentation for use.

    This refactoring is to provide a better API,Semantic parameters are more explicit.

    • add API: DexKit::FindMethodInvokingDexKit::FindFieldBeUsed
    • fix: In some APIs, setting return_type does not match the correct result

    For more detailed instructions, please refer to dex_kit.h.

    Warning: 当前项目已经进行重构,1.1.0及以下的API全被弃用,请参考最新的文档进行使用。

    本次重构是为了提供更好用的API,语义参数更加明确化。

    • 新增API:DexKit::FindMethodInvokingDexKit::FindFieldBeUsed
    • 修复:部分API,return_type设置后匹配结果错误

    更详细的API说明请参考 dex_kit.h.

    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(Sep 15, 2022)

  • 1.0.1(Sep 9, 2022)

  • 1.0(Sep 9, 2022)

Owner
韵祈祈摸大鱼
null
KotlinDL - High-level Deep Learning Framework written in Kotlin and inspired by Keras

Оригинальный репозиторий https://github.com/JetBrains/KotlinDL KotlinDL: High-le

Temur Yunusov 1 Feb 4, 2022
Remove MIUI's performance limit, run app at maximum FPS

MIUI 性能救星 移除 MIUI 对应用的性能限制,以最高帧率运行应用 介绍 本模块旨在用各种方式提升系统运行应用的性能。 目前支持的功能: 对指定应用解除 MIUI 系统 "电量与性能" 应用云控限制屏幕刷新率 "电量与性能" 应用会根据前台应用情况,限制应用的运行帧数。

null 48 Jan 1, 2023
🔥The Android Startup library provides a straightforward, performant way to initialize components at the application startup. Both library developers and app developers can use Android Startup to streamline startup sequences and explicitly set the order of initialization.

??The Android Startup library provides a straightforward, performant way to initialize components at the application startup. Both library developers and app developers can use Android Startup to streamline startup sequences and explicitly set the order of initialization.

Rouse 1.3k Dec 30, 2022
Ksp-di-library - Small library for DI in KMM apps

DI-KSP Small library for DI in KMM apps. Uses KSP for processing DI annotations:

Anna Zharkova 3 Feb 6, 2022
An library to help android developers working easly with activities and fragments (Kotlin version)

AFM An library to help android developer working easly with activities and fragments (Kotlin) Motivation Accelerate the process and abstract the logic

Massive Disaster 12 Oct 3, 2022
Kotlin Multiplatform String markup library

Thistle Kotlin multiplatform String markup library, inspired by SRML. Thistle is a common parser which produces an AST that can be rendered to a varie

Copper Leaf 52 Dec 30, 2022
Amazing and easy to use Accordion Library for Android built with kotlin

AccoLib An easy-to-use, amazing Accordion Library for Android built with kotlin. It reduces the amount of code needed to make Accordions in android, w

Gourav Khunger 6 Jul 4, 2022
Small kotlin library for persisting _single instances_ of kotlin data classes

PerSista Small library for persisting single instances of kotlin data classes. NB: PerSista uses typeOf() internally which is marked as @ExperimentalS

Eric Donovan 5 Nov 13, 2022
Kadrekka is a library that aims to make Kotlin more accessible to the northern italian population

Kadrekka Kadrekka is a library that aims to make Kotlin more accessible to the northern italian population. It provides lots of utility functions to m

Marco 8 May 9, 2021
Scala 3 Standard Library with bracket syntax.

Scala 3 Library with braces Scala adds a terrible new feature, optional braces, which allow use indentation instead of braces. The new syntax is widel

Glavo 10 Dec 30, 2021