Commit Graph

7092 Commits

Author SHA1 Message Date
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