Можно ли преобразовать объектный код обратно в LLVM IR? - PullRequest
0 голосов
/ 09 апреля 2019

Код объекта можно разобрать на языке ассемблера. Есть ли способ превратить объектный код или исполняемый файл в LLVM IR?

1 Ответ

2 голосов
/ 09 апреля 2019

Я имею в виду, да, вы можете конвертировать машинный язык в LLVM IR.IR является полным по Тьюрингу, что означает, что он может вычислять то, что может вычислять какая-либо другая система, полная по Тьюрингу.В худшем случае вы могли бы иметь представление LLVM IR эмулятора x86 и просто выполнить машинный код, заданный в виде строки.

Но ваш вопрос специально задавался о преобразовании «назад» в IR, в смыслеИК результат аналогичен исходному ИК.И ответ - нет, не совсем.Код машинного языка будет результатом различных этапов оптимизации, и нет способа определить, как код выглядел до этой оптимизации.(Стрелок упомянул McSema в комментарии, который делает все возможное, но в целом результаты будут очень отличаться от исходного кода.)

...