Транслятор машинного кода x86 в байткод LLVM
- среда, 13 августа 2014 г. в 03:10:38
Разработчики McSema выпустили исходный код этой программы, которая транслирует машинный код x86 в байткод LLVM. Подробнее о функциях этой замечательной программы можно почитать в презентации авторов Артёма Динабурга и Андрея Руэфа из компании Trail of Bits, в подборке демо, а также из видеоролика ниже.
С помощью статической трансляции инструкций x86 в байткод LLVM можно взять программу для x86 — и вернуть её обратно в то промежуточное состояние, которое было до компиляции итогового кода для платформы x86. Затем, из байткода LLVM можно, теоретически, скомпилировать код для другой аппаратной платформы.
К тому же, таким способом можно модифицировать существующий код перед повторной компиляцией, обфусцировать его или добавить другие опции.
Существует несколько подобных инструментов, но разработка Trail of Bits выгодно отличается поддержкой инструкций SSE и чисел с плавающей запятой. А теперь у неё ещё открыт исходный код.