43 Commits

Author SHA1 Message Date
Lucaskyy
7a56dca004
feat: add fuzzy resolver
fixed docs for MethodSignature & added tests for fuzzy resolver
2022-06-05 08:03:13 +02:00
Lucaskyy
18853f70a4
refactor: migrate signature schema changes to Patcher
also updated Extensions, for good measure.
2022-06-05 08:03:13 +02:00
oSumAtrIX
6b8b0573d4
feat: add missing test for fields
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2022-06-05 08:03:12 +02:00
Lucaskyy
72f3cad3f9
refactor: Change all references from Array to Iterable
BREAKING CHANGE: arrayOf has to be changed to listOf.
2022-06-05 08:03:10 +02:00
Lucaskyy
94dbb573cf
refactor: bump multidexlib2, dexlib2 and smali 2022-06-05 08:03:07 +02:00
Lucaskyy
c267b12a7d
refactor: make method a property 2022-06-05 08:03:04 +02:00
Lucaskyy
45303f66ec
test: fix test with previous changes 2022-06-05 08:03:03 +02:00
oSumAtrIX
0d8d19e708
feat: Finish first patcher test 2022-06-05 08:03:00 +02:00
oSumAtrIX
544bcf76bd
feat: Add first tests 2022-06-05 08:02:58 +02:00
oSumAtrIX
398239dc10
fix: fix classes having multiple method instances 2022-06-05 08:02:56 +02:00
Lucaskyy
bfe4e3e298
feat: add inline smali compiler 2022-06-05 08:02:55 +02:00
Lucaskyy
a1b6b06bd3
test: use findClass with className & cleanup 2022-06-05 08:02:55 +02:00
Lucaskyy
00c85b5d75
feat: add or extension for AccessFlags 2022-06-05 08:02:54 +02:00
oSumAtrIX
e6c2501539
fix: Fixed writer & signature resolver, improved tests & speed, minor refactoring 2022-06-05 08:02:52 +02:00
oSumAtrIX
3651981161
feat: migrate to dexlib
BREAKING CHANGE: Removed usage of ASM library
2022-06-05 08:02:51 +02:00
Lucaskyy
fa6e454ae9
test: fix assert message 2022-06-05 08:02:50 +02:00
Lucaskyy
cbd8df2df0
fix(MethodResolver): fix cd57a8c9a0db7e3ae5ad0bca202e5955930319ab 2022-06-05 08:02:49 +02:00
Lucaskyy
699c730a7c
fix(MethodResolver): strip labels and line numbers so opcode patterns match 2022-06-05 08:02:48 +02:00
Lucaskyy
41749ba829
fix: give ClassWriter a ClassReader for symtable
removed SafeClassWriter as it was unused
2022-06-05 08:02:46 +02:00
Lucaskyy
7faa001406
refactor: Optimize Signature class (#11)
BREAKING CHANGE: Array<Int> was changed to IntArray. This breaks existing patches.
2022-06-05 08:02:44 +02:00
Lucaskyy
70872307e3
refactor: Rename net.revanced to app.revanced
BREAKING CHANGE: Package name was changed from "net.revanced" to "app.revanced"
2022-06-05 08:02:44 +02:00
oSumAtrIX
310a7c446b
fix(Io): JAR loading and saving (#8)
* refactor: Complete rewrite of `Io`

* style: format code

* style: rewrite todos

* fix: use lateinit instead of nonnull assert for zipEntry

* fix: use lateinit instead of nonnull assert for jarEntry & reuse zipEntry

* docs: add docs to `Patcher`

* test: match output of patcher

* chore: add todo to `Io` for removing non-class files

Co-authored-by: Sculas <contact@sculas.xyz>
2022-06-05 08:02:43 +02:00
oSumAtrIX
674461f08d
fix: nullable signature members (#10)
This commit will allow "partial" signatures, basically we will be allowed to exclude members to match for the signature
2022-06-05 08:02:43 +02:00
oSumAtrIX
bbb2c547aa
feat: Add findParentMethod utility method (#4)
* feat: Add `findParentMethod` utitly method

* refactor: add `resolveMethod` to `MethodResolver`

added some assertions and some tests

Co-authored-by: Lucaskyy <contact@sculas.xyz>
2022-06-05 08:02:42 +02:00
Lucaskyy
4dd820ffdf
fix: Patch should have access to the Cache
BREAKING CHANGE: Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
2022-06-05 08:02:41 +02:00
Lucaskyy
cb9b1b9416
refactor: convert Patch to abstract class
BREAKING CHANGE: Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
2022-06-05 08:02:40 +02:00
Lucaskyy
6b1cec4a43
test: add test for multiple classes in jar 2022-03-20 19:05:24 +01:00
Lucaskyy
ec8115f3ac
test: improve PatcherTest 2022-03-20 16:28:23 +01:00
Lucaskyy
0e72a6e85f
fix: remove broken code
accidentally committed TestUtil in previous commit, this allows it to compile again
2022-03-20 15:57:05 +01:00
Lucaskyy
d5a3c76389
fix: avoid ignoring test resources (fixes #1) 2022-03-20 15:54:41 +01:00
oSumAtrIX
5d146c362f
Improve example test testPatcher and increase caching speed 2022-03-20 03:06:23 +01:00
Lucaskyy
29f1595183
WIP Saving 2022-03-19 23:58:37 +01:00
Lucaskyy
57d5751b2c
Add saveTo test 2022-03-19 23:33:17 +01:00
Lucaskyy
8c56d15823
Finish tests, add InsnList.setAt, sr -> sd
Added some sweet explanation too.
2022-03-19 23:15:20 +01:00
Lucaskyy
61c0541ef5
Add information about test data in PatcherTest 2022-03-19 23:01:10 +01:00
Lucaskyy
fc64bbc32a
Minor things 2022-03-19 22:53:05 +01:00
Lucaskyy
e5f9a42ee6
Convert typed Object & Array types to Object types
Commit name is a bit superfluous, but it means that types such as "Ljava/lang/String;" get converted to "Ljava/lang/Object;". This is so we don't need to know the mappings, which are random in YT's code.

This is done in MethodResolver's "convertObject" and "convertObjects" for arrays.

Also changed ExtraTypes.ArrayAny to Object instead of String, that was a mistake. (which caused the test to pass at first)
2022-03-19 22:34:41 +01:00
Lucaskyy
f9327a2043
executePatches -> applyPatches, made logback a test dep 2022-03-19 21:58:31 +01:00
Lucaskyy
ae5007ebd1
Fix tests (stupid mistake) & add logging 2022-03-19 19:47:12 +01:00
Lucaskyy
a9e7f19d51
Refactor Patcher 2022-03-19 18:35:41 +01:00
oSumAtrIX
6666c7a4b7
Add: MethodResolver, PatternScanner, SignatureLoader & Cache 2022-03-19 01:37:02 +01:00
Lucaskyy
7b40d53bd3
TIL CodeWithMe is ass! 2022-03-18 21:52:00 +01:00
Lucaskyy
675c409a59
Rework patcher 2022-03-18 20:46:24 +01:00