Adam
f46e4dfdce
translating one field works
2015-09-06 23:39:47 -04:00
Adam
88bd6490de
Work.
2015-09-05 23:19:38 -04:00
Adam
fae040a98f
Fix methodinliner to move jumps to the function being inlined to the right place
2015-09-05 19:10:57 -04:00
Adam
227606a065
hm
2015-08-26 19:10:56 -04:00
Adam
1fd79174ea
Some detecting getters, not totally right. Cap at 5.
2015-08-24 18:27:13 -04:00
Adam
4143a59d9d
cleanup
2015-08-23 20:29:23 -04:00
Adam
5561478ec8
Also direct assignment
2015-08-23 18:35:45 -04:00
Adam
7ac2b0e977
Working on doing arith deob during exec
2015-08-23 18:22:51 -04:00
Adam
32cbb0f805
Merge branch 'master' into master+arith
...
Conflicts:
src/main/java/net/runelite/deob/attributes/code/instructions/GetStatic.java
2015-08-23 12:55:31 -04:00
Adam
9878fb59b3
Remove beginning of original instruction graph, don't need it
2015-08-23 12:49:21 -04:00
Adam
0a8d233083
arith v2
2015-08-23 12:40:12 -04:00
Adam
4d4dd9715e
Allow inlining methods with exceptions
2015-08-22 22:53:03 -04:00
Adam
0bfc3e3c38
Blah whitespace
2015-08-22 17:56:08 -04:00
Adam
e478a4b1f9
Store stack context with variable context, and pass up stack contexts when invoking methods. I don't think iirc is right?
2015-08-22 17:54:39 -04:00
Adam
8ff2f4776a
Only onsider non static methods in fieldmover, note why fieldmover is broken
2015-08-22 14:58:21 -04:00
Adam
8e487a3567
Merge branch 'master' into master+fieldmove
2015-08-22 12:19:22 -04:00
Adam
1853bb1be1
Field moving works
2015-08-22 12:18:24 -04:00
Adam
35d8a98365
hm this assert fails
2015-08-19 21:23:00 -04:00
Adam
7fb5f3e721
work on moving static initializers
2015-08-17 20:18:34 -04:00
Adam
88fc561188
Fix rename unique fields
2015-08-17 17:01:03 -04:00
Adam
5839452b3b
requires some work to move static field initializers
2015-08-16 21:15:51 -04:00
Adam
5059f8cc75
Fix not removing ctors, unused class deob. Can't yet move static fields to client until I can move clinit
2015-08-16 19:08:22 -04:00
Adam
4f11ca9f36
Rename info.sigterm -> net.runelite
2015-08-16 15:17:58 -04:00
Adam
1c8f2dbc27
Inline static constant string fields
2015-08-15 17:05:54 -04:00
Adam
8a7e1d1f97
Field mover
2015-08-15 14:54:48 -04:00
Adam
fc3c0a258f
Finish methodmover
2015-08-15 12:49:00 -04:00
Adam
f91f6f5918
Small fixes
2015-08-15 00:03:00 -04:00
Adam
09c4b108dd
Fix inliner
2015-08-14 15:01:11 -04:00
Adam
f3bdcf954e
Bail out if const param detects a lvt store
2015-08-14 14:00:27 -04:00
Adam
2eeda597dc
Compare more than just the pops, but the entire stack, and compare
...
the instructions not the contexts
2015-08-13 18:22:53 -04:00
Adam
9b4230154c
Use instruction ctx to see if a jump has already happened. Not sure if it works but it runs.
2015-08-12 18:01:12 -04:00
Adam
f8fe552287
invokespecial shouldn't find deep for the method being invoked
2015-08-09 20:50:06 -04:00
Adam
399e5d8f8a
cleanup athrow
2015-08-09 17:22:53 -04:00
Adam
0e626afd0a
jump to exception handlers more reliably. fix finaliers
2015-08-09 17:22:00 -04:00
Adam
1090dfee7e
fix lt comparison
2015-08-09 13:06:42 -04:00
Adam
b9410f76a5
remove unused blocks
2015-08-09 12:11:17 -04:00
Adam
ba1ff95628
Trying to make this work live, constant param deob is breaking stuff
2015-08-09 12:10:58 -04:00
Adam
7c336948fc
Rebuild jump graph in inliner
2015-08-08 21:51:15 -04:00
Adam
da0b7403b4
Try and replace unused blocks with unreached code, seeing some problems somewhere
2015-08-08 20:45:16 -04:00
Adam
12318efcaf
untested, inline functions with args/return values
2015-08-08 14:27:02 -04:00
Adam
2e7e2d31d4
Inline static void methods with no arguments
2015-08-08 11:06:41 -04:00
Adam
d09eb21a0d
Some initial work on inlining
2015-08-08 00:37:12 -04:00
Adam
42e4223e83
make illegal state exception less strict
2015-08-07 20:46:47 -04:00
Adam
95368f61a8
Fix constant parameter corrupting instructions. Make unused blocks faster.
2015-08-06 18:59:23 -04:00
Adam
ba4f23ffbd
per method,lvt deadops, but this appears to produce broken code?
2015-08-05 17:03:49 -04:00
Adam
9c3b0b4754
Fix identifying vmethods incorrectly if two classes can be reached in the classgraph with two methods that have the same name and signature but are otherwise unrelated
2015-08-04 20:40:20 -04:00
Adam
b4a316b811
cleanup
2015-08-03 16:47:10 -04:00
Adam
57b9a45871
appears to work
2015-08-02 21:46:24 -04:00
Adam
1ac0cef696
these const push instructions are also push instructions. need to fix jumps to the logically dead conditionals.
2015-08-02 11:50:20 -04:00
Adam
516fa7805f
I dont know if this works or is correct but it runs?
2015-08-01 21:35:02 -04:00
Adam
7ce6cca104
this doesn't work at all but looks bette
2015-07-31 23:48:35 -04:00
Adam
7b4de7d8db
I dont like this
2015-07-31 12:47:40 -04:00
Adam
a7902d53e9
idr
2015-07-30 20:45:28 -04:00
Adam
5478fc7385
Start of constant parameter stuff
2015-07-30 16:39:48 -04:00
Adam
f27e410f5b
Fix rename unique, renaming fields depends on classgraph for searching deep for fields
2015-07-28 16:48:03 -04:00
Adam
369a93be7b
Rename unique first
2015-07-27 20:12:56 -04:00
Adam
fda37792ff
Seeing something weird with invokestatic methods on non static methods?
2015-07-26 21:36:19 -04:00
Adam
35fcfc0645
Don't remove params on not ob'd methods, or ctors
2015-07-26 19:01:43 -04:00
Adam
30e29a52ab
rename unique works
2015-07-26 14:15:52 -04:00
Adam
76cd96b7d8
Check for unused constructors too
2015-07-13 16:20:34 -04:00
Adam
ba5ecc5c6c
Fix multianewarray class renaming
2015-07-13 08:49:49 -04:00
Adam
b7d4d4981f
Debugging stuff.
2015-07-12 21:43:40 -04:00
Adam
ec50303962
Fix up jump inlining, this causes linear scans of the instructions for a
...
lot of exceptions and is slow. Need to allow inlining in try blocks?
2015-07-12 00:15:45 -04:00
Adam
3fbb69e102
Fixes to unique rename, just use getMethods() instead of comparing names
2015-07-11 13:34:32 -04:00
Adam
e263694eac
Rest of rename unique. Untested but asm looks ok.
2015-07-11 11:33:40 -04:00
Adam
b03a0e3181
Rename unique non overriden methods
2015-07-10 22:00:12 -04:00
Adam
26458e7280
Add common deobfuscator interface
2015-07-10 12:37:45 -04:00
Adam
df11cdaded
Rename unique fields
2015-07-10 11:29:46 -04:00
Adam
5781f08152
Beginning work of rename unique, now renames classes
2015-07-09 20:56:44 -04:00
Adam
c92387e089
Remove pool entry pool reference
2015-07-07 12:49:37 -04:00
Adam
be127c55cb
cleanup
2015-07-05 21:09:13 -04:00
Adam
fcc8fddcd7
Make unused method stuff simpler don't worry about collisions, I'll
...
rename everything later so it wont be a problem
2015-07-05 21:05:34 -04:00
Adam
bfcfaa84e6
This doesn't really work but it's a start.
2015-07-05 17:10:44 -04:00
Adam
a7b70c072b
Some fields we may be able to detect get but not set, should probably
...
calculate the othe rhalf instead of trying to calculate it from multiple
fields?
2015-07-05 00:40:23 -04:00
Adam
1e893da471
Begin multi pass work
2015-07-04 13:35:01 -04:00
Adam
919ad34996
hm
2015-07-03 22:35:28 -04:00
Adam
500037fc45
Cleanup, prepare to detect more ob'd fields.
2015-07-03 18:54:54 -04:00
Adam
6834504e6c
Work on detecting setters, for comparison/some fields which are never
...
cleanly gettd
2015-07-03 18:05:48 -04:00
Adam
18a914184b
Don't count non ob'd fields, down to 50
2015-07-03 16:45:19 -04:00
Adam
7eb32d7df1
Something smarter, down to 82
2015-07-03 16:30:30 -04:00
Adam
c5bbe20791
Unused field stuff was harder than i thought
2015-07-03 01:09:01 -04:00
Adam
7b0776d1ec
more arith deob
2015-07-02 17:07:57 -04:00
Adam
e5a8ff8268
cleanup, detect func(field * constant).
...
Sometimes non storing lvt instructions don't give us the correct getter
value eg
if (lvt > field * constant) -> actually if (lvt > field * x)
2015-07-02 13:48:26 -04:00
Adam
1056006b59
Got unused parameter stuff to run again. atm not bothering with
...
functions that might be overriden.
2015-06-30 14:46:15 -04:00
Adam
91f189add1
fix unused methods again
2015-06-28 20:45:01 -04:00
Adam
b0f5f33e89
Fixup rest of unused method stuff. It appears there are some garbage
...
fields too places.
2015-06-28 19:32:54 -04:00
Adam
d9f4d257a5
wip removal of unused methods based on execution from init.
2015-06-27 23:47:43 -04:00
Adam
dfcc41b41c
I will need to actually perform method invocations during execution to
...
be able to pass/get the correct underlying types of variables for the
virtual method lookup.
2015-06-26 13:19:51 -04:00
Adam
0543950013
I think my invokevirtual execution is wrong because it doesn't actually
...
look for virtual methods on the type, which is why my unused method deob
does weird things. I am seeing methods that still exist after running it
that appear to be using non-inversible constants.
2015-06-25 19:07:46 -04:00
Adam
1eee5a48ae
store pushes in instruction context too
2015-06-24 14:48:30 -04:00
Adam
85fc94dd57
Thinking on modinverse
2015-06-23 19:29:32 -04:00
Adam
815b2e2931
works. splitting blocks by instructions jumped to and not checking
...
whether inlinable blocks were terminal.
2015-06-20 18:39:40 -04:00
Adam
713db7777f
remove stack of ifs in illegal state ex deob, get rid of using pcs in
...
frame to execute, need to remove more of this later, make jumps jump to
instructions, doesn't yet work
2015-06-20 17:56:46 -04:00
Adam
98d85c646b
illegal state exception deob, ff doesnt fully like it yet though
2015-06-19 23:30:03 -04:00
Adam
d3142d83ce
Simplify jump deob, just destroy and rebuld jump graph instead of trying
...
to update it which sucks.
2015-06-18 16:49:47 -04:00
Adam
cb172775d4
Don't try and move jumps around in exceptions
2015-06-17 19:03:00 -04:00
Adam
db6269ba7e
debugging, idr, exception handler execution support
2015-06-13 21:51:06 -04:00
Adam
6cac8c1cc9
Move deobfuscation methods to their own files
2015-06-13 14:24:04 -04:00
Adam
3140a51f3f
Conflicts:
...
src/main/java/info/sigterm/deob/Deob.java
src/main/java/info/sigterm/deob/attributes/code/Instructions.java
2015-06-13 11:09:34 -04:00
Adam
a677e64aac
Remove unused parameters
2015-06-13 11:01:46 -04:00