@Test public void testReuseIndex() { ClassGroup group = ClassGroupFactory.generateGroup(); Code code = group.findClass("test").findMethod("func").getCode(); Instructions ins = code.getInstructions(); Instruction body[] = { new AConstNull(ins), new AStore(ins, 0), new LDC(ins, 0), new IStore(ins, 0), new AConstNull(ins), new AStore(ins, 2), new LDC(ins, 0), new IStore(ins, 2), new LDC(ins, 0L), new LStore(ins, 0), new VReturn(ins) }; for (Instruction i : body) { ins.addInstruction(i); } Lvt lvt = new Lvt(); lvt.run(group); AStore astore1 = (AStore) body[1]; IStore istore1 = (IStore) body[3]; AStore astore2 = (AStore) body[5]; IStore istore2 = (IStore) body[7]; LStore lstore1 = (LStore) body[9]; int astore1Idx = astore1.getVariableIndex(); int istore1Idx = istore1.getVariableIndex(); int astore2Idx = astore2.getVariableIndex(); int istore2Idx = istore2.getVariableIndex(); int lstore1Idx = lstore1.getVariableIndex(); logger.debug("{} -> {}", astore1, astore1.getVariableIndex()); logger.debug("{} -> {}", istore1, istore1.getVariableIndex()); logger.debug("{} -> {}", astore2, astore2.getVariableIndex()); logger.debug("{} -> {}", istore2, istore2.getVariableIndex()); logger.debug("{} -> {}", lstore1, lstore1.getVariableIndex()); Assert.assertNotEquals(astore1Idx, istore1Idx); Assert.assertNotEquals(astore2Idx, istore2Idx); Assert.assertNotEquals(lstore1Idx + 1, astore1Idx); Assert.assertNotEquals(lstore1Idx + 1, istore1Idx); Assert.assertNotEquals(lstore1Idx + 1, astore2Idx); Assert.assertNotEquals(lstore1Idx + 1, istore2Idx); }
@Override public void run(ClassGroup group) { for (ClassFile cf : group.getClasses()) { for (Method m : cf.getMethods()) { process(m); } } logger.info("Remapped {} lvt indexes", count); }
Lvt implements Deobfuscator { @Override public void run(ClassGroup group) { for (ClassFile cf : group.getClasses()) { for (Method m : cf.getMethods()) { process(m); } } logger.info("Remapped {} lvt indexes", count); } }
Lvt implements Deobfuscator { @Override public void run(ClassGroup group) { for (ClassFile cf : group.getClasses()) { for (Method m : cf.getMethods()) { process(m); } } logger.info("Remapped {} lvt indexes", count); }  }
Lvt implements Deobfuscator { @Override public void run(ClassGroup group) { for (ClassFile cf : group.getClasses()) { for (Method m : cf.getMethods()) { process(m); } } logger.info("Remapped {} lvt indexes", count); }  @Override void run(ClassGroup group); }
Lvt implements Deobfuscator { @Override public void run(ClassGroup group) { for (ClassFile cf : group.getClasses()) { for (Method m : cf.getMethods()) { process(m); } } logger.info("Remapped {} lvt indexes", count); }  @Override void run(ClassGroup group);  }