{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [], "description": "=== What is this repo? ===\n\nThis is a Not OFFicial (-noff) fork of Krakatau to enable pip installation.\n\n=== Python 3 note ===\n\nThe assembler and disassembler support python 3; the decompiler does not.\n\n=== Installation ===\n\npip install Krakatau-noff\n\n=== The original README follows... ===\n\nKrakatau Bytecode Tools\nCopyright (C) 2012-18 Robert Grosse\n\n=== Introduction ===\n\nKrakatau currently contains three tools - a decompiler and disassembler for\nJava classfiles and an assembler to create classfiles.\n\n=== Requirements ===\n\nThe Krakatau decompiler requires Python 2.7 while the assembler and disassembler\nsupport both Python 2.7 and Python 3. Note that if you want to do decompilation,\nyou'll probably want an installation of the JDK as well. For assembly and\ndisassembly, a Java installation is not strictly necessary, but it is still\nuseful for testing the resulting classes.\n\n=== Decompilation ===\n\nUsage:\npython Krakatau\\decompile.py [-nauto] [-path PATH] [-out OUT] [-r] [-skip]\n target\n\nPATH : An optional list of directories, jars, or zipfiles to search for\n classes in. Krakatau will attempt to automatically detect and add the\n jar containing core language classes, but you can disable this with\n the -nauto option. For multiple jars, you can either pass a semicolon\n seperated list of jars or pass the -path option multiple times.\n\nOUT : Directory name where source files are to be written. Defaults to the\n current directory. If the name ends in .zip or .jar, the output will be a\n zipfile instead.\n\n-r : Decompiles all .class files found in the directory target (recursively)\n\n-skip : Continue upon errors. If an error occurs while decompiling a specific\n method, the traceback will be printed as comments in the source file. If the\n error occurs while decompiling at the class level, no source file will be\n emitted and an error message will be printed to the console.\n\ntarget : Class name or jar name to decompile. If a jar is specified, all\n classes in the jar will be decompiled. If -r is specified, this should\n be a directory.\n\nThe Krakatau decompiler takes a different approach to most Java decompilers.\nIt can be thought of more as a compiler whose input language is Java bytecode\nand whose target language happens to be Java source code. Krakatau takes in\narbitrary bytecode, and attempts to transform it to equivalent Java code. This\nmakes it robust to minor obfuscation, though it has the drawback of not\nreconstructing the \"original\" source, leading to less readable output than a\npattern matching decompiler would produce for unobfuscated Java classes.\n\nHowever, it will not always produce valid Java since there are some things\nthat are difficult or impossible to decompile at all thanks to the limitations\nof the Java language. In most cases, Krakatau will try to at least produce\nreadable pseudocode, but sometimes it may just throw an exception.\n\nWarning: Output on Windows uses UNC-style paths, which means that depending on\n the input class name, it may create files which are difficult or impossible\n to access through Windows Explorer or other non-UNC aware tools.\n\nNote that the decompiler does not currently support Java 8 or invokedynamic,\nalthough the assembler and disassembler do.\n\n=== Assembly ===\n\nUsage:\npython Krakatau\\assemble.py [-out OUT] [-r] [-q] target\n\nOUT : Directory name where class files are to be written. Defaults to the\n current directory. If the name ends in .zip or .jar, the output will be a\n zipfile instead.\n\n-r : Assembles all .j files found in the directory target (recursively)\n\n-q : Quiet mode (only display warnings and errors)\n\ntarget : Name of file to assemble. If -r is specified, this should be a\n directory.\n\nThe Krakatau assembler uses a syntax similar to Jasmin, but with many new\nfeatures, most importantly the ability to directly specify constant pool\nreferences. For more information about the syntax look in the Documentation\nfolder.\n\n=== Disassembly ===\n\nUsage:\npython Krakatau\\disassemble.py [-out OUT] [-r] [-roundtrip] target\n\nOUT : File or directory name where source files are to be written. Defaults\n to the current directory. If the name ends in .zip or .jar, the output will\n be a zipfile instead.\n\n-r : Disassembles all .class files found in the directory target (recursively)\n\n-roundtrip : Creates an assembly file that will assemble back to the exact\n binary file that was disassembled.\n\n Without -roundtrip, it will assemble to a classfile which is equivalent to\n the original and has the same behavior, but may differ in binary encoding\n details such as the precise ordering of constant pool entries. Reproducing\n the exact original classfile requires outputting such low level information\n in the assembly file, which makes the assembly harder for humans to read and\n edit. Therefore this option is disabled by default.\n\ntarget : Filename or jar name to disassemble. If a jar is specified, all\n classes in the jar will be disassembled. If -r is specified, this should\n be a directory.\n\nThis takes a classfile and converts it into a human readable assembly format.\nUnlike Javap, this can handle even pathological classes, and the output can\nbe reassembled. Together with the Krakatau assembler, this tool can roundtrip\nany class through assembly and back into an equivalent class. If the -roundtrip\noption is passed, then it can roundtrip any valid class through assembly and\nexactly reproduce the original binary classfile.\n\nNote: If you find a valid class which Krakatau cannot disassemble, please file\nan issue at https://github.com/Storyyeller/Krakatau/issues.\n\n=== Java 10 ===\n\nThe assembler and disassembler fully support Java 10, while the decompiler only\nsupports Java 7. In particular, decompilation of lambdas is not supported.\n\n=== Performance ===\n\nYou can disable the internal debugging checks by passing -O to Python. This\nwill make Krakatau slightly faster, so it is recommended for normal usage.\n\n=== Pypy ===\n\nIf you want to use Pypy, you'll need a build from 15 Feb 2016 or later.\nPrevious versions of Pypy have a bug that causes a segfault when running\nKrakatau.", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/drstrng/Krakatau-noff/archive/v0.20181212.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/drstrng/Krakatau-noff", "keywords": "java,jvm,class,.class,assembler,disassembler,decompiler", "license": "", "maintainer": "", "maintainer_email": "", "name": "Krakatau-noff", "package_url": "https://pypi.org/project/Krakatau-noff/", "platform": "", "project_url": "https://pypi.org/project/Krakatau-noff/", "project_urls": { "Download": "https://github.com/drstrng/Krakatau-noff/archive/v0.20181212.tar.gz", "Homepage": "https://github.com/drstrng/Krakatau-noff" }, "release_url": "https://pypi.org/project/Krakatau-noff/v0.20181212/", "requires_dist": null, "requires_python": "", "summary": "Analysis tools for Java .class files.", "version": "v0.20181212" }, "last_serial": 4590666, "releases": { "v0.20181212": [ { "comment_text": "", "digests": { "md5": "25513a2046d0851d3a9b69380349b59e", "sha256": "5c371e494ece02d5346e3f7e2e15e391796908b9c2fa5c08b9824cecb067be10" }, "downloads": -1, "filename": "Krakatau-noff-v0.20181212.tar.gz", "has_sig": false, "md5_digest": "25513a2046d0851d3a9b69380349b59e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 129359, "upload_time": "2018-12-12T15:51:22", "url": "https://files.pythonhosted.org/packages/c8/1b/1a86479adc5a2991fb40a1b38730207da49b5dbfcb0b4b637d7c3fab35dd/Krakatau-noff-v0.20181212.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "25513a2046d0851d3a9b69380349b59e", "sha256": "5c371e494ece02d5346e3f7e2e15e391796908b9c2fa5c08b9824cecb067be10" }, "downloads": -1, "filename": "Krakatau-noff-v0.20181212.tar.gz", "has_sig": false, "md5_digest": "25513a2046d0851d3a9b69380349b59e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 129359, "upload_time": "2018-12-12T15:51:22", "url": "https://files.pythonhosted.org/packages/c8/1b/1a86479adc5a2991fb40a1b38730207da49b5dbfcb0b4b637d7c3fab35dd/Krakatau-noff-v0.20181212.tar.gz" } ] }