einstein- / decompiler Goto Github PK
View Code? Open in Web Editor NEWA decompiler with multiple backend support, written in Python. Works with IDA and Capstone.
A decompiler with multiple backend support, written in Python. Works with IDA and Capstone.
IR is the most important part of this project. Converting assembly to IR is a straightforward grunt work. Please let interested parties skip that boring part and start straight at experimenting with decompilation. Thanks.
[x] Bug (Typo)
yeilds
, however expect to see yields
.substraction
, however expect to see subtraction
.independant
, however expect to see independent
.differenciate
, however expect to see differentiate
.comparision
, however expect to see comparison
.Semi-automated issue generated by
https://github.com/timgates42/meticulous/blob/master/docs/NOTE.md
To avoid wasting CI processing resources a branch with the fix has been
prepared but a pull request has not yet been created. A pull request fixing
the issue can be prepared from the link below, feel free to create it or
request @timgates42 create the PR. Alternatively if the fix is undesired please
close the issue with a small comment about the reasoning.
https://github.com/timgates42/decompiler/pull/new/bugfix_typos
Thanks.
Currently no attempt is done for recognizing arguments to function calls, which leads to wrong decompiled output.
I'm getting several errors while doing unit tests:
no module named ply.yacc
no module named expressions
..............................statements
I'm trying to run tests/common/ply/ir_parser.py (for sample code it contains). I get:
$ PYTHONPATH=../../../src python ir_parser.py
Traceback (most recent call last):
File "ir_parser.py", line 271, in <module>
print parse(text)
File "ir_parser.py", line 256, in parse
return parser.parse(text, lexer=ir_lexer.lexer)
File "/usr/lib/python2.7/dist-packages/ply/yacc.py", line 269, in parse
return self.parseopt_notrack(input,lexer,debug,tracking,tokenfunc)
File "/usr/lib/python2.7/dist-packages/ply/yacc.py", line 1051, in parseopt_notrack
tok = self.errorfunc(errtoken)
File "ir_parser.py", line 233, in p_error
raise RuntimeError("Syntax error in input: %s" % (repr(p), ))
RuntimeError: Syntax error in input: LexToken(:,':',2,8)
Is there more info about this disassembler/syntax?
I ran :
i = 0;
100: if (i >= 100) goto 400;
i = i + 1;
goto 100;
400: return i;
thru dec.step_until(step_decompiled)
, and not really getting any decompiled code, output is SSA basic blocks, the same as for dec.step_until(step_decompiled)
.
Does that mean that loops are not supported yet? Note that SSA of non-looping constructs is trivial matter (like converting out of SSA). The real complications start with loops. And I wonder how sound is your out-of-SSA algorithm.
If i just want the assembly to be decompiled, not binary as input to be disassembled and decompiled at the same time. What should i do?
Was not fixed after rewriting most of the decompiler code. It is most certainly broken currently.
Overlapping registers (ah, al, ax, eax, for example) are handled as separate registers, which leads to wrong decompiled output.
As used in:
i@4 = THETA(i@0, i@4, ) + 1;
It's used in context where PHI function is usually used (join several SSA variables into one): http://en.wikipedia.org/wiki/Static_single_assignment_form . vanEmmerik_ssa.pdf you give as a reference also used standard terminology of phi.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.