前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >B2R2:一套针对二进制代码分析的实用算法、函数以及工具集

B2R2:一套针对二进制代码分析的实用算法、函数以及工具集

作者头像
FB客服
发布2019-10-29 14:16:35
6650
发布2019-10-29 14:16:35
举报
文章被收录于专栏:FreeBufFreeBuf
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文档:【https://b2r2.org/APIDoc/】。

B2R2下载

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

代码语言:javascript
复制
git clone https://github.com/B2R2-org/B2R2.git

工具使用样例

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

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

代码语言:javascript
复制
mkdir DIRNAME

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

代码语言:javascript
复制
$ dotnet new console -lang F#

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

代码语言:javascript
复制
$ dotnet add package B2R2.FrontEnd

4、使用我们熟悉的编辑器修改Program.fs文件:

代码语言:javascript
复制
open B2R2open 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:

代码语言:javascript
复制
dotnet run

代码构建

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

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

代码语言:javascript
复制
make release

代码语言:javascript
复制
dotnet build -c Release

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

代码语言:javascript
复制
make

代码语言:javascript
复制
dotnet build

项目引用

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

@INPROCEEDINGS{jung:bar:2019,

代码语言:javascript
复制
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:【https://github.com/B2R2-org/B2R2

参考资料

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 工具特性
  • 依赖组件
  • API文档
  • B2R2下载
  • 工具使用样例
  • 代码构建
  • 项目引用
  • 项目地址
  • 参考资料
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档