Graham
a82d2e3cef
Transform class literals to Java 5 format
...
In Java 1.4 and earlier, the compiler creates a synthetic method for
invoking Class.forName() and a static field for caching the Class<?>
instance.
This will not interact well with the static scrambling transformer. The
obfuscator strips some synthetic flags. Furthermore, the field and
method need to be moved together with the code that uses them for
decompilers like Fernflower to recognise them and convert them back to
class literals.
If Fernflower misses one, the decompiled Class.forName() helper does not
compile cleanly (as the bytecode is missing a CHECKCAST).
Rather than complicating the future static scrambling transformer, it's
easier to convert these to use LDC and upgrade the .class file version
to Java 5.
5 years ago
Graham
bfcb373ade
Add ClassVersionUtils
5 years ago
Graham
5c5a908a37
Set decompiler's heap size to 3 GiB
...
The default on my laptop (with 8 GiB of RAM, so presumably a 2 GiB heap)
is too small.
5 years ago
Graham
752941f9f3
Add unpackclass to DEFAULT_PUBLIC_CTOR_CLASSES
...
It is loaded with ClassLoader::loadClass() instead of Class.forName(),
so our automatic detection code doesn't find it.
5 years ago
Graham
626cbacc06
Remove colons from debug log messages for consistency
5 years ago
Graham
1b1bb7dc5b
Change 'user interface' to 'game frame' in the FAQ
...
I think this makes the meaning slightly clearer.
5 years ago
Graham
caf7efdd6c
Use weakest possible visibility for each method/field
...
This is a prerequisite for the static scrambling transformer. As it
moves methods/fields around, it requires their visibilities to be
updated.
5 years ago
Graham
fda857963b
Make ClassPath::get() return null if a class is not found
5 years ago
Graham
59ac765ef8
Add method for finding classes loaded with Class.forName()
5 years ago
Graham
34ef4f9a5e
Rename ClassForNameRemapper to ClassForNameUtils
...
A future commit will add functionality beyond remapping.
5 years ago
Graham
cad451d3e1
Make ClassForNameRemapper compatible with packaged classes
5 years ago
Graham
3c7989455b
Add ClassNameExtensions
5 years ago
Graham
c7f5b0b6b3
Replace isNative() with more generic getAccess() method
5 years ago
Graham
deb65474c7
Update dependencies
5 years ago
Graham
98abb15847
Update dependencies
5 years ago
Graham
4536fc58a2
Update Gradle
5 years ago
Graham
f30a1f88b0
Update dependencies
5 years ago
Graham
62a34ecadc
Update Gradle
5 years ago
Graham
a66e3eeb9b
Move CounterTransformer later in the pipeline
...
This allows us to remove a counter whose code I suspect was mixed with a dummy
local variable declaration.
5 years ago
Graham
d817856da1
Remove counters with multiple increments
5 years ago
Graham
3124624b5e
Make EXCLUDED_{METHODS,FIELDS} public
...
These will be required for the future static scrambling transformer.
5 years ago
Graham
7bb1218b42
Add sequential property to AbstractInsnNode
5 years ago
Graham
25a6953644
Fix use of deprecated JavaParser methods
5 years ago
Graham
0a988584b7
Convert some deob-ast methods to extension methods
5 years ago
Graham
5487a74eb8
Remove traversal argument from walk extension method
5 years ago
Graham
54aec42f90
Format .kts files
5 years ago
Graham
3f2335859d
Add support for impure expressions to InsnListUtils
5 years ago
Graham
f8acce846b
Format .editorconfig file
5 years ago
Graham
c0da020649
Fix handling of argumentsAndReturnSizes for static methods
5 years ago
Graham
713009470f
Fix NEW StackMetadata
5 years ago
Graham
a0d6a48922
Fix StackMetadata for MethodInsnNodes
5 years ago
Graham
64a9ae33cb
Fix StackMetadata for FieldInsnNodes
5 years ago
Graham
e0d6390f87
Add getSimpleExpression method
5 years ago
Graham
5d813a345d
Reduce priority of mavenLocal() to fix dependencyUpdates
5 years ago
Graham
641da067da
Depend on kotlin-inline-logger directly
5 years ago
Graham
7708056488
Use kotlin-inline-logger from Maven Central
5 years ago
Graham
e6ac51688c
Skip openrs2 repositories if no username/password are supplied
5 years ago
Graham
e480ce282a
Avoid write() calls with a length of zero
5 years ago
Graham
8d90a70b6a
Fix SkipOutputStream
...
Calling super.write(byte[], int, int) in FilterOutputStream didn't work,
as it called super.write(byte). This is inefficient and also caused us
to fiddle with skipBytes twice, causing us to skip the incorrect number
of bytes.
5 years ago
Graham
f96e9225bf
Update dependencies
5 years ago
Graham
4e75f15e93
Add Jenkinsfile to .editorconfig
5 years ago
Graham
73df826e85
Add Jenkinsfile
5 years ago
Graham
a1d1c74987
Enable strict JSR-305 mode
5 years ago
Graham
ccbbf873af
Switch from Maven to Gradle
5 years ago
Graham
785ce2d9ca
Use require() in PlatformDetectionTransformer
5 years ago
Graham
8df0907118
Replace IllegalStateException with error() in BitMaskTransformer
5 years ago
Graham
248cad99e3
Improve safety of IFEQ/IFNE check in OpaquePredicateTransformer
5 years ago
Graham
c4e08242aa
Fix handling of opaque predicate embedded in flow obstructor initializer
5 years ago
Graham
323d23b6d4
Remove spelling inspection
...
It produces far too many false positives.
5 years ago
Graham
abf803f017
Replace contains() calls with the in operator
...
These are artifacts of the Java port.
5 years ago