Code Monkey home page Code Monkey logo

luyten's Introduction

luyten's People

Contributors

atnayan avatar berryh avatar clevertension avatar deathmarine avatar dstmath avatar fisheylp avatar games647 avatar kasperkarlsson avatar mbax avatar mstrobel avatar phoenix616 avatar psytester avatar quitten avatar syquel avatar talshalti avatar toonetown avatar virustotalop avatar vlsi avatar zerdei 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  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

luyten's Issues

Arbitrary code concealment

As a result of the incorrect disassembly of a JVM instruction by Procyon, it is possible to hide arbitrary code in such a way that it is undetectable by Procyon/Luyten.

Incomprehensively, the concealment isn't even visible in the disassembled bytecode produced by Procyon, so if Luyten is being used to audit potentially malicious binaries, code concealed in such a manner is completely invisible to it. The constant pool has the potential to betray the presence of malicious code unless care is taken to avoid using (obviously malicious) literals.

For now, in regards to Luyten, there's little that can be done, unless you want to patch Procyon yourself, or use another disassembler (for bytecode disassembly, Krakatau is effective, although it's written in python).

Issue as described on Procyon bugtracker:
https://bitbucket.org/mstrobel/procyon/issue/216/goto_w-instruction-handled-improperly

Upgrade to newest version of Procyon

Luyten is currently using Procyon 0.4.3 but there have been a lot of releases since then. The newest version as of this writing is 0.5.21. Probably would be good to upgrade?

Incorrect files/directory filtering in open dialog when *.jar file seleted

When opening file, folders are nor showed when in file open dialog .jar or *.zip selected (actually everything except *.).
Version: luyten-0.4.3.jar
Steps to reproduce: Start app, File, Open File. In "Open" dialog, select *.jar in Files of type. Folders are not shown
Expected behavior: Folders are shown even *.jar file extension is selected.

NullPointerException

java.lang.NullPointerException
	at com.strobel.decompiler.languages.java.ast.DefiniteAssignmentAnalysis.setAnalyzedRange(DefiniteAssignmentAnalysis.java:117)
	at com.strobel.decompiler.languages.java.ast.DefiniteAssignmentAnalysis.setAnalyzedRange(DefiniteAssignmentAnalysis.java:108)
	at com.strobel.decompiler.languages.java.ast.transforms.ConvertLoopsTransform.transformForEachInArray(ConvertLoopsTransform.java:906)
	at com.strobel.decompiler.languages.java.ast.transforms.ConvertLoopsTransform.visitWhileStatement(ConvertLoopsTransform.java:89)
	at com.strobel.decompiler.languages.java.ast.transforms.ConvertLoopsTransform.visitWhileStatement(ConvertLoopsTransform.java:42)
	at com.strobel.decompiler.languages.java.ast.WhileStatement.acceptVisitor(WhileStatement.java:64)
	at com.strobel.decompiler.languages.java.ast.transforms.ConvertLoopsTransform.visitChildren(ConvertLoopsTransform.java:56)
	at com.strobel.decompiler.languages.java.ast.transforms.ConvertLoopsTransform.visitChildren(ConvertLoopsTransform.java:42)
	at com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor.visitBlockStatement(DepthFirstAstVisitor.java:96)
	at com.strobel.decompiler.languages.java.ast.BlockStatement.acceptVisitor(BlockStatement.java:72)
	at com.strobel.decompiler.languages.java.ast.transforms.ConvertLoopsTransform.visitChildren(ConvertLoopsTransform.java:56)
	at com.strobel.decompiler.languages.java.ast.transforms.ConvertLoopsTransform.visitChildren(ConvertLoopsTransform.java:42)
	at com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor.visitMethodDeclaration(DepthFirstAstVisitor.java:206)
	at com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor.visitMethodDeclaration(ContextTrackingVisitor.java:64)
	at com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor.visitMethodDeclaration(ContextTrackingVisitor.java:28)
	at com.strobel.decompiler.languages.java.ast.MethodDeclaration.acceptVisitor(MethodDeclaration.java:85)
	at com.strobel.decompiler.languages.java.ast.transforms.ConvertLoopsTransform.visitChildren(ConvertLoopsTransform.java:56)
	at com.strobel.decompiler.languages.java.ast.transforms.ConvertLoopsTransform.visitChildren(ConvertLoopsTransform.java:42)
	at com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor.visitTypeDeclaration(DepthFirstAstVisitor.java:236)
	at com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor.visitTypeDeclaration(ContextTrackingVisitor.java:52)
	at com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor.visitTypeDeclaration(ContextTrackingVisitor.java:28)
	at com.strobel.decompiler.languages.java.ast.TypeDeclaration.acceptVisitor(TypeDeclaration.java:90)
	at com.strobel.decompiler.languages.java.ast.transforms.ConvertLoopsTransform.visitChildren(ConvertLoopsTransform.java:56)
	at com.strobel.decompiler.languages.java.ast.transforms.ConvertLoopsTransform.visitChildren(ConvertLoopsTransform.java:42)
	at com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor.visitCompilationUnit(DepthFirstAstVisitor.java:241)
	at com.strobel.decompiler.languages.java.ast.CompilationUnit.acceptVisitor(CompilationUnit.java:81)
	at com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor.run(ContextTrackingVisitor.java:84)
	at com.strobel.decompiler.languages.java.ast.transforms.TransformationPipeline.runTransformationsUntil(TransformationPipeline.java:91)
	at com.strobel.decompiler.languages.java.ast.AstBuilder.runTransformations(AstBuilder.java:99)
	at com.strobel.decompiler.languages.java.JavaLanguage.runTransforms(JavaLanguage.java:97)
	at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:72)
	at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59)
	at us.deathmarine.luyten.DecompilerLinkProvider.generateContent(DecompilerLinkProvider.java:96)
	at us.deathmarine.luyten.OpenFile.decompileWithNavigationLinks(OpenFile.java:497)
	at us.deathmarine.luyten.OpenFile.decompile(OpenFile.java:470)
	at us.deathmarine.luyten.Model.extractClassToTextPane(Model.java:359)
	at us.deathmarine.luyten.Model.openEntryByTreePath(Model.java:278)
	at us.deathmarine.luyten.Model$TreeListener$1.run(Model.java:234)

Unable to execute 'run' task

I have a root project which uses the application plugin and sub-projects as dependencies. When I try to execute the run task, I got the following error:

09:37:21: Executing external task 'run'...

FAILURE: Build failed with an exception.

  • What went wrong:
    Could not determine the dependencies of task ':run'.

    Task with path 'compileRetrolambda' not found in root project 'dte-desktop'.

My plugins block (in root project):

plugins {
    id 'java'
    id 'application'
    id 'com.github.johnrengelman.shadow' version '1.2.3'
    id 'me.tatarka.retrolambda' version '3.2.5'
}

I don't know if it's a bug or an issue on my side, do you have any clue ?

Select which files to export?

Hi, is there a way to select only a subset of .java files to export from the left hand panel? Like just files from the subdirectory? I don't need to look at all the sources, and some files are very large/freeze.

Edit: My current workaround is to delete the stuff I don't want from the .jar file directly, then running it through procyon-decompiler.

NullPointerException

I Use the exe to see the jar
Use ”Find all” to find some strings or methods
I always get the error named java.lang.NullPointerException when the progress bar come to the 70%

Improve classes navigation functionality

An idea about improving the classes navigation functionality in the tool as follows:

  1. Once you have a java class opened, you have java methods, classes instances, variables, etc etc on the right panel.

So how about this:
if the user press down lets say [CTRL] button then click over some java class/method/var/etc) - Luyten will catch that event, will analyze the clicked token and will try to figure out if the currently opened tree items has that element (lets say user clicked over available java class) and then, the Luyten will navigate to the clicked object by opening a new tab (or activating the previously opened..)

  1. Once feature number 1 will be available, add support for the popup menu for the underlying token - add lets say "Go to ..." menu item that will do the same steps as in step 1)

  2. Once number 1 will be available, add history tracking like this:
    keep the object jumps in history list (internally) and allow user to navigate forward and backward over that history lets say using well-known key combination like [ALT} + [->](right arrow) and [ALT] + [<-}
    each combination will make user really happy cause that the intuitive way of sources browsing!

  3. Once 3) will be available, consider adding Navigate forward/backward as menu items in main menu

license?

Currently, there is no information under which terms Luyten is licensed. Is your intention to license it under Apache License similar to procyon?
Could you please explicitely declare the license?

Duplicate Filename Exception when saving sources.

Whenever i try to decompile Shiginima Launcher SE v3.100.jar, it gets stuck at 72% then it throws that error!

java.util.zip.ZipException: duplicate entry: javax/annotation/CheckForNull.java

Tried to decompile on linux, no luck, tried on windows, no luck..

Compatibility with FernFlower?

Was wondering if compatibility with FernFlower could be added to this GUI.

EDIT: I noticed that you said Luyten's predecessor used fernflower. Could you send me a link to it so I can try it out please?

create new release

there is new procyon out there
any timeline to create new updated build?
thanks

Class member variables/methods window

Thank you for the great software!

Maybe I'm not the first one to ask, then ignore me, if it's possible to create a dockable window with a list of variables/methods within a decompiled class?

Thank you!

Version in about dialog

Idea: add versions of the Luyten tool itself and version of used Procyon engine in the About dialog.
Consider adding the build time of the tool as well (not sure if that's possible at all in java.... I know it is being supported by for example C, C++ compiler in compile time by special macros)

Help Menu, Tooltips

With all the addition of functionality, each instance, shortcut, hotkey, should be documented in a "Help" menu, tooltips for shortcuts should layout changes.

Handle Decompiler Exceptions Gracefully, Procyon Exception

I'VE GOT THIS ERROR WHEN I PRESS SAVE ALL FOR " WhatsApp-dex2jar.jar "

java.Lang.ArrayIndexOutOfBoundsException: -1

I'm using Whatsapp beta version 2.16.351 with a Windows xp 32 bit & and I tried both "luyten-0.4.9.exe" & "luyten-0.4.8.exe"

Is there anyway to fix it? or to recompile the app without this step .. Thank you.

Latest sources not compilable

Error:


COMPILATION ERROR :

us/deathmarine/luyten/ConfigSaver.java:[61,39] cannot find symbol
symbol: method getFormattingOptions()
location: variable decompilerSettings of type com.strobel.decompiler.DecompilerSettings
us/deathmarine/luyten/ConfigSaver.java:[62,43] cannot find symbol
symbol: method setFormattingOptions(com.strobel.decompiler.languages.java.JavaFormattingOptions)
location: variable decompilerSettings of type com.strobel.decompiler.DecompilerSettings

2 errors


BUILD FAILURE

Total time: 2.617s
Finished at: Sat Nov 21 11:08:02 EET 2015

Final Memory: 10M/28M

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project luyten: Compilation failure: Compilation failure:
us/deathmarine/luyten/ConfigSaver.java:[61,39] cannot find symbol
symbol: method getFormattingOptions()
location: variable decompilerSettings of type com.strobel.decompiler.DecompilerSettings
us/deathmarine/luyten/ConfigSaver.java:[62,43] cannot find symbol
symbol: method setFormattingOptions(com.strobel.decompiler.languages.java.JavaFormattingOptions)
location: variable decompilerSettings of type com.strobel.decompiler.DecompilerSettings
-> [Help 1]

To see the full stack trace of the errors, re-run Maven with the -e switch.
Re-run Maven using the -X switch to enable full debug logging.

For more information about the errors and possible solutions, please read the following articles:
[Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

Command Line support

Thanks for your nice tool. But can it support command line. For example,
java -jar luyten.jar abc.dex -o abc. If dealing with several dexes, it is not convenient to manually click in GUI.

Thanks a lot,

Read, Please...

Okay,

So my server has been running one of your plugins for nearly 2 years now, The plugin is called "DiabloDrops"

This is a really good plugin, It works 100% fine but we have 1 problem that no one can fix. Whats the bug? When you socket a item in a furance there is a chance it would break, Can you please fix this for me? I Will even pay you if you can fix it for me. My skype is: thepotatoarmyhd

Sorry for posting here but i don't think i can private message you.

Add Runtime Arguments

Add arguments to...

  • allow the program to "Open File With.."
  • "nogui" flag to directly access Procyon.

Find in .jar?

Any chance we can get a find feature implemented that allows us to do a text search of all files, or at least all files in a folder/subfolder we define? Unless I'm missing an easier way, it's a pain to search through a bunch of different class files just to find where some method is called.

Allow middle mouse click to close tab

It would be nice if you could close the tabs from open files when middle clicking on them with the cursor.

Such a feature exists in IntelliJ, Eclipse and JD-GUI and would be a nice addition to Luyten.

Wrong line numbers

When using Luyten I always have an issue on finding the right line in relation to a stack trace. They are always way off. Is there a setting I might not have found yet? I haven't experienced this with jdgui, yet.

java.lang.IllegalStateException: Wrong magic number: 2004318021

java.lang.IllegalStateException: Wrong magic number: 2004318021
	at com.strobel.assembler.metadata.ClassFileReader.readClass(ClassFileReader.java:337)
	at com.strobel.assembler.metadata.MetadataSystem.resolveType(MetadataSystem.java:124)
	at com.strobel.assembler.metadata.MetadataSystem.lookupTypeCore(MetadataSystem.java:81)
	at com.strobel.assembler.metadata.MetadataResolver.lookupType(MetadataResolver.java:46)
	at us.deathmarine.luyten.Model.openEntryByTreePath(Model.java:277)
	at us.deathmarine.luyten.Model$TreeListener$1.run(Model.java:234)

Luyten does not work with Java 8

I am trying to use Luyten with a Java 8 installation.
Unfrotunately when launched I get the following exception:

Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
at sun.misc.Unsafe.ensureClassInitialized(Native Method)
at com.strobel.compilerservices.RuntimeHelpers.ensureClassInitialized(RuntimeHelpers.java:31)
at com.strobel.assembler.metadata.MetadataSystem.(MetadataSystem.java:132)
at com.modcrafting.luyten.Model.(Model.java:84)
at com.modcrafting.luyten.Model$5.run(Model.java:423)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.IllegalStateException: Invalid BootstrapMethods attribute entry: 1 additional arguments required for method java/lang/invoke/LambdaMetafactory.altMetafactory, but only 5 specified.
at com.strobel.assembler.ir.Error.invalidBootstrapMethodEntry(Error.java:243)
at com.strobel.assembler.ir.MetadataReader.readAttributeCore(MetadataReader.java:251)
at com.strobel.assembler.metadata.ClassFileReader.readAttributeCore(ClassFileReader.java:260)
at com.strobel.assembler.ir.MetadataReader.inflateAttributes(MetadataReader.java:399)
at com.strobel.assembler.metadata.ClassFileReader.visitAttributes(ClassFileReader.java:1094)
at com.strobel.assembler.metadata.ClassFileReader.readClass(ClassFileReader.java:438)
at com.strobel.assembler.metadata.ClassFileReader.readClass(ClassFileReader.java:365)
at com.strobel.assembler.metadata.ClassFileReader.readClass(ClassFileReader.java:330)
at com.strobel.assembler.metadata.MetadataSystem.resolveType(MetadataSystem.java:114)
at com.strobel.assembler.metadata.MetadataSystem.resolveCore(MetadataSystem.java:66)
at com.strobel.assembler.metadata.MetadataResolver.resolve(MetadataResolver.java:104)
at com.strobel.assembler.metadata.CoreMetadataFactory$UnresolvedType.resolve(CoreMetadataFactory.java:629)
at com.strobel.assembler.metadata.ClassFileReader.populateNamedInnerTypes(ClassFileReader.java:697)
at com.strobel.assembler.metadata.ClassFileReader.readClass(ClassFileReader.java:441)
at com.strobel.assembler.metadata.ClassFileReader.readClass(ClassFileReader.java:365)
at com.strobel.assembler.metadata.ClassFileReader.readClass(ClassFileReader.java:330)
at com.strobel.assembler.metadata.MetadataSystem.resolveType(MetadataSystem.java:114)
at com.strobel.assembler.metadata.MetadataSystem.resolveCore(MetadataSystem.java:66)
at com.strobel.assembler.metadata.MetadataResolver.resolve(MetadataResolver.java:104)
at com.strobel.assembler.metadata.CoreMetadataFactory$UnresolvedType.resolve(CoreMetadataFactory.java:629)
at com.strobel.assembler.metadata.MetadataResolver.resolve(MetadataResolver.java:91)
at com.strobel.assembler.metadata.CoreMetadataFactory$UnresolvedType.resolve(CoreMetadataFactory.java:629)
at com.strobel.assembler.metadata.ClassFileReader.populateNamedInnerTypes(ClassFileReader.java:697)
at com.strobel.assembler.metadata.ClassFileReader.readClass(ClassFileReader.java:441)
at com.strobel.assembler.metadata.ClassFileReader.readClass(ClassFileReader.java:365)
at com.strobel.assembler.metadata.ClassFileReader.readClass(ClassFileReader.java:330)
at com.strobel.assembler.metadata.BuiltinTypes.(BuiltinTypes.java:69)
... 19 more

This method could not be decompiled - java.lang.IllegalArgumentException: Argument 'type' cannot be null

I'm using Luyten 0.4.9 to decompile Java 8 JARs, but unfortunately I'm getting this error for some classes/methods:

// This method could not be decompiled.
// 
// Original Bytecode:
...
// The error that occurred was:
// 
// java.lang.IllegalArgumentException: Argument 'type' cannot be null.
//     at com.strobel.core.VerifyArgument.notNull(VerifyArgument.java:37)
//     at com.strobel.assembler.ir.attributes.LocalVariableTableEntry.<init>(LocalVariableTableEntry.java:41)
//     at com.strobel.assembler.ir.MetadataReader.readAttributeCore(MetadataReader.java:180)
//     at com.strobel.assembler.metadata.ClassFileReader.readAttributeCore(ClassFileReader.java:260)
//     at com.strobel.assembler.ir.MetadataReader.readAttribute(MetadataReader.java:50)
//     at com.strobel.assembler.ir.MetadataReader.readAttributes(MetadataReader.java:40)
//     at com.strobel.assembler.metadata.ClassFileReader.readAttributeCore(ClassFileReader.java:202)
//     at com.strobel.assembler.ir.MetadataReader.inflateAttribute(MetadataReader.java:368)
//     at com.strobel.assembler.ir.MetadataReader.inflateAttributes(MetadataReader.java:345)
//     at com.strobel.assembler.metadata.ClassFileReader.defineMethods(ClassFileReader.java:977)
//     at com.strobel.assembler.metadata.ClassFileReader.readClass(ClassFileReader.java:440)
//     at com.strobel.assembler.metadata.ClassFileReader.readClass(ClassFileReader.java:365)
//     at com.strobel.assembler.metadata.MetadataSystem.resolveType(MetadataSystem.java:124)
//     at com.strobel.assembler.metadata.MetadataSystem.resolveCore(MetadataSystem.java:76)
//     at com.strobel.assembler.metadata.MetadataResolver.resolve(MetadataResolver.java:104)
//     at com.strobel.assembler.metadata.CoreMetadataFactory$UnresolvedType.resolve(CoreMetadataFactory.java:614)
//     at com.strobel.assembler.metadata.MetadataResolver.resolve(MetadataResolver.java:128)
//     at com.strobel.assembler.metadata.CoreMetadataFactory$UnresolvedType.resolve(CoreMetadataFactory.java:624)
//     at com.strobel.assembler.metadata.MethodReference.resolve(MethodReference.java:177)
//     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2428)
//     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1029)
//     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:803)
//     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:770)
//     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:766)
//     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2505)
//     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1029)
//     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:803)
//     at com.strobel.decompiler.ast.TypeAnalysis.runInference(TypeAnalysis.java:672)
//     at com.strobel.decompiler.ast.TypeAnalysis.runInference(TypeAnalysis.java:655)
//     at com.strobel.decompiler.ast.TypeAnalysis.runInference(TypeAnalysis.java:365)
//     at com.strobel.decompiler.ast.TypeAnalysis.run(TypeAnalysis.java:96)
//     at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:109)
//     at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:42)
//     at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:214)
//     at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99)
//     at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757)
//     at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655)
//     at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532)
//     at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499)
//     at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141)
//     at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130)
//     at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105)
//     at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71)
//     at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59)
//     at us.deathmarine.luyten.DecompilerLinkProvider.generateContent(DecompilerLinkProvider.java:96)
//     at us.deathmarine.luyten.OpenFile.decompileWithNavigationLinks(OpenFile.java:497)
//     at us.deathmarine.luyten.OpenFile.decompile(OpenFile.java:470)
//     at us.deathmarine.luyten.Model.extractClassToTextPane(Model.java:361)
//     at us.deathmarine.luyten.Model.openEntryByTreePath(Model.java:279)
//     at us.deathmarine.luyten.Model$TreeListener$1.run(Model.java:235)
// 
throw new IllegalStateException("An error occurred while decompiling this method.");

Objects ending with 2 and 3 being merged and treated as if they were the same

If you define two Objects ending with 2 and 3 they are being merged into the first Variable defined.

Code:

int min2 = main.cfg.getInt("enchantments.min");
int max2 = main.cfg.getInt("enchantments.max");
int min3 = main.cfg.getInt("potions.min");
int max3 = main.cfg.getInt("potions.max");

Luyten Output:

int min2 = main.cfg.getInt("enchantments.min");
int max2 = main.cfg.getInt("enchantments.max");
min2 = main.cfg.getInt("potions.min");
max2 = main.cfg.getInt("potions.max");

Third Party Decompiler:

int min2 = main.cfg.getInt("enchantments.min");
int max2 = main.cfg.getInt("enchantments.max");
int min3 = main.cfg.getInt("potions.min");
int max3 = main.cfg.getInt("potions.max");

It was compiled correctly as the other Decompiler I used has proven.
However Luyten somehow merged both Variables.
And it is not only me who this is happening to, Myrathi was the first one to encounter this Bug.

Version of Luyten used: Luyten 0.4.4 (latest)
File this was encountered on: http://dev.bukkit.org/media/files/878/538/MagicLoot_v2.1.0.jar

Enable the Saving Features

Allow the program to save a specific file as a *.java or defined extension
Allow the program to save the entire file as a source *.jar or *.zip

Add keyboard support

  1. Please add the support for [Enter] key while navigating the left tree like panel with classes (= double click by mouse)
  2. While cursor is in Code panel (java source) please add support for CTRL + F4 key combination (to close the current tab

Thanks

Save All issue...

When I merged all the three(Luyten GUI, RSyntaxArea and Procyon Decompiler), I found an issue when trying to save the sources in the form of zip. Please fix the issue for Save All...menu item.

Thanks

Update version in pom.xml

The latest released version is 0.4.6 - but the pom.xml still shows 0.4.5.

Not sure if the versions are controlled somewhere else...I thought perhaps this was just an oversight.

I can create a pull request for this if you like - but as it is super trivial, I thought I'd just report it as an issue (and you can either fix, ignore, or close this issue as you need).

Graphical representation of jumps

So you can see what goes where.

Failing this, easier to implement would be highlighting the line that the jump instruction points to while it's selected. Also, a way to quickly jump to the target of the jump?

Find All - Exclude/Include Certain Packages (Request)

This is more of a suggestion than an actual problem, but it would be great if there was a way to specify specific directories/packages to look in when using the "Find All" feature. For example, I am working my way through the classes.dex of an APK file at the moment, and like most APKs, it contains the standard com.google.* packages and a bunch of other libraries commonly found in APKs. However, I am looking for specific strings and I already know they will not be in any of those libraries. As such, I would love to be able to specify to only search in, "com.publisher.appName.*" packages. (By the way, my bad if this is already a feature. I just started using Luyten today, so I am far from experienced with it. Perhaps I have overlooked that option if it does exist.)

Overall, a very minor, low-priority issue, but just a suggestion if you are looking for things to improve ;)

Save as .zip/.jar fails if procyon can't decompile a class file

When doing an export as .zip or .jar, the program hangs if Procyon can't decompile a class file. It would be great that the decompilation continue issuing a warning or (better) noticing the user and asking if it should continue with the remaining classes.

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.