B2R2 - это набор полезных алгоритмов, функций и инструментов для бинарного анализа, написанный исключительно на языке F # (в .NET - это чисто управляемый код).
B2R2 был назван в честь
Ссылка скрыта от гостей
, известного вымышленного робота, появившегося в «Звездных войнах». На самом деле исходное имя B2R2 было B2-R2, но мы решили использовать вместо него имя B2R2, потому что. NET не допускает тире (-) в идентификаторах (или пространствах имен).Название по существу представляет «двоичный» или «два»: сам «двоичный» в любом случае означает «два» состояния. «B» и «2» означают «бинарный», а «R» обозначает реверс.
B2R2
- B2R2 удобен для анализа: он написан на языке F #, который предоставляет все синтаксические возможности для написания программных анализаторов, такие как сопоставление с образцом, алгебраические типы данных и т. Д.
- B2R2 быстр: у него есть быстрый и эффективный интерфейсный движок для бинарного анализа, который написан исключительно функционально. Поэтому он, естественно, поддерживает чистый параллелизм для двоичной разборки, подъема и оптимизации ИК.
- С B2R2 легко играть: для B2R2 абсолютно нет ада зависимостей, потому что это полностью управляемая библиотека. Все, что вам нужно сделать, это установить
Ссылка скрыта от гостей, и вы готовы к работе! Встроенная поддержкаСсылка скрыта от гостей- еще один плюс!
- B2R2 не зависит от операционной системы: он работает на Linux, Mac, Windows и т. Д., Пока ядро .NET поддерживает его.
- B2R2 совместим: он не привязан к конкретному языку. Теоретически вы можете использовать API B2R2 с любыми
Ссылка скрыта от гостей.
В настоящее время мы фокусируемся на интерфейсе бинарного анализа, который включает в себя двоичный анализатор, анализатор и оптимизатор. B2R2 изначально поддерживает параллельный подъем, что является новой техникой, введенной нами в NDSS Bar 2019 года. Пожалуйста, обратитесь к нашей статье для более подробной информации о технике, а также о наших дизайнерских решениях. У нас также есть свои собственные инструменты, такие как символический исполнитель, но мы пока не планируем открывать их. Тем не менее, B2R2 включает в себя несколько полезных функций среднего и внутреннего уровня, таких как компиляция цепочки ROP, построение CFG, автоматическое рисование графиков и т. Д. B2R2 также поставляется с простой утилитой командной строки, мы вызываем BinExplorer, которая может помочь исследовать такие функции с использованием простогоинтерфейса
Ссылка скрыта от гостей
.Зависимости
B2R2 опирается на небольшой набор внешних библиотек .NET, и наш принцип разработки заключается в использовании минимального количества библиотек. Ниже приведен список библиотек, которые мы используем.
-
Ссылка скрыта от гостей
-
Ссылка скрыта от гостей
-
Ссылка скрыта от гостей
В настоящее время мы используем docfx для создания нашей документации:
Ссылка скрыта от гостей
Пример
Давайте попробуем использовать API B2R2.
- Сначала мы создаем пустой каталог DIRNAME:
Код:mkdir DIRNAME
- Затем мы создаем пустой консольный проект с dotnetкомандной строкой:
Код:$ dotnet new console -lang F#
- Добавьте в проект наш самородный пакет B2R2.FrontEnd:
Код:$ dotnet add package B2R2.FrontEnd
- Измените файл Program.fs в любимом редакторе следующим образом:
Код:open B2R2 open B2R2.FrontEnd
Код:[<EntryPoint>] let main argv = let isa = ISA.OfString "amd64" let bytes = [| 0x65uy; 0xffuy; 0x15uy; 0x10uy; 0x00uy; 0x00uy; 0x00uy |] let handler = BinHandler.Init (isa, bytes) let ins = BinHandler.ParseInstr handler 0UL ins.Translate handler.TranslationContext |> printfn "%A" 0
- Затем мы просто запустим его, набрав: dotnet run. Вы сможете увидеть снятые IR-выражения с вашей консоли. Вот так! Вы только что сняли инструкцию Intel с помощью всего нескольких строк F# кода!
B2R2 - это весело и легко. Все, что вам нужно сделать, это установить .NET Core SDK 3.0 или выше. Да, вот и все!
- Чтобы собрать B2R2 в режиме выпуска, введите make release или dotnet build -c Release в корне источника.
- Чтобы построить B2R2 в режиме отладки, введите make или dotnet build в корне источника.
Ссылка скрыта от гостей
.Зачем изобретать колесо ?
Существует много других замечательных инструментов, но мы хотели создать функционально - первую платформу двоичного
Ссылка скрыта от гостей
которую можно безболезненно устанавливать и которая может работать на любой платформе без каких-либо хлопот. B2R2 находится в зачаточном этапе, но мы считаем что обеспечивает богатый набор библиотечных функций для бинарного анализа. У этого также есть сильный фронт, который легко приспосабливаем и расширяем! В настоящее время он надежно поддерживает x86 и x86-64, что означает, что мы тщательно их протестировали; и он частично поддерживает ARMv7 (и Thumb), ARMv8, MIPS32 и MIPS64, что означает, что они работают, но мы еще не проверили их тщательно.Возможности, которые будут добавлены ?
Ниже приведен список функций, которые мы планируем добавить в будущем: список полностью неполон. Некоторые из них находятся в стадии разработки, но мы с нетерпением ждем вашего вклада! Не стесняйтесь написать PR (Pull Requst), убедившись, что вы прочитали наше руководство по вкладу.
- Внедрить алгоритмы восстановления CFG.
- Реализуйте
Ссылка скрыта от гостейдля поддерживаемых в настоящее время ISA, используя комбинатор синтаксического анализа.
- Поддержка операций с плавающей запятой.
- Поддержка большего количества архитектур, таких как PPC.
Ссылка скрыта от гостей