[DEV] v2 rewrite#8
Merged
MatrixEditor merged 47 commits intomasterfrom Apr 6, 2026
Merged
Conversation
--- + THIS CODE IS NOT STABLE AND WILL CHANGE! + Next todo will be to adjust the parsing and add fuzzer targets
--- + Result type should be used accross the library
--- + Header + various items
--- + 2nd approach to instructions ported from ART
--- + Added new error: OperandAccessError + A,B,C,H and VarArgs can be extracted using vreg module
--- + Instruction iterator and IntoIter support CodeItemAccessor + DexFile now implements methods for describing fields, methods, types and strings
--- + location changed to enum
--- + Changed leb128 parsing to return a Result + Removed unused DexFile field in Method, ClassDataAccessor and Field structs + ClassDataAccessor can be used on all DexFile variants
--- + updated verification flags in DExVerfier
--- + EncodedValue implementation with fuzzing tests + DexFIle is now able to return an UTF8 String without validating the mUTF8
--- + added support to get index from item in dex file
…east for now) --- + string_ids renamed to get_string_ids() + removed unnecessary import in container.rs + mutf8 withstands at least #33554432 fuzzing runs
--- Changes: + decode_leb128p1 will always return i32 from now on + Made file::header::Header cloneable Additions: + Python Extension using pyo3 (feature: "python") + Support is limited to parsing one file and fetching the header for now
--- Changed: + Splitted decode_leb128_off into decode_leb128_adv and decode_leb128_off with slightly different behaviour + DexFile::get<type>_opt applied boundry check using <idx_ty>::MAX instead of u32::MAX + Most structs in dexrs::file::structs are now cloneable + PyDexFileImpl can be created bypassing dex container instances only Additions: + DebugInfo parser (parameter names and positions)
--- + updated initialization of python package to automatically include all types
--- Changes: + Added iterator implementation over parameter names in debug info + Added TypeId interface for Python API
--- Changes: + Added python stubs for each module currently available + Renamed all rust python bindings to begin with py_ Additions: + Added Python API to encode and decode MUTF8 data (currently limited to null-terminated strings)
--- + Removed Field::is_static method from class_accessor + Added DexFile::pretty_type to always return a non-empty string without the need of a result + Instruction::relative_at is now bound to a one-byte extra boundary + ClassAccessor Python API + README updated to reflect API changes
--- + Python API will be generated if cfg(feature = python) + Moved existing Python api into Rust source code base + Python stubs are WIP and don't include constant code flags
--- + vreg module is still missing, but all classes have been added to the Python API + stubs added + Instruction::next now returns an Option<> instead of Result<>
--- + Fixed parsing parameter names in debug info
--- + Fuzzing tests for complex instructions + Two new errors regarding complex instructions + Rename Python API candidate of Instruction to [Py|Rs]DexInstruction + Fix lifetime issue with CodeItemAccessor and Python API + Added Python stubs for vreg sunmodule and added struct definitions
--- + Removed unnecessary import from dex_basic_ops.rs + Added new fuzzing test for code items + Added CatchHandlerData parser to Rust and Python API + New Error to reflect changes in dependencies (+leb128fmt) for signed variable integers + Added leb128 Python API
--- This should finish #4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.