570 Commits

Author SHA1 Message Date
Lanchon
da571dbe71 Use similar formatting for section arrays 2018-07-10 16:09:40 -07:00
Lanchon
fef5569d25 Fix and extend hasOverflowed 2018-07-10 16:09:40 -07:00
Lanchon
2f29256bdf Use a switch statement in mapDexVersionToApi 2018-07-02 11:33:20 -07:00
Lanchon
a237739444 Make mapDexVersionToApi return NO_VERSION in the style of the other maps
Note that this commit silently changes the behavior of dexlib2 public API.
But mapDexVersionToApi was made available only a day ago in dexlib2 2.2.4,
and if the next version is published quickly, then this change should have
no real impact on clients.
2018-07-02 11:33:20 -07:00
Lanchon
9560bfe2a0 Remove the redundant SUPPORTED_DEX_VERSIONS array 2018-07-02 11:33:20 -07:00
Lanchon
1e984c2970 Use the same literals in mapDexVersionToApi and mapApiToDexVersion 2018-07-02 11:33:20 -07:00
Lanchon
dafcef3884 Refactor VersionMap.mapApiToDexVersion out of HeaderItem.getMagicForApi 2018-07-02 11:33:20 -07:00
Ben Gruver
fd3e00ab35 Refactor most of the utility classes from util into dexlib2
Now, util only contains the utilities that are needed by smali/baksmali,
but not dexlib2. E.g. the common command line parsing utilities, some path
utilities, etc.

This also reverses the dependency between the util module and dexlib2.
2018-07-01 14:08:33 -07:00
Lanchon
2fcdad2078 Fix accidental dependency on JCommander on test 2018-06-13 22:43:25 -07:00
Lanchon
468a4eeba6 Fix mark/reset for new sections (closes #615) 2018-06-13 21:19:05 -07:00
Lanchon
d2b36e16da Fix accidental dependency on JCommander 2018-06-13 21:18:28 -07:00
Wojtek Kaliciński
f16b420b70 Fix for method reference sizes
The protos can be shared across methods so we should not be counting
them as part of private method size.
2018-06-13 14:12:40 -07:00
Lanchon
67e7b39dfc MemoryDataStore: Enforce min growth step and delay allocation of buffer 2018-06-13 14:11:46 -07:00
Lanchon
63896875d4 MemoryDataStore: Efficiently multiply by 1.25 2018-06-13 14:11:46 -07:00
Lanchon
f1c116241a MemoryDataStore: Fail fast on invalid offsets 2018-06-13 14:11:46 -07:00
Lanchon
c41c24a0c2 MemoryDataStore: Support InputStream mark/reset 2018-06-13 14:11:46 -07:00
Lanchon
b9a725e726 MemoryDataStore: Handle weird arguments values correctly
Namely:
- Negative arguments to InputStream::skip(n).
- Large arguments to readAt(offset).
2018-06-13 14:11:46 -07:00
Lanchon
c645b9d546 MemoryDataStore: More efficient overridable growth policy 2018-06-13 14:11:46 -07:00
Lanchon
b0a69fce34 MemoryDataStore: Add a data-trimming getData() method 2018-06-13 14:11:46 -07:00
Lanchon
53cdb13acc MemoryDataStore: Rename the buffer getter method 2018-06-13 14:11:46 -07:00
Lanchon
6917c1fa14 MemoryDataStore: Keep track of actual size of data 2018-06-13 14:11:46 -07:00
Lanchon
d7b389da39 MemoryDataStore: Fix InputStream::read(byte[] b, int off, int len) bug 2018-06-13 14:11:46 -07:00
Lanchon
387299c6e3 MemoryDataStore: Allow overriding of growth policy 2018-06-13 14:11:46 -07:00
Lanchon
ea7c265d12 MemoryDataStore: Fix growth calculation 2018-06-13 14:11:46 -07:00
Albert Gorski
f10643fa43 Handle Changes in OAT Files for Android 8.1 (OAT 131)
- The OAT Header has a new field containing the offset to the
  entries for the DEX files.
    - The change was made in OAT 127.
    - All offsets in the header had to be adjusted to account
      for this new field.
    - The offset to the entries for the DEX files also had to
      be adjusted to use this field as they are no longer
      right after the key value store.
- The format of the DEX entries also changed in OAT 127 and
  again in OAT 131.
    - The field containing the offset to the method bss
      mapping was added in OAT 127.
    - The field containing the offset to the dex sections
      layout was added in OAT 131 right before the method
      bss mapping offset.
2018-06-12 13:39:43 -07:00
ale5000
ec31f76206 Simplified mapApiToArtVersion 2018-06-12 00:52:27 -07:00
Ben Gruver
2db1dec703 Add support for dex version 39 in dexlib2 2018-05-23 13:34:16 -07:00
Ben Gruver
a198c85a8e Add support for dumping the new structures 2018-05-23 13:34:16 -07:00
Ben Gruver
077c5c1b91 Let baksmali infer the api level when possible 2018-05-23 13:34:16 -07:00
Ben Gruver
e8760aa46b Add support for method handle and call site references in ReferenceUtil 2018-05-23 13:34:16 -07:00
Ben Gruver
858d264db9 Change the name of the invoke method handle types
Change the names to match the name used in the smali grammar
2018-05-23 13:34:16 -07:00
Ben Gruver
5c5e4ae279 Implement support for new structures in DexWriter 2018-05-23 13:34:16 -07:00
Ben Gruver
cc34359691 Create separate section for encoded arrays 2018-05-23 13:34:16 -07:00
Ben Gruver
fa5d0cc73a Add Immutable implementations of the new structures 2018-05-23 13:34:16 -07:00
Ben Gruver
8bdb50381d Fix up a few non-immutable members in immutable encoded value implementations 2018-05-23 13:34:16 -07:00
Ben Gruver
dea793447f Add DexBacked implementations of the new structures 2018-05-23 13:34:16 -07:00
Ben Gruver
ead2e033d0 Add getItemCount method to EncodedArrayItemIterator 2018-05-23 13:34:16 -07:00
Ben Gruver
2215e031bf Fix typo in DexBackedMethodEncodedValue 2018-05-23 13:34:16 -07:00
Ben Gruver
88ece20f9f Move the map item related methods from RawDexfile to DexBackedDexFile 2018-05-23 13:34:16 -07:00
Ben Gruver
e3fd1e8115 StaticInitialValueIterator -> EncodedArrayItemIterator 2018-05-23 13:34:16 -07:00
Ben Gruver
6c054e1b44 Minor javadoc fixes in MethodProtoReference 2018-05-23 13:34:16 -07:00
Ben Gruver
b575410a8a Add the basic structures necessary to support invoke-custom 2018-05-23 13:34:16 -07:00
Ben Gruver
38f575608f Fix line_start annotation in debug_info_item
line_start can be > 2^31, so we have to use readBigUleb128 instead
of readSmallUleb128
2017-10-02 19:10:31 -07:00
Ben Gruver
20a272dbb9 Fix an issue when writing uleb128 values larger than 2^31 2017-10-02 19:10:31 -07:00
Orion Hodson
b84345935a Fix out registers for invoke-polymorphic
The calculation of the number of output registers for
invoke-polymorphic and invoke-polymorphic-range should be based on the
number of registers provided.
2017-09-12 14:34:56 -07:00
Daniel Bali
d4702a45a7 Add basic support for ODEX instructions 2017-05-17 11:20:30 -07:00
Wojtek Kaliciński
dd11921529 Fix for counting method implementation sizes 2017-04-25 12:02:57 -07:00
Wojtek Kaliciński
b65e942e7e Add support for getting byte sizes to dex backed references 2017-04-21 13:54:27 -07:00
Furniel
9df7a67273 Fixed Android M and N deodexing(Fixes #503) 2017-03-29 12:39:44 +03:00
Ben Gruver
48cde6219d Add initial support for vdex files
This is the bare minimum to get deodexing to work with vdex files.
2017-03-25 16:25:49 -07:00