| |
Компания 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, но они пока не выходят за рамки экспериментальных разработок и подходят в для трансляции простейших программ.
|
|
- Главная ссылка к новости (https://news.ycombinator.com/item?id=814...)
- OpenNews: Новая версия набора компиляторов LLVM 3.4
- OpenNews: Представлен Portable Native Client для запуска платформонезависимых C/C++ программ в браузере
- OpenNews: Представлен Dagger, декомпилятор исполняемых файлов в промежуточное представление LLVM
| Тип: Программы | Ключевые слова: llvm, binary, (найти похожие документы) | При перепечатке указание ссылки на opennet.ru обязательно | Реклама |
id=adv>
| |
| 2.22, x0r, 22:57, 16/08/2014 [ ^] [ ответить] [ смотреть все] [ показать ветку] [ к модератору] +/–
это вам к товарищу mamaih - он игры с x86 на arm портирует успешно
1.4, beerseller, 10:21, 13/08/2014 [ответить] [смотреть все] [к модератору] –1 +/–
Если бы это работало, то по идее можно будет сделать какой скайп под x86_64
1.6, Аноним, 11:09, 13/08/2014 [ответить] [смотреть все] [к модератору] +/–Люди, имея на руках исходный код, чешут репу над тем, как заставить его работа... весь текст скрыт [ показать]
1.8, Аноним, 11:13, 13/08/2014 [ответить] [смотреть все] [к модератору] +/–по сути это дизассемблер, а как известно дизассемблировать в автоматическом режи... весь текст скрыт [ показать]
|
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 |