Commit Graph
100 Commits
Author SHA1 Message Date
Adam 7fb5f3e721 work on moving static initializers 2015-08-17 20:18:34 -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
Adam eb986ba708 Eclipse code cleanup 2015-05-31 16:04:57 -04:00
Adam 0fcbcd262c new execute stuff 2015-05-31 16:03:37 -04:00
Adam 1e34e0ec66 Remove instructions correctly 2015-05-11 10:26:48 -04:00
Adam 64d41c6f92 Cleanup block removal 2015-05-11 10:25:00 -04:00
Adam fa3e9c0262 Hard to follow, exception removal and unused block (only from the now
removed exceptions from what I can tell)
2015-05-10 16:42:47 -04:00
Adam 2edf9d2117 clinit 2015-05-10 15:44:43 -04:00
Adam ba7486b98b Descriptor stuff 2015-05-10 15:06:50 -04:00
Adam 4af719032d Allow pool to be dynamically rebuilt 2015-05-09 17:00:30 -04:00
Adam 0d21d49d2d Can detect unused parameters 2015-05-05 13:36:54 -04:00
Adam e70466fc0a Add local var table instruction type and make relevant instructions
implement it
2015-05-04 15:36:38 -04:00
Adam 267efc7940 Remove unused methods 2015-04-25 15:30:22 -04:00
Adam a9f953b46a Class writing, call graph, eclipse project 2015-04-25 12:47:06 -04:00
Adam 4dc6bfc949 Doesn't execute all paths correctly 2015-02-08 16:35:58 -05:00
Adam d00e5b03e1 Doesn't work and I don't know why 2015-02-01 22:19:28 -05:00
Adam 027dc6eff9 Some thinking about exceptions 2015-02-01 21:15:14 -05:00
Adam 763d82379e Add eclipse project file 2015-02-01 18:06:18 -05:00
Adam e38b4c5212 More execution work 2015-02-01 17:49:33 -05:00
Adam cec4f0ac59 getObject on String should really just return the string 2015-01-26 02:25:42 -05:00
Adam 55dca4fa9b Executor work 2015-01-26 00:40:54 -05:00