Перевод машинного кода в LLVM IR (разборка/сборка X86_64.X86. ARM в бит-код LLVM)
Я хотел бы перевести исполняемые файлы X86_64, x86, ARM в LLVM IR (разборку).
Какое решение вы предлагаете?
Ответы
Ответ 1
Попробуйте использовать инструмент RevGen, разработанный в рамках проекта S2E. Это позволяет преобразовывать двоичные файлы x86 в LLVM IR. Исходный код может быть получен из ветки Revgen GIT-репозитория, доступной по URL https://dslabgit.epfl.ch/git/s2e/s2e.git.
Ответ 2
Что касается инструмента RevGen, упомянутого @bsa2000, эта последняя статья Система двоичного анализа и переписывания на основе промежуточного представления на уровне компилятора указал на некоторые ограничения в S2E и Revinc.
Я вытаскиваю их здесь.
Ответ 3
mcsema - это бинарный подъемник качества производства. Он принимает x86 и x86-64 и статически "поднимает" его на LLVM IR. Он активно поддерживается, BSD лицензирован и имеет обширные тесты и документацию.
https://github.com/trailofbits/mcsema
Ответ 4
Я сомневаюсь, что будет универсальное решение (подумайте об косвенных ветвях и т.д.), LLVM IR намного "более высокий уровень", чем любой ассемблер. Хотя это можно перевести на основе ВВ. Возможно, вы захотите проверить проекты llvm-qemu и libcpu среди других.
Ответ 5
Существует новый проект, находящийся на ранних этапах, libbeauty
:
https://github.com/jcdutton/libbeauty
Статья о проекте: Libbeauty: еще один инструмент обратного проектирования, 24 декабря 2013 года, Майкл Ларабель - http://www.phoronix.com/scan.php?page=news_item&px=MTU1MTU
Теперь он поддерживает только подмножество x86_64
. Одна из целей проекта - это возможность скомпилировать сгенерированный LLVM IR обратно в сборку, чтобы получить двоичный код с одинаковой функциональностью.
Ответ 6
Просто опубликуйте несколько ссылок на перевод ARM-двоичного кода на LLVM IR:
разоружить - создать двоичный файл для llvm и дизассемблера
https://code.google.com/p/disarm/
Однако я не пробовал, поэтому не уверен в его качестве и стабильности. Кто-нибудь еще может опубликовать дополнительную информацию об этом проекте?