Adam
fd8af8732d
Unused class test
2016-03-25 22:11:19 -04:00
Adam
35628b4497
Rewrite field inliner
2016-03-25 22:10:26 -04:00
Adam
c22a9e43da
Rewrite unused fields
2016-03-25 22:02:44 -04:00
Adam
e8c047aabe
Cleanup
2016-03-25 21:55:06 -04:00
Adam
3444655f09
Rewrite constant parameter. A bit faster now. Can't tell if its right. Seems to compile.
2016-03-25 21:52:23 -04:00
Adam
5ef0be50bf
Make unused parameters use VirtualMethods. This removes more parameters than before, I dont know if it is right.
2016-03-25 15:04:28 -04:00
Adam
0ed6456c60
Move virtual method lookup its own class as many things use it
2016-03-25 14:21:27 -04:00
Adam
bcbc87994a
Unused params test, this is very slow.
2016-03-24 18:38:58 -04:00
Adam
b16fbd712e
Constant parameter test, kind of slow though, 46s.
2016-03-24 17:25:16 -04:00
Adam
cbdf406434
Remove jump graph, isn't used except for some integrity checks, but it makes stuff overly complex.
2016-03-24 17:18:08 -04:00
Adam
d4a74501b7
Just run once
2016-03-24 15:13:11 -04:00
Adam
e73be15286
duh
2016-03-24 10:14:22 -04:00
Adam
2fdf2b47bc
ise tests/cleanup. needs more optimizations.
2016-03-24 10:13:18 -04:00
Adam
3f91d272d6
Couple more simple tests
2016-03-24 10:12:37 -04:00
Adam
e8a5eba8f4
Rename unique test
2016-03-21 11:17:06 -04:00
Adam
9830f4a339
Move asm specific stuff to net.runelite.asm
2016-03-21 10:11:36 -04:00
Adam
488c11abfa
Use internal classnames when injecting interfaces
2016-03-20 17:30:59 -04:00
Adam
9b1f5720b0
Only re-generate pool info for get/put/invoke instructions if something changes, otherwise it uses the pool info of the resolved field which isn't always the same
2016-03-20 17:30:31 -04:00
Adam
c79a344008
Make specific most things, so minimize jasmin diff so I can see the result of the injection easier..
2016-03-20 17:29:45 -04:00
Adam
a97e7c283e
Realized I can also use mapping importer to check mappings. This finds some discrepancies with the update RL mappings, but on manual inspection the RL mappings seem wrong.
2016-03-19 23:31:40 -04:00
Adam
3cc6255596
Rebuild pool when writing instrutions to fix previous corruption with the newarray stuff. Run classes through ow2 asm to generate stack maps (and maxs for fun) since I don't want to generate my own stackmaps.
2016-03-19 12:45:56 -04:00
Adam
3d1ae24d73
Well this seems to work a little better. This is totally made up.
2016-03-18 23:09:34 -04:00
Adam
5a0c8ee21d
arraystore: map values field
2016-03-18 20:41:52 -04:00
Adam
39e2c0420f
Crap.
2016-03-18 20:08:39 -04:00
Adam
4ea2d8d632
Fix if field mapper to take static/class name into consideration
2016-03-18 16:12:04 -04:00
Adam
a2fe796306
Add gamepack 18
2016-03-17 08:55:23 -04:00
Adam
4651c30abc
Inject test now runs with all api methods found.
2016-03-12 13:37:40 -05:00
Adam
31dc462e55
Redirect supercalls in obfuscated overrides.
2016-03-11 22:30:48 -05:00
Adam
419e0da7c1
Don't delete constructors because it might containe stuff we actually want. Instead rename to init and invoke from constructors. Magic.
2016-03-11 20:59:48 -05:00
Adam
6e79aece20
Some injecting classes now works
2016-03-11 17:34:09 -05:00
Adam
2cbdec1798
Beginning work on inject replace
2016-03-11 14:31:31 -05:00
Adam
61f6191228
invoker injection.
2016-03-11 00:26:00 -05:00
Adam
06c6c5d3b0
constant parameter: annotate methods with constant parameters are @obfuscatedsignature so we can find them later in inject. Remove deobbed 16 jar as it doesnt have up to date annotations anymore.
2016-03-10 23:40:48 -05:00
Adam
39c14267e5
Oops.
2016-03-10 19:56:44 -05:00
Adam
575deaf992
Sort stuff isnt required for graph stuff anymore, it was causing order of classes to load to be different when comparing obfuscated jar vs rebuilt jar, which caused class children order to be different, which affects renamer searching for bases which broke the issame comparison in invokeinterface.
2016-03-10 19:35:55 -05:00
Adam
d130a2fb4f
Hack to make packet mapping stop at the end of the packet handler
2016-03-10 18:02:56 -05:00
Adam
c616eba918
17 was the same as 16, add deobbed 16 jar
2016-03-06 21:24:55 -05:00
Adam
3dce3934c4
Try and pull packet info out of source. gamepack 16 and 17 are actually identical, I didn't realize. Interestingly i found if I attempt to map deobbed client that is rebuilt vs the deobbed client, it can't map everything. Some of that might have to do with the packet handling stuff, this currently npes in iinc so I can't tell how many is due to that yet.
2016-03-06 17:36:23 -05:00
Adam
c6d3620ab7
Method injection works, need to @Import annotate stuff though probably.
2016-03-06 15:28:11 -05:00
Adam
bb81dcf260
Import bugfixes. Need to @Import annotations etc since it can't pick up methods from the api atm
2016-03-05 23:34:47 -05:00
Adam
2675a402e4
Oh.
2016-03-04 15:38:26 -05:00
Adam
81c5c3831c
Merge branch 'master+rename5' of bitbucket.org:Adam-/jbytecode into master+rename5
2016-03-04 15:37:23 -05:00
Adam
f809d2a793
Begin inject
2016-03-04 15:37:12 -05:00
Adam
158a4219ae
client 17
2016-03-03 20:31:10 -05:00
Adam
a16a8a5a38
Begin moving code to do mapping to core. Write out annotation mapper.
2016-02-28 19:39:16 -05:00
Adam
7b46ae596f
Once again produces code that compiles
2016-02-28 11:44:24 -05:00
Adam
a97ee8881c
This was hard to find. Seems to work better? Old code here was finding wildly irrelevant funcs. Just use the renamer code.
2016-02-27 23:04:44 -05:00
Adam
63272b915b
Trying to get deob running again. Somethings broken.
2016-02-27 16:32:22 -05:00
Adam
6eeeaf0716
I don't know if this is right. Seeing some dead code still left in which is concerning.
2016-02-27 16:10:13 -05:00
Adam
fc82bb8a21
Generated garbage code will make negative sized arrays
2016-02-27 14:53:02 -05:00
Adam
1d2a7ba82c
Add RL mappings for the old jars
2016-02-27 13:43:04 -05:00
Adam
92b053548a
Fix handling invokevirtual on static methods
2016-02-27 13:37:41 -05:00
Adam
fb4ee1ac9b
Store return stack pop with stack context instead of what I was trying to do before
2016-02-27 12:58:44 -05:00
Adam
5fea3a9c31
Map multiple field comparison ifs, this maps all of my test rl fields
2016-02-27 12:33:13 -05:00
Adam
19f2807c86
Mapping packet handlers works some. Tried to add inlining of results of static methods. Doesnt work well because it inf loops so its disabled usually. I think instead I can track this separately on the stack context and fix resolve() to deal with it.
2016-02-27 11:38:44 -05:00
Adam
83f338a2e9
Dont know if this is right, but the pkt handlers at least can be picked up now.
2016-02-14 18:33:51 -05:00
Adam
3294e1add0
This took awhile to find.
2016-02-14 15:21:05 -05:00
Adam
d9fc79bba5
Test to see how many of the RL fields are mapped. Most but not all.
2016-02-14 00:10:00 -05:00
Adam
4d81829128
Beginning of rename deob
2016-02-13 23:38:58 -05:00
Adam
8f6efa7717
Remove old graph stuff, all tests pass
2016-02-13 22:51:11 -05:00
Adam
c1bd2d199e
Fix tests
2016-02-13 22:28:40 -05:00
Adam
770e1f6b2f
resolve multidimensional arrays
2016-02-13 20:54:44 -05:00
Adam
d833b53646
map value of putfields
2016-02-13 19:00:18 -05:00
Adam
71e0a6d996
Require frames to be crashed too to not map, adds +100
2016-02-13 18:48:43 -05:00
Adam
bcc74c6256
Map field of invoked object too
2016-02-13 18:02:20 -05:00
Adam
66e9960596
this wont work because exception handlers arent run so it wont see all returns
2016-02-13 17:07:01 -05:00
Adam
8efd637a87
Attempt to map non static methods using PME too
2016-02-12 15:34:52 -05:00
Adam
466da0bcb3
Map invoke arguments
2016-02-12 15:11:15 -05:00
Adam
1272d7b263
Compare method signatures when comparing invokes
2016-02-12 15:00:41 -05:00
Adam
bf03c60731
Map fields from ifs
2016-02-12 14:56:32 -05:00
Adam
cdc949abe0
pop stack more, I dont know if this is right, but maps a couple more fields
2016-02-12 13:30:01 -05:00
Adam
d4b148f72a
Including mapper map stuff in
2016-02-12 12:03:49 -05:00
Adam
4021e3d02f
Interesting work using pme to detect method equality
2016-02-11 22:54:18 -05:00
Adam
602afc964c
Make isSame sanity check more in set/put field and invokes
2016-02-10 20:33:45 -05:00
Adam
2bfbe1f239
This can map some but not nearly enough. Main problem seems to be the order of the packet handlers is scrambled, as well as their ids.
...
Maybe try detecting/treating the packet handlers as separate "functions" and compare them by seeing if PME can run over both?
Maybe try hardening PME mapper to fail more easily (eg setfield of field of two different types, or invoke with wrong signatures?), and then try and brute force methods in general.
Can also map methods with unique signatures that are non static method<->method.
client clinit?
2016-02-09 19:45:39 -05:00
Adam
0662e74369
I dont know why this runs forever.
2016-02-07 21:03:20 -05:00
Adam
c4bf4f65df
Actually I think I can just stop the frame if it crashes. This runs forever for some reason.
2016-02-07 14:27:19 -05:00
Adam
6906c81455
Mapping of static methods when stepping out in pme
2016-02-07 11:32:18 -05:00
Adam
9b2bda10cb
This file was important
2016-02-06 16:10:15 -05:00
Adam
74100b152d
Track array stores too, seems to run?
2016-02-06 13:28:41 -05:00
Adam
2854abfb08
init field order fix
2016-02-05 20:22:13 -05:00
Adam
e9103882b4
Also ignore javax. Now on init order ob.
2016-02-05 18:39:54 -05:00
Adam
dd0a96436e
ifnonnull vs ifnull
2016-02-05 16:00:51 -05:00
Adam
e2afbd3b98
Working on all tests again, hitting more ifconds not lining up
2016-02-05 15:54:33 -05:00
Adam
54b83ebda5
Forget trying to keep a 1<->1 of the frames
...
I guess this makes it a little more robust but is less complex.
The previous test function actually had code changes it seems and
so I moved it to a simplier function which seems to pass ok..
2016-02-05 14:57:38 -05:00
Adam
ac9282da76
I think i see why.
2016-02-03 21:25:58 -05:00
Adam
4aa8b23dfd
well this gets further
2016-02-01 20:14:57 -05:00
Adam
949ce54fb9
I think i see why.
2016-02-01 16:59:41 -05:00
Adam
3faa876ff7
this is all wrong
2016-01-31 22:18:57 -05:00
Adam
9d3ba7e1cf
XXX WIP TOTALLYWRONG. pmes are stopping prematurely because returnTo is not being kept across frame dups. if I enable it, i get assert fails on frame.other.
...
This also always steps into invokestatics, for when two are invoked but not really the same function.
2016-01-31 20:49:54 -05:00
Adam
8e73f37eba
boolean ifeq vs ificmpne. I want to unwrap these smaller ifs into larger ones to simplify code.
2016-01-30 16:29:22 -05:00
Adam
cbe45eddfe
Keep real type of stack contexts, which I think I need later. Exec test passes, not sure of other implications of this.
2016-01-30 15:56:36 -05:00
Adam
2a3b9158ea
ifcmpge vs ifcmplt
2016-01-30 14:06:23 -05:00
Adam
2b4c47fb25
ifacmpeq vs ifnonnull, ifeq vs ificmpne
2016-01-30 13:56:58 -05:00
Adam
234e42a319
Fix previous commit
2016-01-30 13:52:35 -05:00
Adam
f96f9b6c02
ificmpne to ificmpeq
2016-01-30 11:31:52 -05:00
Adam
d24411e63f
Make test files configurable
2016-01-30 11:14:02 -05:00
Adam
c8d29e3be4
Should be looking up all methods in invokevirtual, not just based off of the pool method and up. With test=true this fails on the constructor inlined constant value obfuscation.
2016-01-29 21:52:39 -05:00
Adam
f50c6523c0
hm
2016-01-29 21:24:07 -05:00
Adam
39ac3f1d68
ifnull
2016-01-29 20:38:24 -05:00