summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/bytecode/LocalVariableRenamer.java
diff options
context:
space:
mode:
authorGravatar jeff2015-03-02 01:41:28 -0500
committerGravatar jeff2015-03-02 01:41:28 -0500
commite8d6cb9e1ab61357ac26eb93a0a67917ded8a7b5 (patch)
treee97e2d1a7f8cf53ec5a5ff26d17ce993e8acf803 /src/cuchaz/enigma/bytecode/LocalVariableRenamer.java
parentfinished most of the matching gui (diff)
downloadenigma-fork-e8d6cb9e1ab61357ac26eb93a0a67917ded8a7b5.tar.gz
enigma-fork-e8d6cb9e1ab61357ac26eb93a0a67917ded8a7b5.tar.xz
enigma-fork-e8d6cb9e1ab61357ac26eb93a0a67917ded8a7b5.zip
added simple renamer for local variable table
Diffstat (limited to 'src/cuchaz/enigma/bytecode/LocalVariableRenamer.java')
-rw-r--r--src/cuchaz/enigma/bytecode/LocalVariableRenamer.java32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/cuchaz/enigma/bytecode/LocalVariableRenamer.java b/src/cuchaz/enigma/bytecode/LocalVariableRenamer.java
new file mode 100644
index 0000000..53f207c
--- /dev/null
+++ b/src/cuchaz/enigma/bytecode/LocalVariableRenamer.java
@@ -0,0 +1,32 @@
1package cuchaz.enigma.bytecode;
2
3import javassist.CtBehavior;
4import javassist.CtClass;
5import javassist.bytecode.ByteArray;
6import javassist.bytecode.ConstPool;
7import javassist.bytecode.LocalVariableAttribute;
8
9
10public class LocalVariableRenamer {
11
12 public void rename(CtClass c) {
13 for (CtBehavior behavior : c.getDeclaredBehaviors()) {
14
15 // if there's a local variable table, just rename everything to v1, v2, v3, ... for now
16 LocalVariableAttribute table = (LocalVariableAttribute)behavior.getMethodInfo().getCodeAttribute().getAttribute(LocalVariableAttribute.tag);
17 if (table == null) {
18 continue;
19 }
20
21 ConstPool constants = c.getClassFile().getConstPool();
22 for (int i=0; i<table.tableLength(); i++) {
23 renameVariable(table, i, constants.addUtf8Info("v" + i));
24 }
25 }
26 }
27
28 private void renameVariable(LocalVariableAttribute table, int i, int stringId) {
29 // based off of LocalVariableAttribute.nameIndex()
30 ByteArray.write16bit(stringId, table.get(), i*10 + 6);
31 }
32}