DDOS防御专家-提供超强DDoS高防/CC防护/大流量清洗服务!
当前位置:主页 > DDOS防御 > 正文

DDOS高防服务_TCP高防_怎么办

01-12 DDOS防御

DDOS高防服务_TCP高防_怎么办

简介:因此,您已经为二进制文件安装了CodeSonar,ddos防御方法,设置了集线器,并成功地执行了分析。现在您可以面对面地看到大量的警告报告,这些报告是用这种被称为汇编代码的神秘语言编码的。你如何解释这些信息?你怎么知道CodeSonar告诉你的是什么?相关:用二进制分析提高质量和安全性二进制码声纳(视频)用二进制分析消除第三方代码中的漏洞为二进制结果解释CodeSonar让我们来看看二进制文件警告的典型CodeSonar。图1显示了CodeSonar在分析开源程序gnuchess时生成的警告报告。该警告描述了CodeSonar在gnucess可执行文件中发现的缓冲区溢出,并显示发生缓冲区溢出的相关代码的列表。 图1:CodeSonar生成的缓冲区溢出警告注意,这个视图完全由CodeSonar生成。实际的机器代码只是一堆人类难以理解的字节。CodeSonar重建了机器代码的汇编代码表示,它更适合人类消费。创建此视图的过程称为反汇编,它涉及许多任务,包括确定程序中哪些字节是代码,哪些是数据,如何将代码字节解码为单独的指令,如何命名函数入口点等内容,以及对这些名称的引用出现在单个指令和数据对象中。章节、地址和符号反汇编的显示包括几个功能。在左侧,CodeSonar包含部分和有效地址信息。例如:_文本:0000000000419350可执行的二进制文件分为不同的部分,ddos云防御云,如文本、数据、rodata和bss。这些部分中的每一部分通常包含特定种类的内容(例如,代码、读/写数据、只读数据或零初始化数据)。然后,操作系统在内存中的特定地址加载这些部分中的每一个。因此,节中的每个元素也会加载到特定的地址。从CodeSonar生成的反汇编视图中,我们可以看到函数return_append_str位于\u text部分,加载在地址0x419350。结构化函数的概念在二进制代码中并不存在。通过将函数入口点所在的地址作为目标,将控件从一个函数传递到另一个函数。地址用符号标记,以帮助链接器等工具理解如何将调用站点连接到被调用函数。CodeSonar试图在二进制文件中仍然存在这些符号时恢复这些符号。但如果没有,它将根据需要生成符号,以帮助读取反汇编列表。在这个例子中,我们可以看到几个这样的符号。例如,以下两个符号表示直接显示在列表中的地址:return_append_str返回位置4193B8第一个是从调试信息中恢复的。后者由声纳产生。此列表中还使用了一些符号,这些符号引用了未在该视图中直接列出的地址。其中包括以下符号:__唐克·斯特伦__马洛克__thunk_uu.memcpy公司这些符号表示函数返回_append_str调用以完成其任务的函数的地址。在本例中,这三个函数都是从DLL导入的函数。前缀"uuThunk_u"表示函数不是直接调用的,什么企业需要ddos防御,而是通过调解DLL接口的一小段代码来调用的。CodeSonar使用thunk这个词来指代这些小片段。局部变量和参数在return_append_str的函数入口点,有一个语句块,用于定义函数堆栈帧中局部变量和参数的位置。每个函数维护自己的堆栈帧,其中存储局部变量并传递参数。通常,当一个函数调用另一个函数时,ddos防御结果,它会将参数值推送到堆栈上。然后它调用函数调用,使返回地址也被保存到堆栈中。然后,被调用的函数会在这个空间上为它自己的局部变量添加。当被调用函数返回时,它会删除其局部变量(通过"弹出"堆栈),并且返回地址和参数在执行返回时被删除(或者可能由调用函数删除)。对局部变量和参数的大多数访问都是通过计算代表堆栈帧基(通常称为"帧基")的地址偏移量来执行的。帧基通常存储在寄存器中,因此访问变量或参数通常涉及取消引用添加到该寄存器的固定偏移量。在我们的示例中,我们看到以下局部变量声明:分机号码28=qword ptr-40这表明CodeSonar认为在堆栈上有一个8字节的局部变量("qword"),它位于距帧基偏移量-40处。我们还看到这一声明:return addr$=qword ptr 0这表示函数的返回地址大小也是8字节,位于距帧基的偏移量0处(即,它存储在堆栈帧的底部)在这个特定的例子中,堆栈框架中没有参数的声明。这是因为对于x64平台,调用约定规定前几个参数在寄存器中传递,而不是在堆栈中传递。由于这个例子是为Linux编译的,所以这些寄存器按顺序是rdi、rsi、rdx、rcx、r8和r9。在我们的示例中,return_append_str接受两个参数,它们存储在rdi和rsi中。解码指令最后,防御DDOS的方法,我们有说明,他们自己。对于x86和x64,CodeSonar在它生成的汇编代码中使用所谓的"Intel语法"。这意味着两个操作数指令通常具有以下形式:,例如:mov r13,rsi指示指令执行的操作。操作数表示源值的来源,操作数表示存储运算结果的位置。在某些指令中,操作数也用作操作中要使用的第二个源值。指令的部分的助记符通常非常明显,尽管有些可能会令人困惑。例如,"mov"指令将数据从操作数移动到操作数。"sub"指令从操作数中减去操作数,并将结果存储到操作数。如果有疑问,请查看您正在使用的特定处理器的说明手册。在我们的示例中,还有一些指令只有一个操作数。例如,"push"指令会导致堆栈增大,指令的操作数值存储在堆栈的新"顶部"(实际上是堆栈的底部,因为x64上的函数堆栈在地址空间中向下增长)。另一类1操作数指令是控制流指令组。通常,执行是按照指令序列一个接一个地执行。控制流指令通过使执行跳转到其他地方来改变此流。在我们的例子中,我们看到"jz"指令,它是一个条件跳转-它只在前面的算术运算计算出一个零结果值时执行跳转。我们还可以看到一些"呼叫"指令。它们通常将控制权转移到函数的入口点。当被调用函数返回时,控制流返回到"call"指令之后的指令。在本文的第2部分中,我们将介绍如何解释警告执行路径,以及如何使用它来发现错误的来源。

版权保护: 本文由 DDOS防御专家 原创,转载请保留链接: /ddos1/61063.html

DDoS防御专家简介孤之剑
国内资深白帽子二十人组成员,前BAT资深网络安全工程师,知名网络安全站点板块大神,每年提交Google及微软漏洞,原sina微博负载插件开发者,现在整体防御复合攻击长期接受1-4.7T攻击,CC防护自主开发指纹识别系统,可以做到99.9999%的无敌防御。
  • 文章总数
  • 8141241访问次数
  • 建站天数

    QQ客服

    400-0797-119

    X