GithubHelp home page GithubHelp logo

bearded-octo-nemesis's Introduction

Repository is locked due to Github 2FA policy

bearded-octo-nemesis's People

Contributors

immibis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bearded-octo-nemesis's Issues

Some things are ignored when using reob

I'm having issues in specific situations when trying to use reob to reobfuscate a mod. Specifically here's some examples I've pulled out with JD-GUI from the reob'ed jar. These two examples are from two different classes.

public <T extends Item> T getItem(String name)
{
  return (up)this.registeredMinecraftObjects.get(name);
}

// FloodFillState is a mod class
private List<FloodFillState> getBlocksToBreak(World world, int x, int y, int z, Block wood, int woodMeta, Block leaves, int leavesMeta) {
  // ... <snip>
}

These seem to be representative of all the issues we've run into.

Crash on startup

Happens every time. On a macbook pro:
Exception in thread "main" java.lang.UnsupportedClassVersionError: immibis/bon/gui/GuiMain : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
szaki-C02G80WTDRJK:~ localmacaccount$ java -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06-451-10M4406)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01-451, mixed mode)
szaki-C02G80WTDRJK:~ localmacaccount$

deobfuscation of overridden fields.

I tried to deobfuscate computercraft 1.42pr1 with the latest version (joined mode) and found a strange error:

It seems that the class GuiTerminal, which inherits from GuiButton, has two public int fields width and height. These fields are hiding the protected fields width and height of the GuiButton class. The obfuscator renamed the fields in GuiButton to a and b, and the fields in GuiTermial were renamed to. The deobfuscator changed all references to these fields back to the real names, but the fields themselves hadn't been renamed, so every instruction trying to access GuiTermial.width now actually accesses GuiButton.width. As that field is not public, it produces a runtime "Field not visible" error.

Error when using Forge auto-download option

I have tried to decompile a mod file to test that I can use your program to get back into my mod, and the mod was on my desktop. When I used your auto-download Forge option, Forge version being 1.7.10 10.13.4.1614, and it would not download. Could you please help, I am very confused, and lost all of my source code for the mod.

Exception when output file is blank

Using the GUI, when "Output file" is blank, I get this:

An error has occurred - give immibis this stack trace (which has been copied to the clipboard)

java.io.FileNotFoundException:  (No such file or directory)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:212)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:165)
    at immibis.bon.io.JarWriter.write(JarWriter.java:23)
    at immibis.bon.gui.GuiMain$1.run(GuiMain.java:191)

Perhaps it should validate the output file path before deobfuscating, and display a helpful error message if the path is missing or invalid?

Reobfuscation option?

I'm not going to pretend to know how easy or hard it may be, but it would be really cool if deobfuscated jars/zips could be reobfuscated using a different MCP folder. Would make updates for small mods really easy assuming the mappings haven't changed names.

Incomplete Deobfuscation Issue

I just keep bothering you!

I noticed a method not get deobfuscated from a 1.2.5 mod a few days ago, but I just created a temporary workaround in my code to call the right one. But now it's happened with another mod, and the problem is more pronounced. A wild guess is an inheritance issue based on my own experience with remapping, but who knows.

If you want examples, get buildcraft-client-B-transport-2.2.14.zip, look in BuildCraftTransport.initialize(), for:

pipeWaterproof = new ItemBuildCraftTexture(DefaultProps.PIPE_WATERPROOF_ID).e(33);

e is supposed to be setIconIndex.

The more pronounced one was RedPowerLogic-2.0pr5b2.zip, in eloraam.logic.BlockLogic. The constructor has three unmapped methods, and then down in the class itself is an actual method without a deobfuscated name.

I pulled these from Tekkit Classic, btw.

GUI

Was wondering if I could take a crack at fixing up the GUI and making it prettier?

Any way to handle signed jars?

First: BON is great for finding/fixing compatibility bugs and testing API interactions, thank you fro creating it.

Using the newest BON (as of April ‎22, ‎2013, ‏‎8:04:25 PM)
Now that SRG names are supported I'm only having issues with signed jars.

After running forestry-A-2.1.2.28.jar through BON I'm still left with a signing issue.

With MetaINF in the jar, the game crashes

[ForgeModLoader] Problem loading class java.lang.SecurityException: SHA1 digest error for forestry/Forestry.class
[ForgeModLoader] Caught exception from Forestry java.lang.ClassNotFoundException: forestry.Forestry

Without MetaINF in the jar, the game closes
[INFO] [Forestry] Fingerprint of the mod jar is invalid. The jar file was tampered with.
[SEVERE] [Forestry] forestry.Forestry failed validation. Halting runtime for security reasons. Please replace your mods with untampered versions from the official download sites.

[Feature Request] Stop chunkloaders after some days

That is:

I'd like to have the 'loaders stop working after the player owning them has remained logged off for, say, a week. This is to simplify garbage-collection of chunkloaders owned by players who are no longer playing.

Cannot Decompile

Upon an attempt to decompile a mod with Minecraft 1.6.2 and MCP 8.04, along with Minecraft Forge 9.10.0.789, I get this stack trace from Bearded Octo Nemesis:
An error has occurred - give immibis this stack trace (which has been copied to the clipboard)

java.io.FileNotFoundException: F:\development\forge\mcp\conf\client.exc (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.(Unknown Source)
at java.io.FileReader.(Unknown Source)
at immibis.bon.mcp.ExcFile.(ExcFile.java:24)
at immibis.bon.mcp.MappingLoader_MCP.loadEXCFile(MappingLoader_MCP.java:101)
at immibis.bon.mcp.MappingLoader_MCP.(MappingLoader_MCP.java:93)
at immibis.bon.io.MappingFactory.registerMCPInstance(MappingFactory.java:32)
at immibis.bon.gui.GuiMain$1.run(GuiMain.java:157)

Error after pressing "go"

An error has occurred - give immibis this stack trace (which has been copied to the clipboard)

java.lang.NullPointerException
at immibis.bon.mcp.MappingLoader_MCP.loadCSVMapping(MappingLoader_MCP.java:182)
at immibis.bon.mcp.MappingLoader_MCP.(MappingLoader_MCP.java:97)
at immibis.bon.io.MappingFactory.registerMCPInstance(MappingFactory.java:32)
at immibis.bon.gui.GuiMain$1.run(GuiMain.java:157)

I'm on Mac OS X 10.8.3, java 1.7.0_06

Handle static methods/fields

Check if static fields and methods are handled properly.

In particular it should NOT check for mappings in superclasses.

Also check private fields and methods.

Can't DeObfuscate using cmd.

The command I try to use and the error I get.
C:\Users\XXXX\Minecraft 1.4.6 DeObfuscate Folder> java -cp BON.jar -mcp . -from OBF -to M
CP -side UNIVERSAL -in Defence-Non.zip -out Defence-DeOb.zip -ref fallencore.zip -refn MCP
:bin/minecraft
Unrecognized option: -mcp
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

BON failed to deobsfusgate 1.6.4 mod

Hi immibis, could you help me ?I wan't to decompile an 1.6.4 forge mod (with forge-1.6.4-9.11.1.964) but it's doesn't work
An error has occurred - give immibis this stack trace (which has been copied to the clipboard)

java.lang.Exception: conf/packaged.srg not found in Forge jar file
at immibis.bon.gui.NewGUI$11.run(NewGUI.java:676)

Thanks

"Joined" Side unavailable in GUI

Compiled the latest source and found that "Joined" is unavailable from the dropdown box (only Client and Server, as before), making deobfuscation of 1.3.x mods impossible from the GUI.

Default package affects mod classes

I've been working with loading Minecraft 1.2.5 mods after deobfuscating them with BON, and after having some class loading issues due to the package of some of the mod's classes, I eventually realized that it was the JARs themselves at fault. BON had placed the unpackaged classes in the JARs into "net.minecraft.src".

This isn't a problem for newer mods, where everyone defaults to using a package, and Forge scans the JAR for them. But for these old ones that use the ModLoader technique it's obviously an issue. I realize that it's adding a default package for handling Minecraft's obfuscated base classes, and I also realize that BON can probably be used to remap the Minecraft JAR itself, so not repackaging classes in the input JAR by default isn't necessary the answer.

So unless there's something I'm overlooking, I guess a viable solution would just be to add a config option on whether or not to repackage classes found in the input JAR, and have it still do so by default to retain compatibility.

Doesn't support generics

As the title states, Bearded Octo Nemesis doesn't support deobfuscating generics.

EDIT: Whoops, didn't see the TODO you made in the Remapper class.

Could not deobfuscate using auto-downloaded Forge

After specifying a valid source and destination for the target JAR, it is impossible to use auto-download to deobfuscate the JAR.

I selected Forge 11.15.1.1722. Once that version of Forge was done downloading, a dialog popped up saying "Not a directory: "
I had filled up all required textboxes, yet got this bug.

BON failed to deobfuscate old mods (1.7.3 beta)

I trying deobfuscate OptiFine for mc 1.7.3 beta, but get an error.

An error has occurred - give immibis this stack trace (which has been copied to the clipboard)

immibis.bon.ClassFormatException: Unable to load class
at immibis.bon.io.IOUtils.readClass(IOUtils.java:30)
at immibis.bon.io.DirLoader.loadFromDir(DirLoader.java:43)
at immibis.bon.io.DirLoader.loadFromDir(DirLoader.java:38)
at immibis.bon.io.DirLoader.loadClassesFromDirectory(DirLoader.java:25)
at immibis.bon.io.ClassCollectionFactory.loadClassCollection(ClassCollectionFactory.java:15)
at immibis.bon.gui.NewGUI$13.run(NewGUI.java:962)

Screenshot: https://www.dropbox.com/s/sz5o38mpfk4ovgd/17_06_2015-1434476793.png?dl=0

Must not delete Meta-inf

Meta-inf might contain Manifest with "coremod" info. When nemesis deletes it, coremod won't be activated and one has to re-add Meta-inf from obfuscated mod. So it mustn't.

FG Cache folger

File "forgeSrc-1.7.10-10.13.2.1307-1.7.10.jar" is not in ".gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.2.1307-1.7.10" after simply installing and building forge 1.7.0-10.13.2.1307

and the File is originally named forge-1.7.10-10.13.2.1307-1.7.10-src.zip and I had to download it manually, rename it and place it in the folder above

Check if duplicate fields map correctly

According to @skyboy, if a class has a field with the same name (and maybe descriptor?) as a superclass, it will be remapped incorrectly. EG:

class A {int a;}
class B extends A {int a;}

where A/a:I has a mapping and B/a:I doesn't, it shouldn't use the A/a mapping for B/a, but does it?

can not deobf minecraft 1.4.5 with the last version of mcp

.An error has occurred - give immibis this stack trace (which has been copied to the clipboard) java.io.FileNotFoundException: E:\minemod\conf\client.srg (═х єфрхЄё эрщЄш єърч рээ√щ Їрщы) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.(Unknown Source) at java.util.Scanner.(Unknown Source) at immibis.beardedoctonemesis.mcp.SrgFile.(SrgFile.java:18) at immibis.beardedoctonemesis.mcp.McpMapping.(McpMapping.java:19) at immibis.beardedoctonemesis.gui.GuiMain$1.run(GuiMain.java:70)
when try to deobf

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.