Releases: LuckyPray/DexKit
2.0.2
Update log:
- Deprecated
callMethods
andaddCall
methods to eliminate ambiguity; replaced withcallerMethods
andaddCaller
. DexClass
,DexMethod
, andDexField
now implementISerializable
instead ofjava.io.Serializable
.- Optimized
InstanceUtil
reflection performance with the addition ofWeakCache
. - Fixed potential unexpected results when setting
searchPackages
parameter. For example,searchPackages("com.aa")
could result in classLcom/aab;
.
2.0.1
2.0.0
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
toorg.luckypray:dexkit
. - Package Name Change: The package name has changed from
io.luckypray.dexkit
toorg.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
Update logs:
- Fix getFieldInstance throwing exception when getting arrayType field
- Added
single()
as a replacement forfirst()
,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
Update log:
- Fix
Modifiers.SYNCHRONIZED
(0x20) not match for smalideclared-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
toDexSignUtil.getTypeName
- Reduce
kotlin-gradle-plugin
version to1.5.0
- Other optimizations and bug fixes
2.0.0-rc7
2.0.0-rc6
2.0.0-rc5
Update log:
- Fix incorrect output of
MethodData.toString()
. - Rename
dexDescriptor
todescriptor
. - Optimize parameter
List
toCollection
. - Streamlined helper methods.
- Replace gradle maven publish plugin, fix AndroidStudio
:downloadSource
cannot pull source code. - Improve source code comments.
- Other optimizations.