Merge remote-tracking branch 'ext_upstream/master' into master3
# Conflicts: # deobfuscator/pom.xml # deobfuscator/src/main/java/net/runelite/asm/attributes/Exceptions.java # deobfuscator/src/main/java/net/runelite/asm/attributes/annotation/Element.java # deobfuscator/src/main/java/net/runelite/asm/attributes/code/InstructionType.java # deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/FieldInstruction.java # deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/LVTInstruction.java # deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/PutField.java # deobfuscator/src/main/java/net/runelite/asm/pool/Class.java # deobfuscator/src/main/java/net/runelite/asm/pool/Field.java # deobfuscator/src/main/java/net/runelite/deob/Deob.java # deobfuscator/src/main/java/net/runelite/deob/DeobProperties.java # deobfuscator/src/main/java/net/runelite/deob/clientver/VersionClassVisitor.java # deobfuscator/src/main/java/net/runelite/deob/deobfuscators/lvt/LVTType.java # deobfuscator/src/main/java/net/runelite/deob/deobfuscators/lvt/MapKey.java # deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/ConstructorMapper.java # deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/ExecutionMapper.java # deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/Mapper.java # deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/ParallelExecutorMapping.java # deobfuscator/src/main/java/net/runelite/deob/updater/ParameterRenamer.java # deobfuscator/src/test/java/net/runelite/asm/annotations/MyAnnotation.java # deobfuscator/src/test/java/net/runelite/asm/execution/mapper/StaticStepTest.java # deobfuscator/src/test/java/net/runelite/asm/execution/tests/TableSwitch.java # deobfuscator/src/test/java/net/runelite/asm/signature/SignatureTest.java # deobfuscator/src/test/java/net/runelite/asm/visitors/ClassFileVisitorTest.java # deobfuscator/src/test/java/net/runelite/deob/TemporyFolderLocation.java # deobfuscator/src/test/java/net/runelite/deob/clientver/ClientVersionTest.java # deobfuscator/src/test/java/net/runelite/deob/deobfuscators/transformers/buffer/RuneliteBufferTest.java # deobfuscator/src/test/java/net/runelite/deob/deobfuscators/unusedclass/ClassA.java # deobfuscator/src/test/java/net/runelite/deob/deobfuscators/unusedclass/EmptyClass.java # deobfuscator/src/test/java/net/runelite/deob/deobfuscators/unusedclass/EmptyInterface.java # deobfuscator/src/test/java/net/runelite/osb/inject/FieldHook.java # injected-client/pom.xml # injector-plugin/pom.xml # injector-plugin/src/main/java/net/runelite/injector/Inject.java # injector-plugin/src/main/java/net/runelite/injector/InjectMojo.java # injector-plugin/src/main/java/net/runelite/injector/InjectionException.java # injector-plugin/src/main/java/net/runelite/injector/MixinInjector.java # injector-plugin/src/main/java/net/runelite/injector/raw/ClearColorBuffer.java # injector-plugin/src/main/java/net/runelite/injector/raw/DrawAfterWidgets.java # injector-plugin/src/main/java/net/runelite/injector/raw/RasterizerHook.java # pom.xml # runelite-api/src/main/java/net/runelite/api/Actor.java # runelite-api/src/main/java/net/runelite/api/Client.java # runelite-api/src/main/java/net/runelite/api/CollisionData.java # runelite-api/src/main/java/net/runelite/api/EquipmentInventorySlot.java # runelite-api/src/main/java/net/runelite/api/NPCDefinition.java # runelite-api/src/main/java/net/runelite/api/Perspective.java # runelite-api/src/main/java/net/runelite/api/coords/WorldArea.java # runelite-api/src/main/java/net/runelite/api/coords/WorldPoint.java # runelite-api/src/main/java/net/runelite/api/events/GraphicChanged.java # runelite-api/src/main/java/net/runelite/api/events/MenuOptionClicked.java # runelite-api/src/main/java/net/runelite/api/events/NpcActionChanged.java # runelite-api/src/main/java/net/runelite/api/events/PostItemDefinition.java # runelite-api/src/main/java/net/runelite/api/events/SpotAnimationChanged.java # runelite-api/src/main/java/net/runelite/api/vars/AccountType.java # runelite-api/src/main/java/net/runelite/mapping/Construct.java # runelite-api/src/main/java/net/runelite/mapping/Hook.java # runelite-api/src/main/java/net/runelite/mapping/Implements.java # runelite-api/src/main/java/net/runelite/mapping/ObfuscatedSignature.java # runelite-client/src/main/java/net/runelite/client/game/ItemManager.java # runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java # runelite-client/src/main/java/net/runelite/client/plugins/barrows/BarrowsOverlay.java # runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollPlugin.java # runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CrypticClue.java # runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/MapClue.java # runelite-client/src/main/java/net/runelite/client/plugins/cooking/CookingPlugin.java # runelite-client/src/main/java/net/runelite/client/plugins/equipmentinspector/EquipmentInspectorPlugin.java # runelite-client/src/main/java/net/runelite/client/plugins/examine/ExaminePlugin.java # runelite-client/src/main/java/net/runelite/client/plugins/highalchemy/HighAlchemyOverlay.java # runelite-client/src/main/java/net/runelite/client/plugins/instancemap/InstanceMapOverlay.java # runelite-client/src/main/java/net/runelite/client/plugins/interfacestyles/InterfaceStylesPlugin.java # runelite-client/src/main/java/net/runelite/client/plugins/inventorysetups/InventorySetupPlugin.java # runelite-client/src/main/java/net/runelite/client/plugins/inventoryviewer/InventoryViewerOverlay.java # runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenPlugin.java # runelite-client/src/main/java/net/runelite/client/plugins/multiindicators/MultiIndicatorsPlugin.java # runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java # runelite-client/src/main/java/net/runelite/client/plugins/pvptools/PvpToolsPlugin.java # runelite-client/src/main/java/net/runelite/client/plugins/pyramidplunder/PyramidPlunderOverlay.java # runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/banked/CriticalItem.java # runelite-client/src/main/java/net/runelite/client/plugins/wiki/WikiPlugin.java # runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java # runelite-client/src/main/java/net/runelite/client/ui/overlay/arrow/ArrowUtil.java # runelite-client/src/main/java/net/runelite/client/util/PvPUtil.java # runelite-client/src/test/java/net/runelite/client/plugins/cooking/CookingPluginTest.java # runelite-mixins/src/main/java/net/runelite/mixins/RSAbstractIndexCacheMixin.java # runelite-mixins/src/main/java/net/runelite/mixins/RSActorMixin.java # runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java # runelite-mixins/src/main/java/net/runelite/mixins/RSMessageMixin.java # runelite-mixins/src/main/java/net/runelite/mixins/RSPlayerCompositionMixin.java # runelite-mixins/src/main/java/net/runelite/mixins/RSTileMixin.java # runescape-api/src/main/java/net/runelite/mapping/Implements.java # runescape-api/src/main/java/net/runelite/mapping/ObfuscatedSignature.java # runescape-api/src/main/java/net/runelite/rs/api/RSBufferProvider.java # runescape-api/src/main/java/net/runelite/rs/api/RSClient.java # runescape-api/src/main/java/net/runelite/rs/api/RSCollisionData.java # runescape-api/src/main/java/net/runelite/rs/api/RSCombatInfo1.java # runescape-api/src/main/java/net/runelite/rs/api/RSCombatInfoListHolder.java # runescape-api/src/main/java/net/runelite/rs/api/RSDecorativeObject.java # runescape-api/src/main/java/net/runelite/rs/api/RSFriendContainer.java # runescape-api/src/main/java/net/runelite/rs/api/RSGameShell.java # runescape-api/src/main/java/net/runelite/rs/api/RSGroundObject.java # runescape-api/src/main/java/net/runelite/rs/api/RSItem.java # runescape-api/src/main/java/net/runelite/rs/api/RSItemLayer.java # runescape-api/src/main/java/net/runelite/rs/api/RSIterableNodeDeque.java # runescape-api/src/main/java/net/runelite/rs/api/RSJagexLoginType.java # runescape-api/src/main/java/net/runelite/rs/api/RSKeyHandler.java # runescape-api/src/main/java/net/runelite/rs/api/RSMainBufferProvider.java # runescape-api/src/main/java/net/runelite/rs/api/RSMapElementConfig.java # runescape-api/src/main/java/net/runelite/rs/api/RSMessage.java # runescape-api/src/main/java/net/runelite/rs/api/RSMessageNode.java # runescape-api/src/main/java/net/runelite/rs/api/RSModel.java # runescape-api/src/main/java/net/runelite/rs/api/RSPlayerComposition.java # runescape-api/src/main/java/net/runelite/rs/api/RSRasterProvider.java # runescape-api/src/main/java/net/runelite/rs/api/RSSequenceDefinition.java # runescape-api/src/main/java/net/runelite/rs/api/RSSpritePixels.java # runescape-api/src/main/java/net/runelite/rs/api/RSWallObject.java # runescape-api/src/main/java/net/runelite/rs/api/RSWorldMap.java
This commit is contained in:
@@ -31,5 +31,7 @@ public class TestClass
|
||||
public int field1;
|
||||
|
||||
@MyAnnotation("method1")
|
||||
public void method1() { }
|
||||
public void method1()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,11 +67,12 @@ public class MultiplyOneDeobfuscatorTest
|
||||
ins.addInstruction(i);
|
||||
|
||||
Label label = new Label(ins),
|
||||
label2 = new Label(ins);
|
||||
label2 = new Label(ins);
|
||||
|
||||
LDC one = new LDC(ins, 1);
|
||||
|
||||
Instruction body[] = {
|
||||
Instruction body[] =
|
||||
{
|
||||
new SiPush(ins, (short) 256),
|
||||
|
||||
new ILoad(ins, 0),
|
||||
@@ -122,7 +123,7 @@ public class MultiplyOneDeobfuscatorTest
|
||||
ins.addInstruction(i);
|
||||
|
||||
Label label = new Label(ins),
|
||||
label2 = new Label(ins);
|
||||
label2 = new Label(ins);
|
||||
|
||||
LDC one = new LDC(ins, 1);
|
||||
IMul mul = new IMul(ins);
|
||||
@@ -204,8 +205,8 @@ public class MultiplyOneDeobfuscatorTest
|
||||
ins.addInstruction(i);
|
||||
|
||||
Label label = new Label(ins),
|
||||
label2 = new Label(ins),
|
||||
label3 = new Label(ins);
|
||||
label2 = new Label(ins),
|
||||
label3 = new Label(ins);
|
||||
|
||||
LDC one = new LDC(ins, 1);
|
||||
IMul mul = new IMul(ins);
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
*/
|
||||
package net.runelite.deob.deobfuscators.exprargorder;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import net.runelite.asm.ClassGroup;
|
||||
import net.runelite.asm.attributes.Code;
|
||||
@@ -48,7 +47,6 @@ import net.runelite.asm.attributes.code.instructions.Pop;
|
||||
import net.runelite.asm.attributes.code.instructions.SiPush;
|
||||
import net.runelite.asm.attributes.code.instructions.VReturn;
|
||||
import net.runelite.deob.ClassGroupFactory;
|
||||
import net.runelite.deob.util.JarUtil;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import org.junit.Test;
|
||||
|
||||
|
||||
@@ -31,7 +31,6 @@ import net.runelite.asm.ClassGroup;
|
||||
import net.runelite.deob.TemporyFolderLocation;
|
||||
import net.runelite.deob.util.JarUtil;
|
||||
import org.junit.After;
|
||||
import org.junit.Test;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.rules.TemporaryFolder;
|
||||
|
||||
@@ -31,7 +31,6 @@ import net.runelite.asm.ClassGroup;
|
||||
import net.runelite.deob.util.JarUtil;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
public class AnnotationRenamerTest
|
||||
{
|
||||
|
||||
@@ -33,11 +33,11 @@ import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import net.runelite.runeloader.inject.GetterInjectInstruction;
|
||||
import net.runelite.runeloader.inject.InjectionModscript;
|
||||
import net.runelite.mapping.Export;
|
||||
import net.runelite.mapping.ObfuscatedName;
|
||||
import net.runelite.runeloader.inject.GetterInjectInstruction;
|
||||
import net.runelite.runeloader.inject.Injection;
|
||||
import net.runelite.runeloader.inject.InjectionModscript;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
@@ -46,17 +46,17 @@ import org.junit.Test;
|
||||
public class CheckExports
|
||||
{
|
||||
private static final File CLIENT = new File("/Users/adam/w/rs/07/rs-client-1.0-SNAPSHOT.jar");
|
||||
|
||||
|
||||
private final List<Class> classes = new ArrayList<>();
|
||||
|
||||
|
||||
@Before
|
||||
public void before() throws MalformedURLException, ClassNotFoundException
|
||||
{
|
||||
ClassLoader loader = new URLClassLoader(new URL[] { CLIENT.toURL() });
|
||||
|
||||
ClassLoader loader = new URLClassLoader(new URL[]{CLIENT.toURL()});
|
||||
|
||||
Class c = loader.loadClass("net.runelite.rs.client.client");
|
||||
classes.add(c);
|
||||
|
||||
|
||||
for (int i = 0; i < 230; ++i)
|
||||
{
|
||||
try
|
||||
@@ -69,41 +69,51 @@ public class CheckExports
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private Class<?> findClassWithObfuscatedName(String name)
|
||||
{
|
||||
for (Class c : classes)
|
||||
{
|
||||
if (c.getName().equals("net.runelite.rs.client.client") && name.equals("client"))
|
||||
{
|
||||
return c;
|
||||
|
||||
}
|
||||
|
||||
ObfuscatedName oc = (ObfuscatedName) c.getDeclaredAnnotation(ObfuscatedName.class);
|
||||
if (oc == null)
|
||||
{
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
if (oc.value().equals(name))
|
||||
{
|
||||
return c;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
private Field findFieldWithObfuscatedName(Class c, String name)
|
||||
{
|
||||
for (Field f : c.getDeclaredFields())
|
||||
{
|
||||
ObfuscatedName oc = (ObfuscatedName) f.getDeclaredAnnotation(ObfuscatedName.class);
|
||||
ObfuscatedName oc = f.getDeclaredAnnotation(ObfuscatedName.class);
|
||||
if (oc == null)
|
||||
{
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
if (oc.value().equals(name))
|
||||
{
|
||||
return f;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
private boolean isExported(Field f)
|
||||
{
|
||||
Export export = (Export) f.getDeclaredAnnotation(Export.class);
|
||||
Export export = f.getDeclaredAnnotation(Export.class);
|
||||
return export != null;
|
||||
}
|
||||
|
||||
@@ -112,17 +122,17 @@ public class CheckExports
|
||||
public void checkMappings() throws IOException
|
||||
{
|
||||
InjectionModscript mod = Injection.load(MappingImporter.class.getResourceAsStream(MappingImporter.RL_INJECTION));
|
||||
|
||||
|
||||
for (int i = 0; i < mod.getGetterInjects().size(); ++i)
|
||||
{
|
||||
GetterInjectInstruction gii = (GetterInjectInstruction) mod.getGetterInjects().get(i);
|
||||
|
||||
GetterInjectInstruction gii = mod.getGetterInjects().get(i);
|
||||
|
||||
Class c = this.findClassWithObfuscatedName(gii.getGetterClassName());
|
||||
Assert.assertNotNull(c);
|
||||
|
||||
|
||||
Field f = this.findFieldWithObfuscatedName(c, gii.getGetterFieldName());
|
||||
Assert.assertNotNull(f);
|
||||
|
||||
|
||||
Assert.assertTrue(this.isExported(f));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,12 +33,12 @@ import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import net.runelite.runeloader.inject.GetterInjectInstruction;
|
||||
import net.runelite.runeloader.inject.InjectionModscript;
|
||||
import net.runelite.mapping.Export;
|
||||
import net.runelite.mapping.ObfuscatedGetter;
|
||||
import net.runelite.mapping.ObfuscatedName;
|
||||
import net.runelite.runeloader.inject.GetterInjectInstruction;
|
||||
import net.runelite.runeloader.inject.Injection;
|
||||
import net.runelite.runeloader.inject.InjectionModscript;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
@@ -47,17 +47,17 @@ import org.junit.Test;
|
||||
public class CheckMappings
|
||||
{
|
||||
private static final File CLIENT = new File("d:/rs/07/adamout.jar");
|
||||
|
||||
|
||||
private final List<Class> classes = new ArrayList<>();
|
||||
|
||||
|
||||
@Before
|
||||
public void before() throws MalformedURLException, ClassNotFoundException
|
||||
{
|
||||
ClassLoader loader = new URLClassLoader(new URL[] { CLIENT.toURL() });
|
||||
|
||||
ClassLoader loader = new URLClassLoader(new URL[]{CLIENT.toURL()});
|
||||
|
||||
Class c = loader.loadClass("client");
|
||||
classes.add(c);
|
||||
|
||||
|
||||
for (int i = 0; i < 230; ++i)
|
||||
{
|
||||
try
|
||||
@@ -70,51 +70,65 @@ public class CheckMappings
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private Class<?> findClassWithObfuscatedName(String name)
|
||||
{
|
||||
for (Class c : classes)
|
||||
{
|
||||
if (c.getName().equals("net.runelite.rs.client.client") && name.equals("client"))
|
||||
{
|
||||
return c;
|
||||
|
||||
}
|
||||
|
||||
ObfuscatedName oc = (ObfuscatedName) c.getDeclaredAnnotation(ObfuscatedName.class);
|
||||
if (oc == null)
|
||||
{
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
if (oc.value().equals(name))
|
||||
{
|
||||
return c;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
private Field findFieldWithObfuscatedName(Class c, String name)
|
||||
{
|
||||
for (Field f : c.getDeclaredFields())
|
||||
{
|
||||
ObfuscatedName oc = (ObfuscatedName) f.getDeclaredAnnotation(ObfuscatedName.class);
|
||||
ObfuscatedName oc = f.getDeclaredAnnotation(ObfuscatedName.class);
|
||||
if (oc == null)
|
||||
{
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
if (oc.value().equals(name))
|
||||
{
|
||||
return f;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
private Integer getIntegerMultiplier(Field f)
|
||||
{
|
||||
ObfuscatedGetter getter = (ObfuscatedGetter) f.getDeclaredAnnotation(ObfuscatedGetter.class);
|
||||
ObfuscatedGetter getter = f.getDeclaredAnnotation(ObfuscatedGetter.class);
|
||||
if (getter == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return getter.intValue() == 0 ? null : getter.intValue();
|
||||
}
|
||||
|
||||
private String getExportedName(Field f)
|
||||
{
|
||||
Export e = (Export) f.getDeclaredAnnotation(Export.class);
|
||||
Export e = f.getDeclaredAnnotation(Export.class);
|
||||
if (e == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return e.value();
|
||||
}
|
||||
|
||||
@@ -123,21 +137,21 @@ public class CheckMappings
|
||||
public void checkMappings() throws IOException
|
||||
{
|
||||
InjectionModscript mod = Injection.load(MappingImporter.class.getResourceAsStream(MappingImporter.RL_INJECTION));
|
||||
|
||||
|
||||
for (int i = 0; i < mod.getGetterInjects().size(); ++i)
|
||||
{
|
||||
GetterInjectInstruction gii = (GetterInjectInstruction) mod.getGetterInjects().get(i);
|
||||
|
||||
GetterInjectInstruction gii = mod.getGetterInjects().get(i);
|
||||
|
||||
Class c = this.findClassWithObfuscatedName(gii.getGetterClassName());
|
||||
Assert.assertNotNull(c);
|
||||
|
||||
|
||||
Field f = this.findFieldWithObfuscatedName(c, gii.getGetterFieldName());
|
||||
Assert.assertNotNull(f);
|
||||
|
||||
String exportedName = this.getExportedName(f);
|
||||
String attrName = gii.getGetterName();
|
||||
attrName = Utils.toExportedName(attrName);
|
||||
|
||||
|
||||
Integer mul = gii.getMultiplier(),
|
||||
myMul = this.getIntegerMultiplier(f);
|
||||
|
||||
|
||||
@@ -33,11 +33,11 @@ import net.runelite.asm.Type;
|
||||
import net.runelite.asm.attributes.Annotations;
|
||||
import net.runelite.asm.attributes.annotation.Annotation;
|
||||
import net.runelite.asm.attributes.annotation.Element;
|
||||
import net.runelite.deob.util.JarUtil;
|
||||
import net.runelite.runeloader.inject.AddInterfaceInstruction;
|
||||
import net.runelite.runeloader.inject.GetterInjectInstruction;
|
||||
import net.runelite.runeloader.inject.InjectionModscript;
|
||||
import net.runelite.deob.util.JarUtil;
|
||||
import net.runelite.runeloader.inject.Injection;
|
||||
import net.runelite.runeloader.inject.InjectionModscript;
|
||||
import org.junit.After;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
@@ -138,7 +138,7 @@ public class MappingImporter
|
||||
|
||||
for (int i = 0; i < mod.getGetterInjects().size(); ++i)
|
||||
{
|
||||
GetterInjectInstruction gii = (GetterInjectInstruction) mod.getGetterInjects().get(i);
|
||||
GetterInjectInstruction gii = mod.getGetterInjects().get(i);
|
||||
|
||||
ClassFile cf = this.findClassWithObfuscatedName(gii.getGetterClassName());
|
||||
Assert.assertNotNull(cf);
|
||||
|
||||
@@ -36,7 +36,9 @@ public class Utils
|
||||
}
|
||||
|
||||
if (attrName.equalsIgnoreCase("fps"))
|
||||
{
|
||||
attrName = "FPS";
|
||||
}
|
||||
|
||||
return attrName;
|
||||
}
|
||||
|
||||
@@ -6,59 +6,74 @@ import org.objectweb.asm.tree.ClassNode;
|
||||
import org.objectweb.asm.tree.InsnList;
|
||||
import org.objectweb.asm.tree.MethodNode;
|
||||
|
||||
public class MethodModInstruction {
|
||||
private final int startIndex;
|
||||
private final AbstractInsnNode[] nodes;
|
||||
public final String owner;
|
||||
public final String method;
|
||||
public final String desc;
|
||||
public class MethodModInstruction
|
||||
{
|
||||
private final int startIndex;
|
||||
private final AbstractInsnNode[] nodes;
|
||||
public final String owner;
|
||||
public final String method;
|
||||
public final String desc;
|
||||
|
||||
public MethodModInstruction(int var1, AbstractInsnNode[] var2, String var3, String var4, String var5) {
|
||||
this.startIndex = var1;
|
||||
this.nodes = var2;
|
||||
this.owner = var3;
|
||||
this.method = var4;
|
||||
this.desc = var5;
|
||||
}
|
||||
public MethodModInstruction(int var1, AbstractInsnNode[] var2, String var3, String var4, String var5)
|
||||
{
|
||||
this.startIndex = var1;
|
||||
this.nodes = var2;
|
||||
this.owner = var3;
|
||||
this.method = var4;
|
||||
this.desc = var5;
|
||||
}
|
||||
|
||||
public boolean valid(ClassNode var1) {
|
||||
return var1.name.equalsIgnoreCase(this.owner);
|
||||
}
|
||||
public boolean valid(ClassNode var1)
|
||||
{
|
||||
return var1.name.equalsIgnoreCase(this.owner);
|
||||
}
|
||||
|
||||
public void inject(ClassNode var1) {
|
||||
Iterator var3 = var1.methods.iterator();
|
||||
public void inject(ClassNode var1)
|
||||
{
|
||||
Iterator var3 = var1.methods.iterator();
|
||||
|
||||
while(true) {
|
||||
MethodNode var2;
|
||||
do {
|
||||
do {
|
||||
if(!var3.hasNext()) {
|
||||
return;
|
||||
}
|
||||
while (true)
|
||||
{
|
||||
MethodNode var2;
|
||||
do
|
||||
{
|
||||
do
|
||||
{
|
||||
if (!var3.hasNext())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var2 = (MethodNode)var3.next();
|
||||
} while(!var2.name.equalsIgnoreCase(this.method));
|
||||
} while(!var2.desc.equalsIgnoreCase(this.desc));
|
||||
var2 = (MethodNode) var3.next();
|
||||
} while (!var2.name.equalsIgnoreCase(this.method));
|
||||
} while (!var2.desc.equalsIgnoreCase(this.desc));
|
||||
|
||||
InsnList var4 = var2.instructions;
|
||||
InsnList var4 = var2.instructions;
|
||||
|
||||
try {
|
||||
AbstractInsnNode var5 = var4.get(this.startIndex);
|
||||
AbstractInsnNode var6 = null;
|
||||
try
|
||||
{
|
||||
AbstractInsnNode var5 = var4.get(this.startIndex);
|
||||
AbstractInsnNode var6 = null;
|
||||
|
||||
for(int var7 = 0; var7 < this.nodes.length; ++var7) {
|
||||
if(var6 == null) {
|
||||
var4.insertBefore(var5, this.nodes[var7]);
|
||||
} else {
|
||||
var4.insert(var6, this.nodes[var7]);
|
||||
}
|
||||
for (int var7 = 0; var7 < this.nodes.length; ++var7)
|
||||
{
|
||||
if (var6 == null)
|
||||
{
|
||||
var4.insertBefore(var5, this.nodes[var7]);
|
||||
}
|
||||
else
|
||||
{
|
||||
var4.insert(var6, this.nodes[var7]);
|
||||
}
|
||||
|
||||
var6 = this.nodes[var7];
|
||||
}
|
||||
} catch (Exception var8) {
|
||||
System.err.println("Failed on " + this.startIndex + " @ " + this.owner + "." + this.method + " " + this.desc);
|
||||
var8.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
var6 = this.nodes[var7];
|
||||
}
|
||||
}
|
||||
catch (Exception var8)
|
||||
{
|
||||
System.err.println("Failed on " + this.startIndex + " @ " + this.owner + "." + this.method + " " + this.desc);
|
||||
var8.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,18 +2,20 @@ package net.runelite.runeloader.inject;
|
||||
|
||||
import org.objectweb.asm.tree.AbstractInsnNode;
|
||||
|
||||
public class ReplaceNodeInstruction {
|
||||
public final String owner;
|
||||
public final String method;
|
||||
public final String desc;
|
||||
public final int index;
|
||||
public final AbstractInsnNode replaceWith;
|
||||
public class ReplaceNodeInstruction
|
||||
{
|
||||
public final String owner;
|
||||
public final String method;
|
||||
public final String desc;
|
||||
public final int index;
|
||||
public final AbstractInsnNode replaceWith;
|
||||
|
||||
public ReplaceNodeInstruction(String var1, String var2, String var3, int var4, AbstractInsnNode var5) {
|
||||
this.owner = var1;
|
||||
this.method = var2;
|
||||
this.desc = var3;
|
||||
this.index = var4;
|
||||
this.replaceWith = var5;
|
||||
}
|
||||
public ReplaceNodeInstruction(String var1, String var2, String var3, int var4, AbstractInsnNode var5)
|
||||
{
|
||||
this.owner = var1;
|
||||
this.method = var2;
|
||||
this.desc = var3;
|
||||
this.index = var4;
|
||||
this.replaceWith = var5;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,6 @@
|
||||
package net.runelite.runeloader.inject;
|
||||
|
||||
import java.util.Iterator;
|
||||
import org.objectweb.asm.Label;
|
||||
import org.objectweb.asm.tree.AbstractInsnNode;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
import org.objectweb.asm.tree.InsnList;
|
||||
import org.objectweb.asm.tree.JumpInsnNode;
|
||||
import org.objectweb.asm.tree.LabelNode;
|
||||
import org.objectweb.asm.tree.MethodNode;
|
||||
|
||||
public class TableJumpInstruction
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user