[llvm-dev] LLVM IR from static/dynamic libraries
John Criswell via llvm-dev
llvm-dev at lists.llvm.org
Fri Oct 9 06:09:45 PDT 2015
On 10/8/15 11:20 PM, Vedant Kumar via llvm-dev wrote:
> Could you explain why you're trying to obfuscate libraries?
> At any rate if you're looking for a way to convert machine code into llvm IR, then I don't think there's a well-supported way of doing that.
There are at least two tools for converting machine code to LLVM IR.
One is RevGen (http://dslab.epfl.ch/pubs/revgen.pdf).
The other is BAP (http://users.ece.cmu.edu/~ejschwar/papers/cav11.pdf).
Both are open source though I'm not sure where to find them. A Google
search should fix that.
Please be aware that the LLVM IR generated by these tools is not quite
like the LLVM IR generated by Clang when compiling from source to LLVM
IR. RevGen (and probably BAP) create code that emulates the processor
on which the binary runs and then uses LLVM optimizations to try to
clean up the result. If you take the result and translate it back to
machine code, it may not run very efficiently (if it runs at all; these
tools are primarily designed to analyze binary code by reusing existing
infrastructure in LLVM).
If you want to obfuscate existing binary code, there may be better
methods. For example, if I were to do it, I would use LLVM's MC layer
to disassemble the code, maybe raise the code to the LLVM MachineInstr
level, and then do analysis/obfuscation at that level. Raising all the
way up to LLVM IR probably won't add much.
>> On Oct 6, 2015, at 10:53 PM, Sandeep Kumar Singh via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>> Hi All,
>> Is this possible to generate LLVM IR from any static/dynamic link library?
>> I have some static and dynamic link library and I want to generate LLVM IR as I want to obfuscate these libraries.
>> Is there any way to do the same.
>> Please give me some pointers on this.
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
Department of Computer Science, University of Rochester
More information about the llvm-dev