B2R2:一套针对二进制代码分析的实用算法、函数以及工具集
2019-10-26 16:00:28 Author: www.freebuf.com(查看原文) 阅读量:205 收藏

B2R2

B2R2是一套针对二进制代码分析的实用算法、函数以及工具集,B2R2采用纯F#(.NET)开发,B2R2原名为B2-R2,其命名引用的是R2-D2,因为.NET不允许在标识符或命名空间中使用字符“-”,因此我们将该项目名米给B2R2。其中,B代表Binary,B2即二进制代码,R指的是逆向分析Reverse。

工具特性

1、B2R2是一款采用F#开发的“分析友好型”工具,它可以为研究人员开发彻骨分析工具提供语法上的便利,例如模式匹配和代数数据类型等等。

2、B2R2运行速度非常快,它带有一个快速高效的前端引擎,可用于对二进制代码进行分析,该引擎纯粹以实现功能性为目的进行开发,因此它自然支持二进制代码反编译,提升和并行优化。

3、B2R2简单易用,并且没有绝对的依赖组件,因为它本身就是一个完全托管的库,我们只需要安装.NET核心SDK即可。

4、B2R2与操作系统无关,它只需要.NET核心的支持,即可在Linux、macOS和Windows等操作系统平台上运行。

5、B2R2可与其他组件协同工作,以为它没有与任何其他语言绑定,我们可以在任何支持命令行的其他语言环境下使用B2R2。

依赖组件

B2R2只依赖于一小部分的外部.NET库,这也符合我们设计的尽量实现最少依赖库的标准。下面给出的是B2R2所需的依赖库列表:

1、System.Reflection.Metadata

2、Microsoft.FSharpLu.Json

3、FParsec

API文档

我们当前使用了docfx来生成B2R2的API文档:【点我获取】。

B2R2下载

研究人员可使用Git命令直接将项目代码从GitHub库克隆至本地:

git clone https://github.com/B2R2-org/B2R2.git 

工具使用样例

接下来,我们演示一下如何使用B2R2的API接口。

1、首先,我们需要生成一个名为“DIRNAME”的空目录:

mkdir DIRNAME

2、然后,使用dotnet命令在命令行工具中常见一个空的终端项目:

$ dotnet new console -lang F#

3、将B2R2.FrontEnd包添加进项目中:

$ dotnet add package B2R2.FrontEnd

4、使用我们熟悉的编辑器修改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

5、最后,使用下列命令运行B2R2:

dotnet run

代码构建

构建B2R2项目其实非常简单,我们只需要安装.NET核心SDK 3.0以及上述依赖组件即可。

1、以发布模式构建B2R2,可直接在项目根目录路径下运行下列命令:

make release

dotnet build -c Release

2、以调试模式构建B2R2,可直接在项目根目录路径下运行下列命令:

make

dotnet build

项目引用

如果你想要在自己的研究项目中使用B2R2的话,请在项目中添加下列信息:

@INPROCEEDINGS{jung:bar:2019,

author = {Minkyu Jung and Soomin Kim and HyungSeok Han and Jaeseung Choi and Sang Kil Cha},

title = {{B2R2}: Building an Efficient Front-End for Binary Analysis},

booktitle = {Proceedings of the NDSS Workshop on Binary Analysis Research},

year = 2019

}

项目地址

B2R2:【GitHub传送门

参考资料

1、http://fsharp.org/

2、https://b2r2.org/APIDoc/

3、https://github.com/B2R2-org/B2R2/blob/master/CONTRIBUTING.md

4、http://csrc.kaist.ac.kr/

* 参考来源:tarnish,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM


文章来源: https://www.freebuf.com/articles/system/216110.html
如有侵权请联系:admin#unsafe.sh