手机上怎么买彩票双色球 微信上有人推荐买彩票 能合买彩票的平台 夫妻买彩票狂中30亿 买彩票心态 买彩票就买大乐透开奖结果 哪个平台买彩票安全吗 买彩票有买一个号的吗 怎么看走势图买彩票 如何在电脑上买彩票 美国几岁可以买彩票? 福彩工作人员买彩票 彩客网买彩票 能在微信上买彩票吗 怎么买彩票容易中

Carbon:交互式反汇编工具

来源:本站整理 作者:佚名 时间:2019-07-08 TAG: 我要投稿

Cerbero Suite是为x86/x64设计的一款交互式反汇编工具。最初的目的是为了让我们的用户能够检查内存转储中的代码以及shellcode。如今,市面上已有非常先进的反汇编工具,如IDA和Ghidra,在我看来尝试模仿其中的一种工具是没有意义的。这也是我设计该反汇编工具的原因,同时我?#37096;?#34385;了客户如何使用Cerbero Suite的问题。
Cerbero Suite被大量作为文件初始分类的工具使用。我依然记得使用W32Dasm的美好时光,并从中获取了很大的灵感。当然,W32Dasm已无法应对越来越复杂的情况。这就是为什么在Carbon的设计中,我试图将W32Dasm等工具的即时?#26434;?#26356;高级工具的灵活?#36234;?#21512;起来的原因。
特?#36234;?#32461;
Flat 反汇编视图
Carbon带有一个显示文件中所有指令的Flat 反汇编视图。我不排除将来可能会有图表视图,但它不是我优先考虑的事情。

递归反汇编
递归反汇编程序是解决代码被数据中断的情况所必需的。Carbon将尽可能的在较短时间内完成disassemble,并同时进行基本的分析工作。
速度
Carbon是多线程的,可以非常快速地处理大型的文件。这对于文件的初始分类非常有用。

以上是大约十?#31181;?#20869;对60 MB chrome DLL执行的分析。这是在虚拟机中运行的。未来的挑战将是保持速度,同时增加更多的分析段落。
x86/x64 支持
Carbon同时支持x86和x64代码。将来会支持更多架构。
?#23548;?#19978;,Carbon的设计?#24066;?#22312;相同的反汇编视图中混合架构。
不受限的数据库
一个项目在Carbon中可以包含无限个Carbon数据库。这意味着如果你正在分析包含10个可执行文件的Zip文件,那么这些文件中的每一个都可以拥有?#32422;?#30340;数据库。
不仅如此:单个文件?#37096;?#20197;有多个数据库,只需单击Carbon工具栏按钮或按“Ctrl+Alt+C”即可添?#26377;?#30340;Carbon数据库。

如果你对分析不满意,那么你可以通过右键单击相关的摘要条目或选择它并按“Del”轻松删除它。
脚本
你只需?#24863;蠵ython代码就可以加载和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?#37096;?#20197;轻松浏览和修改它。
Python 加载程序
在很早之前我就决定使用Python编写所有的文件加载程序。虽然这可能会使文件的加载速度稍慢(尽管不明显),但它?#24066;?#29992;户自定义加载程序并添加功能,从而提供了极大的灵活性。添?#26377;?#30340;文件加载程序也非常简单。
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

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.rliwo.live)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱[email protected],我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类?#35753;?/li>
        • 最近下载
        购买彩票权威网址
        手机上怎么买彩票双色球 微信上有人推荐买彩票 能合买彩票的平台 夫妻买彩票狂中30亿 买彩票心态 买彩票就买大乐透开奖结果 哪个平台买彩票安全吗 买彩票有买一个号的吗 怎么看走势图买彩票 如何在电脑上买彩票 美国几岁可以买彩票? 福彩工作人员买彩票 彩客网买彩票 能在微信上买彩票吗 怎么买彩票容易中
        农业银行股票行情 2007nba圣诞大战太阳vs湖人 酷喜乐彩色铅笔 全民突击pk用什么qq好 黄金农场作者闽南大员外 网球冠军数排名 76人有几个总冠军 海南体彩app不能提现 梦幻诛仙2官网 招财童子富贵吉祥手机壁纸