<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<font face="Helvetica, Arial, sans-serif" color="#330033">Hello
Fredi,<br>
<br>
This is my experience with a publicly available tool called
McSema (<a class="moz-txt-link-freetext" href="https://github.com/trailofbits/mcsema">https://github.com/trailofbits/mcsema</a>) which can convert
x86 machine code to functional LLVM IR.<span style="font-size:
16px; font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: 24px; text-align:
start; text-indent: 0px; text-transform: none; white-space:
normal; widows: 1; word-spacing: 0px; display: inline !
important; float: none; background-color: rgb(255, 255, 255);">
McSema support translation of x86 machine code, including
integer, floating point, and SSE instructions.</span></font>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<ul>
<li><font face="Helvetica, Arial, sans-serif" color="#330033">Pluses
of McSema<br>
</font></li>
<ul>
<li><font face="Helvetica, Arial, sans-serif" color="#330033">Well
documented</font></li>
<li><font face="Helvetica, Arial, sans-serif" color="#330033">Fully
functional LLVM IR, i.e. the recovered LLVM IR can be
re-written to binary and executed. </font></li>
<li><font face="Helvetica, Arial, sans-serif" color="#330033">Pluggable
control flow graph recovery phase: The tool has 2
independent phases: In the first phase, it extracts control
flow graph (cfg) information from the binary (using a tool
bin_descend). Then it will write the recovered cfg into a
Google Protocol Buffer serialized file. There is also an
IDAPython script to recover cfg from within IDA Pro (which
is a commercial solution ). In that sense, we can plug-in
any solution to recover cfg. In the second phase McSema
converts this cfg into LLVM IR. <br>
</font></li>
</ul>
<li><font face="Helvetica, Arial, sans-serif" color="#330033">Minuses
of LLVM IR recovered from Mcsema: <br>
</font></li>
<ul>
<li><font face="Helvetica, Arial, sans-serif" color="#330033">One
of the downside of this recovered LLVM IR is that the
variable (scalar/aggregate) and type information is not
recovered in that LLVM IR. In our group, we are actively
working on recovering the variable and type information. <br>
</font></li>
</ul>
</ul>
<font face="Helvetica, Arial, sans-serif" color="#330033">Thanks and
Regards,<br>
Sandeep Dasgupta<br>
PhD Student, University of Illinois Urbana Champaign</font><br>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<pre style="white-space: pre-wrap; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
</pre>
<div class="moz-forward-container"><br>
<br>
<div id="AppleMailSignature"><span style="background-color:
rgba(255, 255, 255, 0);">
<blockquote type="cite">Date: Sat, 13 Aug 2016 15:57:14 +0200<br>
From: fee via llvm-dev <<a moz-do-not-send="true"
dir="ltr" href="mailto:llvm-dev@lists.llvm.org"
x-apple-data-detectors="true"
x-apple-data-detectors-type="link"
x-apple-data-detectors-result="180">llvm-dev@lists.llvm.org</a>><br>
To: <a moz-do-not-send="true" dir="ltr"
href="mailto:llvm-dev@lists.llvm.org"
x-apple-data-detectors="true"
x-apple-data-detectors-type="link"
x-apple-data-detectors-result="181">llvm-dev@lists.llvm.org</a><br>
Subject: [llvm-dev] Binary to LLVM IR lifter?<br>
Message-ID: <<a moz-do-not-send="true" dir="ltr"
href="mailto:342a05bd-1375-6712-931b-d5afb3736e1b@web.de"
x-apple-data-detectors="true"
x-apple-data-detectors-type="link"
x-apple-data-detectors-result="182">342a05bd-1375-6712-931b-d5afb3736e1b@web.de</a>><br>
Content-Type: text/plain; charset=utf-8<br>
<br>
Hi all,<br>
<br>
I am looking for binary lifter/translater that are able to
convert architecture specific code like x86, x86_64, ARM
etc. to LLVM IR.<br>
<br>
Do you know any working tools that can do something like
this?<br>
<br>
Regards,<br>
<br>
Fredi</blockquote>
</span>
<div><br>
</div>
</div>
<br>
</div>
<br>
</body>
</html>