revng
remill
revng | remill | |
---|---|---|
7 | 3 | |
1,201 | 1,184 | |
5.0% | 1.9% | |
9.6 | 5.8 | |
6 days ago | 26 days ago | |
C++ | C++ | |
GNU General Public License v3.0 only | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
revng
-
The rev.ng decompiler goes open source
We should probably add a warning about `source ./environment`.
Now, let's get to each of your comments :D
> though thankfully not LD_LIBRARY_PATH
We spent a lot of time to have a completely self-contained set of binaries where each ELF refers to its dependencies through relative paths. LD_LIBRARY_PATH is evil.
> Mostly prefixed "HARD_"
Those are just used by our compiler wrappers, I don't think those environment variables collide with anything in practice.
> It sets `AWS_EC2_METADATA_DISABLED="true"`
Original discussion: https://github.com/revng/revng/pull/309#discussion_r12805759...
I guess we could patch the AWS SDK to avoid this.
- Revng translates (i386, x86-64, MIPS, ARM, AArch64, s390x) binaries to LLVM IR
-
Ask HN: Which books do you consider real gems in your field of work/study?
Nielson & Nielson literally saved my PhD and enabled the creation of the company. I'm so grateful.
Do you have any contact? It'd be cool to invite one of the authors to our weekly internal meetings.
> the authors have written a prequel
Oh crap, that's great!
Honestly, we use Chapter 2 a lot, it already provides so much value. And in fact, you could write a whole book only about that.
Here's our C++ implementation of MFP:
https://github.com/revng/revng/blob/develop/include/revng/MFP/MFP.h#L66
-
TMNT Shredder's Revenge has been ported to ARM-based Retro Handhelds!
I'm not certain, but my best guess right now is that the non-open-source games are going through a static binary translator (like this one). Going from a strong-memory-model ISA like x86_64 to a weak-memory-model ISA like ARM, can present performance challenges when memory fencing is added.
-
C++ Jobs - Q3 2022
C++ 20 coroutines: we employ them to achieve "stackless C++";
-
C++ Jobs - Q3 2021
C++20 Coroutines: we employ them to safely and idiomatically transistions from UI thread and long-running computation threads and "stackless C++""
remill
-
Revng translates (i386, x86-64, MIPS, ARM, AArch64, s390x) binaries to LLVM IR
Usually such things are called lifters. Wonder how this tool compares to other existing LLVM IR lifters, such as remill[0] and rellume[1].
0: https://github.com/lifting-bits/remill
- Decompiler Explorer
- fcd – LLVM-based native program optimizing decompiler
What are some alternatives?
rellume - Lift machine code to performant LLVM IR
llvm-tutor - A collection of out-of-tree LLVM passes for teaching and learning
cmm- - Markdown parcer
fcd - An optimizing decompiler
revng-qa - Source for rev.ng test cases
anvill - anvill forges beautiful LLVM bitcode out of raw machine code
rizin - UNIX-like reverse engineering framework and command-line toolset.
rellic - Rellic produces goto-free C output from LLVM bitcode
revng-c
asmjit - Low-latency machine code generation
bookstuff
mcsema - Framework for lifting x86, amd64, aarch64, sparc32, and sparc64 program binaries to LLVM bitcode