Cerbero Suite是为x86/x64设计的一款交互式反汇编工具。最初的目的是为了让我们的用户能够检查内存转储中的代码以及shellcode。如今,市面上已有非常先进的反汇编工具,如IDA和Ghidra,在我看来尝试模仿其中的一种工具是没有意义的。这也是我设计该反汇编工具的原因,同时我也考虑了客户如何使用Cerbero Suite的问题。

Cerbero Suite被大量作为文件初始分类的工具使用。我依然记得使用W32Dasm的美好时光,并从中获取了很大的灵感。当然,W32Dasm已无法应对越来越复杂的情况。这就是为什么在Carbon的设计中,我试图将W32Dasm等工具的即时性与更高级工具的灵活性结合起来的原因。

特性介绍

Flat 反汇编视图

Carbon带有一个显示文件中所有指令的Flat 反汇编视图。我不排除将来可能会有图表视图,但它不是我优先考虑的事情。

递归反汇编

递归反汇编程序是解决代码被数据中断的情况所必需的。Carbon将尽可能的在较短时间内完成disassemble,并同时进行基本的分析工作。

速度

Carbon是多线程的,可以非常快速地处理大型的文件。这对于文件的初始分类非常有用。

以上是大约十分钟内对60 MB chrome DLL执行的分析。这是在虚拟机中运行的。未来的挑战将是保持速度,同时增加更多的分析段落。

x86/x64 支持

Carbon同时支持x86和x64代码。将来会支持更多架构。

实际上,Carbon的设计允许在相同的反汇编视图中混合架构。

不受限的数据库

一个项目在Carbon中可以包含无限个Carbon数据库。这意味着如果你正在分析包含10个可执行文件的Zip文件,那么这些文件中的每一个都可以拥有自己的数据库。

不仅如此:单个文件也可以有多个数据库,只需单击Carbon工具栏按钮或按“Ctrl+Alt+C”即可添加新的Carbon数据库。

如果你对分析不满意,那么你可以通过右键单击相关的摘要条目或选择它并按“Del”轻松删除它。

脚本

你只需几行Python代码就可以加载和disassemble一个文件。s = createContainerFromFile(a)

obj = PEObject()

obj.Load(s)

c = Carbon()

c.setObject(obj, True)

if c.createDB(dbname) != CARBON_OK:

print("error: couldn't create DB")

return False

if c.load() != CARBON_OK:

print("error: couldn't load file")

return False

c.resumeAnalysis()

# wait for the analysis to finish...

分析完成后,我们可以修改和浏览其内部数据库的各个部分,或者我们可以创建一个视图并显示反汇编:ctx = proContext()

v = ctx.createView(ProView.Type_Carbon, "test")

ctx.addView(v, True)

v.setCarbon(c)

内部数据库使用SQLite,即使不使用SDK也可以轻松浏览和修改它。

Python 加载程序

在很早之前我就决定使用Python编写所有的文件加载程序。虽然这可能会使文件的加载速度稍慢(尽管不明显),但它允许用户自定义加载程序并添加功能,从而提供了极大的灵活性。添加新的文件加载程序也非常简单。

PE文件的整个加载程序大约有350行代码。这是原始文件的加载程序:from Pro.Carbon import *

class RawLoader(CarbonLoader):

def __init__(self):

super(RawLoader, self).__init__()

def load(self):

# get parameters

p = self.carbon().getParameters()

try:

arch = int(p.value("arch", str(CarbonType_I_x86)), 16)

except:

print("carbon error: invalid arch")

arch = CarbonType_I_x86

try:

base = int(p.value("base", "0"), 16)

except:

print("carbon error: invalid base address")

base = 0

# load

db = self.carbon().getDB()

obj = self.carbon().getObject()

# add region

e = caRegion()

e.def_type_id = arch

e.flags = caRegion.READ | caRegion.WRITE | caRegion.EXEC

e.start = base

e.end = e.start + obj.GetSize()

e.offset = 0

db.addRegion(e)

# don't disassemble automatically

db.setState(caMain.FINISHED)

return CARBON_OK

def newRawLoader():

return RawLoader()

一旦熟悉了SDK,添加新的加载器将会非常的轻松简单。

Raw/PE 加载程序

初始文件的支持是针对PE和raw文件的。

例如,这是一些反汇编的shellcode。

在内存 PEs 中

其中一个主要的功能是分析内存中的PE文件。

这是内存中PE的代码:

当然,反汇编仅限于未被分页的内存页面,因此可能存在一些空白。

我们对这个功能不是特别了解,后续该功能也将随着即将发布的版本进行相应扩展。

交叉引用

当然,没有一个像样的反汇编程序可以缺少交叉引用这项功能:

我们还可以从设置中选择我们想要查看的交叉引用数:

重命名

我们可以在代码中命名和重命名任何位置或函数(允许重复)。即使ERROR没有指向同一位置,我们也可能有多个带有“jmp ERROR”实例的方法。

生成代码/取消定义

我们可以通过按“C”将未定义的数据转换为代码,或者相反,按“U”将代码转换为未定义的数据。

在这里,我们向shellcode添加了一个新的Carbon数据库。正如你所看到的,它最初都是未定义的数据:

在第一个字节按“C”后,我们得到一些初始指令:

但是,正如我们所看到的,突出显示的跳转无效。通过“jmp”之前的“jne”,我们可以看到我们实际上在“jmp”指令之后跳转了一个字节。所以我们要做的是在“jmp”上按“U”,然后在地址0xA的字节上按“C”。

之后,在0xA再次按“C”:

现在,我们就可以正确分析shellcode了。

函数

我们可以在任何我们想要的位置定义和取消定义函数。

例外

已支持x64异常。

注释

添加注释最重要的功能之一。

已标记的位置

你也可以通过按“Alt+M”标记位置或通过“Ctrl+M”跳转到标记的位置。

清单列表

从“Ctrl+1”到“Ctrl+4”的快捷方式可以为你展示反汇编中的各种列表。

Ctrl+1将显示入口点列表:

Ctrl+2显示函数列表:

Ctrl+3显示导入列表:

Ctrl+4显示导出列表:

字符串

可以通过按“Ctrl+5”创建:

一旦我们跳转到一个字符串,我们就可以检查代码中使用它的位置:

反汇编本身将尝试识别字符串,并在适当时将它们显示为自生成的注释:

集成

我们已经将Carbon很好地融入到了Cerbero Suite的整个逻辑中。Carbon数据库保存在Cerbero Suite项目中,就像文件分析的任何其他部分一样。

虽然Carbon已经为标记的位置提供了支持,但没有什么可以阻止你使用书签来标记位置并跳回到它们。区别在于标记的位置特定于单个Carbon数据库,而书签可以跨数据库和不同的文件。

主题

一个好的主题同样非常的重要,至少对我而言是这样的。你可以在设置中切换颜色主题。第一个版本包含以下四个主题。

Light:

Classic:

Iceberg:

Dasm:

后续也将添加更多的颜色主体,敬请期待!

,FB小编secist编译,转载请注明来自FreeBuf.COM

交互式反汇编器 linux,Carbon:交互式反汇编工具相关推荐

  1. 交互式反汇编器专业版IDA Pro的一点介绍

    1.IDA的安装和版本 什么是IDA? IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,交叉Windows或Linux WinCE MacOS平台主机来分析程序, 被公认为最好的花钱可以 ...

  2. Linux下 可视化 反汇编工具 EDB 基本操作知识

    自己在上网搜edb的操作姿势的时候发现这方面的资料有点少,下面总结一下自己摸索出来的edb操作姿势: EDB操作基础知识:首先点击运行,这时程序会运行前面的初始化函数到main,此时可以开始单步调试. ...

  3. 世界顶级的交互式反汇编工具——ida的使用详解

    ida是什么 IDA Pro是一款世界顶级的交互式反汇编工具,IDA Pro全名Interactive Disassembler Professional(交互式反汇编器专业版),是Hex-Rays公 ...

  4. Linux 反汇编工具,逆向与反汇编工具

    逆向与反汇编工具 了解反汇编的一些背景知识后,再深入学习IDA Pro之前,介绍其他一些用于二进制文件的逆向工程工具,会对我们学习有所帮助.这些工具大多在IDA之前发布,并且仍然可用于快速分析二进制文 ...

  5. (转)逆向与反汇编工具

    第 1 章           逆向与反汇编工具 了解反汇编的一些背景知识后,再深入学习IDA Pro之前,介绍其他一些用于二进制文件的逆向工程工具,会对我们学习有所帮助.这些工具大多在IDA之前发布 ...

  6. c语言反汇编工具,PVDasm 反汇编工具

    Proview (a.k.a PVDasm) Disassembler, 唯冠 (又名 PVDasm) 反汇编器,PVDasm 是自由. 互动. 适用于多种 CPU (英特尔 80 x 86 / Ch ...

  7. linux .o 反编译,odjdump的使用(Linux反汇编工具)

    odjdump的使用(Linux反汇编工具) 概述: objdump有点象那个快速查看之类的工具,就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息.对于一般只想让自己程序跑起来的程序员 ...

  8. Linux shell 交互式编程、TCL/TK 和 Expect 编译与安装、expect 编程

    以下文章资源都来源于网络,保留原作者的一切权利: Expect 被用来进行一些需要进行交互是shell 编程的,比如完成ssh 自动登录,就可以使用 expect 编程来实现 1,获取原始的tcl源码 ...

  9. linux静态反汇编工具,27款反汇编/调试器/静态和动态分析工具

    原标题:27款反汇编/调试器/静态和动态分析工具 本文从github上收集了27款实用的反汇编.调试器.静态和动态分析工具,文中的工具在<Awesome Windows Exploitation ...

  10. linux shell用户交互,鱼 - 一个明智的和用户友好的交互式shell为Linux

    友好的交互式shell被称为和简称FISH是UNIX和类UNIX操作系统的壳. 它是一种独特而新颖的命令行环境与一些有益的改进. 鱼的设计与任何其他的shell,比如bash或者zsh来工作. 不像在 ...

最新文章

  1. 代数系统思维导图_线性代数思维导图专题
  2. shell脚本 - 快速到达目录
  3. linux下的makefile编程
  4. HDU2888(二维RMQ)
  5. 人工智能已经迫在眉睫_创意计算机已经迫在眉睫
  6. ASP.NET学习笔记之操作过滤器
  7. Qt中线程的简单使用
  8. 向贵人讨教,实现共赢
  9. CSDN专访EnableQ在线调查引擎创作团队—软件是为用户而设计的,不是为程序员使用的
  10. Python nii文件转成tiff文件 以及遍历文件夹
  11. 在线思维导图制作技巧汇总:超简单思维导图绘制方法
  12. vue3 ts版本深度拷贝功能推荐ts-deepmerge
  13. mysql修改frm,MySQL 修改.frm文件来更新字段
  14. Python操作网页
  15. Revit二次开发——引用dynamo中的几何库
  16. python调整图片大小reshape_将不同大小的图像调整为28x28图像并将其转换为一个csvfi...
  17. 基于matlab的低秩结构重构算法仿真实现,对比ALM,IT,APG,ADMM
  18. Bootstarp未读消息铃铛
  19. android 组件可见,android界面控件可见性方法setVisibility()3个可选参数(visible,invisible,gone)的区别...
  20. MySQL中CREATE DATABASE和CREATE SCHEMA区别

热门文章

  1. html 如何播放 dat音频,如何打开dat音频文件,教您如何打开dat音频文件
  2. 性能测试流程(超级详细)
  3. 这几个垂直类小众导航网站,你绝对不会想错过
  4. 微信小程序实现使用百度云 人脸录入人脸识别功能
  5. CMDN创新应用推荐:搜狗号码通
  6. 关于卸载流氓软件,自己试错的一些结论
  7. 「标签管理」用数据管理思维去管理你的日常电子化资料、文件、笔记等
  8. excel 连接 mysql_Excel 数据库连接
  9. 印象笔记的插件在chrome使用问题
  10. 一些压制视频参数记录