Dagger: Decompiling Software Through LLVM
Dagger is a decompilation framework written around LLVM that supports decompiling software back into LLVM IR.
One of the interesting sessions talked about last week in Paris, France at the LLVM European Meeting was Dagger. Ahmed Bougacha, a Dagger developer, talked about Dagger as a decompilation framework based on LLVM. Dagger allows for LLVM back-ends to provide instruction-level semantics that can then be used to translate target instructions to a "micro-IR" IR-like architecture and then onto LLVM IR.
When decompiling back into LLVM IR, the code could then be used for rewriting in a different form, static or dynamic binary translation, or for use by instruction set emulators. The IR could then also be transformed back into C code or another language supporting the full decompilation process.
Sadly the source code for LLVM Dagger has yet to be published but there are PDF slides and video (MOV) from the presentation in Paris. There's also the basic web-site.
One of the interesting sessions talked about last week in Paris, France at the LLVM European Meeting was Dagger. Ahmed Bougacha, a Dagger developer, talked about Dagger as a decompilation framework based on LLVM. Dagger allows for LLVM back-ends to provide instruction-level semantics that can then be used to translate target instructions to a "micro-IR" IR-like architecture and then onto LLVM IR.
When decompiling back into LLVM IR, the code could then be used for rewriting in a different form, static or dynamic binary translation, or for use by instruction set emulators. The IR could then also be transformed back into C code or another language supporting the full decompilation process.
Sadly the source code for LLVM Dagger has yet to be published but there are PDF slides and video (MOV) from the presentation in Paris. There's also the basic web-site.
1 Comment