Skip to content

Releases: LuckyPray/DexKit

2.0.2

11 Jun 09:08
0133f04
Compare
Choose a tag to compare

Update log:

  • Deprecated callMethods and addCall methods to eliminate ambiguity; replaced with callerMethods and addCaller.
  • DexClass, DexMethod, and DexField now implement ISerializable instead of java.io.Serializable.
  • Optimized InstanceUtil reflection performance with the addition of WeakCache.
  • Fixed potential unexpected results when setting searchPackages parameter. For example, searchPackages("com.aa") could result in class Lcom/aab;.

2.0.1

16 Apr 16:53
417fdeb
Compare
Choose a tag to compare

Update log:

  • Fix throw exception when calling DexKitBridge.getMethodData().
  • Fix wrong initialization of opcode seq. #25

2.0.0

12 Dec 07:00
932f7c0
Compare
Choose a tag to compare

DexKit 2.0.0 发行说明


随着时间的推移,DexKit 旧版 API 越来越难以支撑各种 APP 混淆的搜索。起初,我只是将它用于做一些简单的工作(初版仅仅提供了字符串搜索的功能),随着后续需求的增加只能在其基础上增加针对性的实现。而对于复杂的需求,只能依赖于各 API 之间的相互配合才能勉强完成,对于某些特殊的需求来说甚至完全提供不了帮助。所以,我开始了 DexKit 2.0 API 的构思。

得益于 1.x 版本的前车之鉴,2.0 API 完全解决了 1.x 版本所有的历史包袱以及痛点。并且额外提供了许多元数据 API,例如:不依赖 ClassLoader 以及反射的情况下获取 Class、Field、Method、Interface、SuperClass、Modifiers 以及 Annotation 等元数据信息。加上 DexKit 的 Cross-platform 支持,理论上可以做到无需 ART 环境即可完成全部工作并且零成本迁移至 Android 平台。

重要信息

  • 全新架构:使用 google/flatbuffers 作为 Native 与 JVM 之间的数据交互组件,并且对于所有的 C++ 以及 Kotlin 代码进行了重写以满足需求。
  • API 变更:在 2.0 版本中,几乎所有的 1.x API 都被删除,请参阅 README 获取最新的用法。
  • ArtifactId 变更:ArtifactId 从 org.luckypray:DexKit 变更为 org.luckypray:dexkit
  • 包名变更:包名从 io.luckypray.dexkit 变更为 org.luckypray.dexkit
  • 字节码版本变更:最低 JDK 版本提升至 11。

亮点

  • 组合嵌套查询支持:依照语法规范,可以对任意条件进行组合嵌套查询。
  • 元数据支持:对于任意 Class/Method/Field 提供相应的元数据 API。
  • 链式调用支持:对于任意查询结果,可以直接进行更进一步的过滤查询。
  • 完整的注解支持:可以根据查询语法 1:1 构建出对应 Annotation 结构用于查询。且对于任意 Class/Method/Field 可以将其注解导出成相应的 Java 代码(包括 @dalvik.annotation.* 系统注解)。

DexKit 2.0.0 Release Notes


Over time, the legacy API of DexKit has become increasingly challenging to support various app obfuscation scenarios. Initially used for simple tasks (the initial version only provided string search functionality), it was progressively extended with targeted implementations to meet evolving requirements. However, for more complex needs, it relied on the coordination of various APIs and struggled to fully address certain specific requirements. This prompted the conceptualization of DexKit 2.0 API.

Benefiting from the lessons learned from version 1.x, the 2.0 API completely addresses all historical baggage and pain points from the 1.x version. Additionally, it introduces numerous metadata APIs, such as obtaining Class, Field, Method, Interface, SuperClass, Modifiers, and Annotation metadata information without depending on ClassLoader and reflection. Combined with DexKit's Cross-platform support, it theoretically achieves full functionality without an ART environment and enables seamless migration to the Android platform with zero cost.

Important Information

  • New Architecture: Uses google/flatbuffers as the data interaction component between Native and JVM, and all C++ and Kotlin code has been rewritten to meet requirements.
  • API Changes: In version 2.0, almost all 1.x APIs have been removed. Refer to README for the latest usage.
  • ArtifactId Change: ArtifactId has changed from org.luckypray:DexKit to org.luckypray:dexkit.
  • Package Name Change: The package name has changed from io.luckypray.dexkit to org.luckypray.dexkit.
  • Java ByteCode Version Change: Minimum JDK version increased to 11.

Highlights

  • Composite Nested Query Support: According to syntax specifications, any conditions can be combined for nested queries.
  • Metadata Support: Provides corresponding metadata APIs for any Class/Method/Field.
  • Chained Call Support: For any query result, you can directly perform further filtering queries.
  • Complete Annotation Support: Can build corresponding Annotation structures for queries in a 1:1 manner. Additionally, for any Class/Method/Field, annotations can be exported into corresponding Java code (including @dalvik.annotation.* system annotations).

Full Changelog: 1.1.8...2.0.0

2.0.0-rc9

29 Nov 10:54
1d2599e
Compare
Choose a tag to compare
2.0.0-rc9 Pre-release
Pre-release

Update logs:

  • Fix getFieldInstance throwing exception when getting arrayType field
  • Added single() as a replacement for first(), first() may cause unexpected problems with non-unique results
  • Explicitly declare kotlin-stdlib version to be 1.5.0
  • Other optimizations

2.0.0-rc8

18 Nov 18:49
28bbcc9
Compare
Choose a tag to compare
2.0.0-rc8 Pre-release
Pre-release

Update log:

  • Fix Modifiers.SYNCHRONIZED(0x20) not match for smali declared-synchronized(0x20000)
  • Fix method call relationship record is incomplete
  • Fix crash issue in some cases
  • Improve native error handling
  • Modify the package name of XxxDataList related classes
  • Rename DexSignUtil.getSimpleName to DexSignUtil.getTypeName
  • Reduce kotlin-gradle-plugin version to 1.5.0
  • Other optimizations and bug fixes

2.0.0-rc7

16 Oct 16:07
4b5f87f
Compare
Choose a tag to compare
2.0.0-rc7 Pre-release
Pre-release

Update log:

  • Support MUtf8 format string parsing for @kotlin.Metadata.
  • Support usingStrings matcher for AnnotationMatcher.
  • Support MethodData.getUsingFields().
  • Fix some crash.
  • Optimize some naming.

2.0.0-rc6

11 Oct 17:57
c5c3c43
Compare
Choose a tag to compare
2.0.0-rc6 Pre-release
Pre-release

Update log:

  • Fix invoke-kind op range check (May cause a crash, and method.invokeMethods(), method.callMethods() may match incorrect results).
  • Support dalvik.annotation.*.
  • Optimize AnnotationMatcher processing performance.

2.0.0-rc5

08 Oct 16:37
97a9e7d
Compare
Choose a tag to compare
2.0.0-rc5 Pre-release
Pre-release

Update log:

  • Fix incorrect output of MethodData.toString().
  • Rename dexDescriptor to descriptor.
  • Optimize parameter List to Collection.
  • Streamlined helper methods.
  • Replace gradle maven publish plugin, fix AndroidStudio :downloadSource cannot pull source code.
  • Improve source code comments.
  • Other optimizations.

2.0.0-rc4

06 Oct 14:35
16ab3aa
Compare
Choose a tag to compare
2.0.0-rc4 Pre-release
Pre-release

Update log:

  • Fix sources.jar does not contain source code.
  • Fix cross data unexpected clear causing incorrect query.

2.0.0-rc3

20 Sep 08:39
ed8a41d
Compare
Choose a tag to compare
2.0.0-rc3 Pre-release
Pre-release

Update log:

  • Lazy loading cache, reduce memory usage and time consumption. #22
  • Fix paramTypes filter does not take effect when it is emptyList.
  • Fix thread pool blocking with low probability.
  • Other optimizations.