Cerbero Suite是为x86/x64设计方案的一款互动式反汇编专用工具。最开始的目地是为了更好地使我们的客户可以查验运行内存转储中的编码及其shellcode。现如今,目前市面上现有十分优秀的反汇编专用工具,如IDA和Ghidra,我认为试着效仿在其中的一种专用工具是没有意义的。这也就是我设计方案该反汇编专用工具的缘故,另外因为我考虑到了顾客怎么使用Cerbero Suite的难题。
Cerbero Suite被很多做为文件原始归类的专用工具应用。我依旧还记得应用W33Da *** 的快乐时光,并从这当中获得了非常大的设计灵感。自然,W33Da *** 已没法解决愈来愈繁杂的状况。这就是为啥Carbon的设计方案中,我尝试将W33Da *** 等专用工具的及时性与更高級专用工具的协调能力融合起來的缘故。
特点详细介绍
Flat 反汇编视图
Carbon含有一个表明文件中全部命令的Flat 反汇编视图。我不会清除未来很有可能会出现数据图表视图,但它并不是我优先选择考虑到的事儿。
递归反汇编
递归反汇编程序流程是处理编码被数据信息终断的状况所必不可少的。Carbon将尽量的在较短期内内进行disassemble,并另外开展基础的剖析工作中。
速率
Carbon是线程同步的,能够十分迅速地解决大中型的文件。这针对文件的原始归类十分有效。
之上是大概十分钟内对60 MB chrome DLL实行的剖析。它是在vm虚拟机中运作的。将来的挑戰将是维持速率,另外提升大量的剖析文章段落。
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 *** ysis 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
. 过去就算预防一些疾病也没有多大的把握,但是疫苗的出现就像给大家种上了安心丸,好像疫苗就是那抵御外敌的战士。最近流感的爆发,很多的家长也想请战士帮忙了,但是接种流感疫苗到底要多少钱呢?自费的流感疫...
不要钱两个字房产电商公司取名名字大全打分 年轮房产电商公司 89.60分 专人房产电商公司 10.68分 乱弹房产电商公司 78.3分 剪报房产电商公司 33.30分...
含羞草有毒吗(含羞草怎么会羞涩)含羞草是一种十分尤其的绿色植物,只需大家拿手轻轻地一碰就并拢,就好像羞涩的女孩一样。因此 都多的爱花之人都喜爱在阳台养上那么一株含羞草,没事儿就要逗一逗它,从这当中获得...
为了供给上下文,实践上会将其分化成各个小框,咱们需求将它包装在所谓的视图中。 这些数据视图能够增加类型化的数组,而且能够运用许多不同类型的类型数组。 体系或设备装备不妥用网线将网关WAN口与笔记本相连...
近日,江西龙虎山景区,74岁大爷徐金龙带着一箱丝巾和饰品为自己70岁的妻子拍照。据大爷称,妻子年轻时就爱美,也爱出去玩,可惜工作忙没时间。如今两人都退休在家,就想多带妻子出来走走。...
编辑导读:数据埋点,对付产物迭代而言,有很重要的指向意义。可是实际应用中,大大都产物新人对数据埋点都没有详细实操,只有基本的相识。本文作者依据自身事情实践,从埋点思路、埋点设计、埋点文档名目和迭代等四...