Update docs and failed decompiles (for 2.5)

This commit is contained in:
rocky
2017-12-13 10:02:30 -05:00
parent f432f4f698
commit 89a7ad6f81
3 changed files with 40 additions and 21 deletions

View File

@@ -10,23 +10,36 @@ decompile everything. Overall, I think this one probably does the best
job of *any* Python decompiler that handles such a wide range of job of *any* Python decompiler that handles such a wide range of
versions. versions.
But at any given time, there are maybe dozens of valid Python bytecode But at any given time, there are a number of valid Python bytecode
files that I know of that will cause problems. And when I get through files that I know of that will cause problems. See, for example, the
those and all the issues of decompiler bugs that are currently logged, list in
I could probably easily find dozens more bugs just by doing a [`test/stdlib/runtests.sh`](https://github.com/rocky/python-uncompyle6/blob/master/test/stdlib/runtests.sh).
decompile of all the Python bytecode on any one of my
computers. Unless you want to help out by _fixing_ bugs, or are
willing to do work by isolating and narrowing bugs, don't feel you are
doing me a favor by doing scans on your favorite sets of bytecode
files.
In sum, it is not uncommon that you will find a mistranslation in But I understand: you would the bugs _you_ encounter addressed before
decompiling. Furthermore, you may be expected to do some work in order all the other known bugs.
to have your bug worthy of being considered above other bugs.
No one is getting paid to work to work on this project, let alone bugs From my standpoint, the good thing about the bugs listed in
you may have an interest in. If you require decompiling bytecode `runtests.sh` is that each test case is small and isolated to a single
immediately, consider using a decompilation service. kind of problem. And I'll tend to fix easier, more isolated cases than
generic "something's wrong" kinds of bugs where I'd have to do a bit
of work to figure out what's up, if not use some sort of mind reading,
make some guesses, and perform some experiments to see if the guesses
are correct. I can't read minds, nor am I into guessing games; I'd
rather devote the effort spent instead towards fixing bugs that are
precisely defined.
And it often turns out that by just fixing the well-defined and
prescribed cases, the ill-defined amorphous cases as well will get
handled as well.
In sum, you may need to do some work to have the bug you have found
handled before the hundreds of other bugs, and things I could be
doing.
No one is getting paid to work to work on this project, let alone the
bugs you may have an interest in. If you require decompiling bytecode
immediately, consider using a decompilation service, listed further
down in this document.
## Is it really a bug? ## Is it really a bug?
@@ -114,7 +127,7 @@ Also try to narrow the bug. See below.
Some kind folks also give the invocation they used and the output Some kind folks also give the invocation they used and the output
which usually includes an error message produced. This is which usually includes an error message produced. This is
helpful. From this, I can figure out what OS you are running this on helpful. From this, I can figure out what OS you are running this on
and what version of *uncomplye6* was used. Therefore, if you don't and what version of *uncomplye6* was used. Therefore, if you _don't_
provide the input command and the output from that, please give: provide the input command and the output from that, please give:
* _uncompyle6_ version used * _uncompyle6_ version used

View File

@@ -163,10 +163,9 @@ python 2.3-2.4 since a lot of the goodness of early the version of the
decompiler from that era has been preserved (and Python compilation in decompiler from that era has been preserved (and Python compilation in
that era was minimal) that era was minimal)
Later distributions average about 200 files. There is some work to do There is some work to do on the lower end Python versions which is
on the lower end Python versions which is more difficult for us to more difficult for us to handle since we don't have a Python
handle since we don't have a Python interpreter for versions 1.5, 1.6, interpreter for versions 1.5, 1.6, and 2.0.
and 2.0.
In the Python 3 series, Python support is is strongest around 3.4 or In the Python 3 series, Python support is is strongest around 3.4 or
3.3 and drops off as you move further away from those versions. Python 3.3 and drops off as you move further away from those versions. Python
@@ -187,7 +186,11 @@ handled.
We also don't handle PJOrion_ obfuscated code. For that try: PJOrion We also don't handle PJOrion_ obfuscated code. For that try: PJOrion
Deobfuscator_ to unscramble the bytecode to get valid bytecode before Deobfuscator_ to unscramble the bytecode to get valid bytecode before
trying this tool. trying this tool. This program can't decompile Microsoft Windows EXE
files created by Py2EXE_, although we can probably decompile the code
after you extract the bytecode properly. For situations like this, you
might want to consider a decompilation service like [Crazy
Compilers](http://www.crazy-compilers.com/decompyle/).
Handling pathologically long lists of expressions or statements is Handling pathologically long lists of expressions or statements is
slow. slow.
@@ -219,3 +222,4 @@ See Also
:target: https://travis-ci.org/rocky/python-uncompyle6 :target: https://travis-ci.org/rocky/python-uncompyle6
.. _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
.. _Deobfuscator: https://github.com/extremecoders-re/PjOrion-Deobfuscator .. _Deobfuscator: https://github.com/extremecoders-re/PjOrion-Deobfuscator
.. _Py2EXE: https://en.wikipedia.org/wiki/Py2exe

View File

@@ -40,8 +40,10 @@ case $PYVERSION in
[test_contextlib.py]=1 [test_contextlib.py]=1
[test_decorators.py]=1 # Syntax error decorators? [test_decorators.py]=1 # Syntax error decorators?
[test_dis.py]=1 # We change line numbers - duh! [test_dis.py]=1 # We change line numbers - duh!
[test_exceptions.py]=1
[test_format.py]=1 # Control flow? [test_format.py]=1 # Control flow?
[test_frozen.py]=1 [test_frozen.py]=1
[test_functools.py]=1
[test_grammar.py]=1 # Too many stmts. Handle large stmts [test_grammar.py]=1 # Too many stmts. Handle large stmts
[test_grp.py]=1 # Long test - might work Control flow? [test_grp.py]=1 # Long test - might work Control flow?
[test_imp.py]=1 [test_imp.py]=1