You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-03 00:45:53 +08:00
Revise README
This commit is contained in:
28
README.rst
28
README.rst
@@ -80,7 +80,7 @@ latest Python version, with the exception of Python 3.0 through
|
|||||||
3.2. Volunteers are welcome to address these deficiencies if there a
|
3.2. Volunteers are welcome to address these deficiencies if there a
|
||||||
desire to do so.
|
desire to do so.
|
||||||
|
|
||||||
nThe way it does this though is by segregating consecutive Python versions into
|
The way it does this though is by segregating consecutive Python versions into
|
||||||
git branches:
|
git branches:
|
||||||
|
|
||||||
master
|
master
|
||||||
@@ -144,7 +144,7 @@ Verification
|
|||||||
|
|
||||||
In older versions of Python it was possible to verify bytecode by
|
In older versions of Python it was possible to verify bytecode by
|
||||||
decompiling bytecode, and then compiling using the Python interpreter
|
decompiling bytecode, and then compiling using the Python interpreter
|
||||||
for that bytecode version. Having done this the bytecode produced
|
for that bytecode version. Having done this, the bytecode produced
|
||||||
could be compared with the original bytecode. However as Python's code
|
could be compared with the original bytecode. However as Python's code
|
||||||
generation got better, this no longer was feasible.
|
generation got better, this no longer was feasible.
|
||||||
|
|
||||||
@@ -158,7 +158,7 @@ You can also cross compare the results with either another version of
|
|||||||
`uncompyle6` since there are are sometimes regressions in decompiling
|
`uncompyle6` since there are are sometimes regressions in decompiling
|
||||||
specific bytecode as the overall quality improves.
|
specific bytecode as the overall quality improves.
|
||||||
|
|
||||||
For Python 3.7 and above, the code in decompyle3_ is generally
|
For Python 3.7 and 3.8, the code in decompyle3_ is generally
|
||||||
better.
|
better.
|
||||||
|
|
||||||
Or try specific another python decompiler like uncompyle2_, unpyc37_,
|
Or try specific another python decompiler like uncompyle2_, unpyc37_,
|
||||||
@@ -227,12 +227,13 @@ handled.
|
|||||||
|
|
||||||
We also don't handle PJOrion_ or otherwise obfuscated code. For
|
We also don't handle PJOrion_ or otherwise obfuscated code. For
|
||||||
PJOrion try: PJOrion Deobfuscator_ to unscramble the bytecode to get
|
PJOrion try: PJOrion Deobfuscator_ to unscramble the bytecode to get
|
||||||
valid bytecode before trying this tool. This program can't decompile
|
valid bytecode before trying this tool; pydecipher_ might help with that.
|
||||||
Microsoft Windows EXE files created by Py2EXE_, although we can
|
|
||||||
probably decompile the code after you extract the bytecode
|
This program can't decompile Microsoft Windows EXE files created by
|
||||||
properly. Handling pathologically long lists of expressions or
|
Py2EXE_, although we can probably decompile the code after you extract
|
||||||
statements is slow. We don't handle Cython_ or MicroPython which don't
|
the bytecode properly. Handling pathologically long lists of
|
||||||
use bytecode.
|
expressions or statements is slow. We don't handle Cython_ or
|
||||||
|
MicroPython which don't use bytecode.
|
||||||
|
|
||||||
There are numerous bugs in decompilation. And that's true for every
|
There are numerous bugs in decompilation. And that's true for every
|
||||||
other CPython decompiler I have encountered, even the ones that
|
other CPython decompiler I have encountered, even the ones that
|
||||||
@@ -270,21 +271,21 @@ issues above the queue of other things I might be doing instead.
|
|||||||
See Also
|
See Also
|
||||||
--------
|
--------
|
||||||
|
|
||||||
* https://github.com/rocky/python-decompile3 : Much smaller and more modern code, focusing on 3.7+. Changes in that will get migrated back here.
|
* https://github.com/rocky/python-decompile3 : Much smaller and more modern code, focusing on 3.7 and 3.8. Changes in that will get migrated back here.
|
||||||
* https://code.google.com/archive/p/unpyc3/ : supports Python 3.2 only. The above projects use a different decompiling technique than what is used here. Currently unmaintained.
|
* https://code.google.com/archive/p/unpyc3/ : supports Python 3.2 only. The above projects use a different decompiling technique than what is used here. Currently unmaintained.
|
||||||
* https://github.com/figment/unpyc3/ : fork of above, but supports Python 3.3 only. Includes some fixes like supporting function annotations. Currently unmaintained.
|
* https://github.com/figment/unpyc3/ : fork of above, but supports Python 3.3 only. Includes some fixes like supporting function annotations. Currently unmaintained.
|
||||||
* https://github.com/wibiti/uncompyle2 : supports Python 2.7 only, but does that fairly well. There are situations where :code:`uncompyle6` results are incorrect while :code:`uncompyle2` results are not, but more often uncompyle6 is correct when uncompyle2 is not. Because :code:`uncompyle6` adheres to accuracy over idiomatic Python, :code:`uncompyle2` can produce more natural-looking code when it is correct. Currently :code:`uncompyle2` is lightly maintained. See its issue `tracker <https://github.com/wibiti/uncompyle2/issues>`_ for more details
|
* https://github.com/wibiti/uncompyle2 : supports Python 2.7 only, but does that fairly well. There are situations where :code:`uncompyle6` results are incorrect while :code:`uncompyle2` results are not, but more often uncompyle6 is correct when uncompyle2 is not. Because :code:`uncompyle6` adheres to accuracy over idiomatic Python, :code:`uncompyle2` can produce more natural-looking code when it is correct. Currently :code:`uncompyle2` is lightly maintained. See its issue `tracker <https://github.com/wibiti/uncompyle2/issues>`_ for more details.
|
||||||
* `How to report a bug <https://github.com/rocky/python-uncompyle6/blob/master/HOW-TO-REPORT-A-BUG.md>`_
|
* `How to report a bug <https://github.com/rocky/python-uncompyle6/blob/master/HOW-TO-REPORT-A-BUG.md>`_
|
||||||
* The HISTORY_ file.
|
* The HISTORY_ file.
|
||||||
* https://github.com/rocky/python-xdis : Cross Python version disassembler
|
* https://github.com/rocky/python-xdis : Cross Python version disassembler
|
||||||
* https://github.com/rocky/python-xasm : Cross Python version assembler
|
* https://github.com/rocky/python-xasm : Cross Python version assembler
|
||||||
* https://github.com/rocky/python-uncompyle6/wiki : Wiki Documents which describe the code and aspects of it in more detail
|
* https://github.com/rocky/python-uncompyle6/wiki : Wiki Documents which describe the code and aspects of it in more detail
|
||||||
* https://github.com/zrax/pycdc : The README for this C++ code says it aims to support all versions of Python. It is best for Python versions around 2.7 and 3.3 when the code was initially developed. Accuracy for current versions of Python3 and early versions of Python is lacking. Without major effort, it is unlikely it can be made to support current Python 3. See its `issue tracker <https://github.com/zrax/pycdc/issues>`_ for details. Currently lightly maintained.
|
* https://github.com/zrax/pycdc : The README for this C++ code says it aims to support all versions of Python. You can aim your slign shot for the moon too, but I doubt you are going to hit it. This code is best for Python versions around 2.7 and 3.3 when the code was initially developed. Accuracy for current versions of Python3 and early versions of Python is lacking. Without major effort, it is unlikely it can be made to support current Python 3. See its `issue tracker <https://github.com/zrax/pycdc/issues>`_ for details. Currently lightly maintained.
|
||||||
|
|
||||||
|
|
||||||
.. _Cython: https://en.wikipedia.org/wiki/Cython
|
.. _Cython: https://en.wikipedia.org/wiki/Cython
|
||||||
.. _trepan: https://pypi.python.org/pypi/trepan3k
|
.. _trepan: https://pypi.python.org/pypi/trepan3k
|
||||||
.. _compiler: https://pypi.python.org/pypi/spark_parser
|
.. _compiler: https://github.com/rocky/python-uncompyle6/wiki/How-does-this-code-work%3F
|
||||||
.. _HISTORY: https://github.com/rocky/python-uncompyle6/blob/master/HISTORY.md
|
.. _HISTORY: https://github.com/rocky/python-uncompyle6/blob/master/HISTORY.md
|
||||||
.. _report_bug: https://github.com/rocky/python-uncompyle6/blob/master/HOW-TO-REPORT-A-BUG.md
|
.. _report_bug: https://github.com/rocky/python-uncompyle6/blob/master/HOW-TO-REPORT-A-BUG.md
|
||||||
.. _debuggers: https://pypi.python.org/pypi/trepan3k
|
.. _debuggers: https://pypi.python.org/pypi/trepan3k
|
||||||
@@ -299,6 +300,7 @@ See Also
|
|||||||
.. |packagestatus| image:: https://repology.org/badge/vertical-allrepos/python:uncompyle6.svg
|
.. |packagestatus| image:: https://repology.org/badge/vertical-allrepos/python:uncompyle6.svg
|
||||||
:target: https://repology.org/project/python:uncompyle6/versions
|
:target: https://repology.org/project/python:uncompyle6/versions
|
||||||
.. _PJOrion: http://www.koreanrandom.com/forum/topic/15280-pjorion-%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F-%D0%B4%D0%B5%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F-%D0%BE%D0%B1%D1%84
|
.. _PJOrion: http://www.koreanrandom.com/forum/topic/15280-pjorion-%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F-%D0%B4%D0%B5%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F-%D0%BE%D0%B1%D1%84
|
||||||
|
.. _pydecipher: https://github.com/mitre/pydecipher
|
||||||
.. _Deobfuscator: https://github.com/extremecoders-re/PjOrion-Deobfuscator
|
.. _Deobfuscator: https://github.com/extremecoders-re/PjOrion-Deobfuscator
|
||||||
.. _Py2EXE: https://en.wikipedia.org/wiki/Py2exe
|
.. _Py2EXE: https://en.wikipedia.org/wiki/Py2exe
|
||||||
.. |Supported Python Versions| image:: https://img.shields.io/pypi/pyversions/uncompyle6.svg
|
.. |Supported Python Versions| image:: https://img.shields.io/pypi/pyversions/uncompyle6.svg
|
||||||
|
Reference in New Issue
Block a user