<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>