top
logo


Открыт код McSema, фреймворка для преобразования машинного кода в биткод LLVM PDF Печать E-mail
12.08.14 20:52

Компания Trail of Bits объявила об открытии под лицензией BSD исходных текстов фреймфорка McSema (MC-Semantics), предназначенного для анализа и преобразования машинного кода в промежуточный биткод LLVM (RISC-подобные виртуальные инструкции LLVM IR). Фреймворк поддерживает машинный код архитектуры x86, включая целочисленные вычисления, операции с плавающей запятой (FPU) и векторные инструкции (SSE). Проект разработан при поддержке Агентства по перспективным оборонным научно-исследовательским разработкам США (DARPA).

В качестве основных областей применения McSema отмечаются анализ и обратный инжиниринг программ. Например, становится возможным применение инструментов отладки и анализа (KLEE, PAGAI, LLBMC), поддерживающих LLVM IR. При этом преобразование машинного кода в промежуточное представление LLVM открывает такие потенциальные возможности, как обеспечение запуска на других аппаратных архитектурах и трансляция в более понятные для разбора исходные тексты на высокоуровневых языках. McSema также позволяет упростить сложные схемы трансформации кода с сохранением изначальной функциональности. Например, полученный биткод LLVM при помощи компилятора Emscripten можно преобразовать в представление на языке JavaScript, пригодное для выполнения внутри браузера.

В состав McSema входит несколько доступных для обособленного использования субпроектов, выполняющих функции восстановления управляющего потока, трансляции инструкций, разбора бинарных файлов и тестирования. На первом этапе при помощи программы bin_descend производится восстановления управляющего потока и построение графа структуры программы, определяющего базовые блоки кода и информацию о внешних вызовах с сохранением семантики инструкций оригинальной архитектуры. Граф с информацией об управляющем потоке сериализируется с использованием протокола Google Protocol Buffer и передаётся для обработки программе cfg_to_bc, которая выполняет преобразование инструкций и формирует биткод LLVM.

Из других открытых проектов, занимающихся решением задачи преобразования исполняемых файлов в промежуточное представление LLVM можно отметить Dagger, Fracture и libbeauty, но они пока не выходят за рамки экспериментальных разработок и подходят в для трансляции простейших программ.

  1. Главная ссылка к новости (https://news.ycombinator.com/item?id=814...)
  2. OpenNews: Новая версия набора компиляторов LLVM 3.4
  3. OpenNews: Представлен Portable Native Client для запуска платформонезависимых C/C++ программ в браузере
  4. OpenNews: Представлен Dagger, декомпилятор исполняемых файлов в промежуточное представление LLVM
Тип: Программы
Ключевые слова: llvm, binary, (найти похожие документы)
При перепечатке указание ссылки на opennet.ru обязательно
Реклама
id=adv>
  1.1, Аноним, 01:49, 13/08/2014 [ответить] [смотреть все]     [к модератору] +/
Так все же можно будет транслировать x86 в, к примеру, arm, или нет ... весь текст скрыт [показать]
 
  2.3, Аноним, 10:14, 13/08/2014 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  +3 +/
 
  3.9, Аноним, 13:22, 13/08/2014 [^] [ответить] [смотреть все]     [к модератору]  +1 +/
С оптимизационными возможностями llvm этот коэффициент улучшится очень сильно ... весь текст скрыт [показать]
 
  4.11, Аноним, 13:47, 13/08/2014 [^] [ответить] [смотреть все]     [к модератору]  +/
Спасибо, я видел как этот ваш LLVM работает Там скорее коэффициент глючности ул... весь текст скрыт [показать]
 
2.22, x0r, 22:57, 16/08/2014 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  +/ это вам к товарищу mamaih - он игры с x86 на arm портирует успешно
 
1.4, beerseller, 10:21, 13/08/2014 [ответить] [смотреть все]    [к модератору]  –1 +/ Если бы это работало, то по идее можно будет сделать какой скайп под x86_64
 
  2.5, Comrade_Flammpanzer, 10:54, 13/08/2014 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  +/
Это просто замечательно Да какой там скайп, вот бы хорошо всякие Middleware для... весь текст скрыт [показать] [показать ветку]
 
  3.12, Аноним, 13:49, 13/08/2014 [^] [ответить] [смотреть все]     [к модератору]  +3 +/
Вам так хочется чтобы проприетарные кидалова и бэкдоры работали и у вас Идея... весь текст скрыт [показать]
 
1.6, Аноним, 11:09, 13/08/2014 [ответить] [смотреть все]     [к модератору]  +/
Люди, имея на руках исходный код, чешут репу над тем, как заставить его работа... весь текст скрыт [показать]
 
  2.7, Аноним, 11:09, 13/08/2014 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  +/
 
  3.13, Аноним, 13:50, 13/08/2014 [^] [ответить] [смотреть все]     [к модератору]  +2 +/
А Фабрис уже давно свой транслятор сделал Без лишних пoнтов и маркетингового бу... весь текст скрыт [показать]
 
2.10, Аноним, 13:29, 13/08/2014 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  +/
Ну так люди и не должны писать код раз у них такое гoвно получается Код должны ... весь текст скрыт [показать] [показать ветку]
 
  3.18, freehck, 22:39, 13/08/2014 [^] [ответить] [смотреть все]    [к модератору]  +/
> Ну так люди и не должны писать код раз у них такое гoвно получается. Код должны писать программисты, так как при наличии минимальной квалификации он получается замечательно портабельным, тем более что усилий для этого прилагать почти не надо.

Вот хороший вопрос: минимальная квалификация - это какая?

image
 
1.8, Аноним, 11:13, 13/08/2014 [ответить] [смотреть все]     [к модератору]  +/
по сути это дизассемблер, а как известно дизассемблировать в автоматическом режи... весь текст скрыт [показать]
 
  2.14, Аноним, 13:51, 13/08/2014 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  –1 +/
Есть некая разница между технической трансляцией в код который сделает то же сам... весь текст скрыт [показать] [показать ветку]
 
  3.20, папа, 10:32, 14/08/2014 [^] [ответить] [смотреть все]    [к модератору]  –1 +/
Ошибаетесь. Проблема распознать где данные а где код - именно это IDA перекладывает на человека. Вообщем правильно будет конвертировать далеко не 100% программ
 
1.17, Аноним, 18:21, 13/08/2014 [ответить] [смотреть все]     [к модератору]  –1 +/
Ждем DirectX для свободных операционных систем ... весь текст скрыт [показать]
  1.19, Аноним, 07:42, 14/08/2014 [ответить] [смотреть все]     [к модератору]  +/
хм скачал сорцы, а оно под винду и на вход, судя по доке, берет только ви... весь текст скрыт [показать]
  1.21, Zenitarka, 16:36, 14/08/2014 [ответить] [смотреть все]    [к модератору]  +/ Прочитал "преобразование машинного кода в биткоин". :(
 
Ваш комментарий  

Read more http://www.opennet.ru/opennews/art.shtml?num=40375

 
Интересная статья? Поделись ей с другими:

bottom

 

Unreal Commander PfSense по русски Яндекс.Метрика