deobber: fixes

This commit is contained in:
ThatGamerBlue
2020-08-26 20:53:29 +01:00
parent ffce418ee2
commit 106de31a9d
5 changed files with 25 additions and 10 deletions

View File

@@ -28,6 +28,7 @@ import org.ajoberstar.grgit.Grgit
buildscript { buildscript {
repositories { repositories {
mavenLocal()
gradlePluginPortal() gradlePluginPortal()
maven(url = "https://repo.openosrs.com/repository/maven/") maven(url = "https://repo.openosrs.com/repository/maven/")
maven(url = "https://raw.githubusercontent.com/open-osrs/hosting/master") maven(url = "https://raw.githubusercontent.com/open-osrs/hosting/master")

View File

@@ -29,6 +29,6 @@ object ProjectVersions {
const val openosrsVersion = "3.4.2" const val openosrsVersion = "3.4.2"
const val rsversion = 190 const val rsversion = 191
const val cacheversion = 165 const val cacheversion = 165
} }

View File

@@ -93,14 +93,14 @@ tasks {
filteringCharset = "UTF-8" filteringCharset = "UTF-8"
} }
// TODO: Enable assertions on all 3 // TODO: Enable assertions on all 3
register<JavaExec>("Downloader.main()") { register<JavaExec>("Downloader\$main()") {
group = "gamepack" group = "gamepack"
classpath = project.sourceSets.main.get().runtimeClasspath classpath = project.sourceSets.main.get().runtimeClasspath
main = "net.runelite.gamepack.Downloader" main = "net.runelite.gamepack.Downloader"
} }
register<JavaExec>("Deob.main()") { register<JavaExec>("Deob\$main()") {
group = "gamepack" group = "gamepack"
classpath = project.sourceSets.main.get().runtimeClasspath classpath = project.sourceSets.main.get().runtimeClasspath
@@ -108,7 +108,7 @@ tasks {
args = listOf(tokens["vanilla.jar"], "$buildDir/libs/deobfuscated-$version.jar") args = listOf(tokens["vanilla.jar"], "$buildDir/libs/deobfuscated-$version.jar")
} }
register<JavaExec>("UpdateMappings.main()") { register<JavaExec>("UpdateMappings\$main()") {
group = "gamepack" group = "gamepack"
classpath = project.sourceSets.main.get().runtimeClasspath classpath = project.sourceSets.main.get().runtimeClasspath

View File

@@ -42,12 +42,11 @@ import net.runelite.asm.attributes.code.Parameter;
import net.runelite.asm.signature.Signature; import net.runelite.asm.signature.Signature;
import net.runelite.asm.signature.util.VirtualMethods; import net.runelite.asm.signature.util.VirtualMethods;
import net.runelite.deob.DeobAnnotations; import net.runelite.deob.DeobAnnotations;
import static net.runelite.deob.DeobAnnotations.*;
import net.runelite.deob.Deobfuscator; import net.runelite.deob.Deobfuscator;
import net.runelite.deob.util.NameMappings; import net.runelite.deob.util.NameMappings;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import static net.runelite.deob.DeobAnnotations.OBFUSCATED_NAME;
import static net.runelite.deob.DeobAnnotations.OBFUSCATED_SIGNATURE;
public class Renamer implements Deobfuscator public class Renamer implements Deobfuscator
{ {
@@ -137,7 +136,10 @@ public class Renamer implements Deobfuscator
if (!method.getDescriptor().equals(newSignature)) if (!method.getDescriptor().equals(newSignature))
{ {
method.findAnnotation(OBFUSCATED_SIGNATURE, true).setElement( "descriptor", method.getDescriptor().toString()); if (method.findAnnotation(OBFUSCATED_SIGNATURE) == null)
{
method.findAnnotation(OBFUSCATED_SIGNATURE, true).setElement("descriptor", method.getDescriptor().toString());
}
} }
method.setDescriptor(newSignature); method.setDescriptor(newSignature);
@@ -154,7 +156,10 @@ public class Renamer implements Deobfuscator
{ {
if (field.getType().getInternalName().equals(cf.getName())) if (field.getType().getInternalName().equals(cf.getName()))
{ {
field.findAnnotation(OBFUSCATED_SIGNATURE, true).setElement("descriptor", field.getType().toString()); if (field.findAnnotation(OBFUSCATED_SIGNATURE) == null)
{
field.findAnnotation(OBFUSCATED_SIGNATURE, true).setElement("descriptor", field.getType().toString());
}
field.setType(Type.getType("L" + name + ";", field.getType().getDimensions())); field.setType(Type.getType("L" + name + ";", field.getType().getDimensions()));
} }
} }
@@ -168,10 +173,16 @@ public class Renamer implements Deobfuscator
private void regeneratePool(ClassGroup group) private void regeneratePool(ClassGroup group)
{ {
for (ClassFile cf : group.getClasses()) for (ClassFile cf : group.getClasses())
{
for (Method m : cf.getMethods()) for (Method m : cf.getMethods())
{
if (m.getCode() != null) if (m.getCode() != null)
{
m.getCode().getInstructions() m.getCode().getInstructions()
.regeneratePool(); .regeneratePool();
}
}
}
} }
@Override @Override
@@ -276,6 +287,9 @@ public class Renamer implements Deobfuscator
private static <T extends Annotated & Named> void addObfuscatedName(T object) private static <T extends Annotated & Named> void addObfuscatedName(T object)
{ {
object.findAnnotation(OBFUSCATED_NAME, true).setElement(object.getName()); if (object.findAnnotation(OBFUSCATED_NAME) == null)
{
object.findAnnotation(OBFUSCATED_NAME, true).setElement(object.getName());
}
} }
} }

View File

@@ -123,7 +123,7 @@ public class AnnotationMapper
{ {
if (isCopyable(a)) if (isCopyable(a))
{ {
to.addAnnotation(a.getType(), a); to.addAnnotation(a);
++count; ++count;
} }
} }