zoukankan      html  css  js  c++  java
  • Symbol

    Symbol能够包含以下的一些信息:

    • 全局变量
    • 局部变量
    • 函数名称, 参数
    • 结构体
    • 源代码行号

    有三种类型的Symbol

    • export symbols
      是dll本身的一部分. 比如ntdll.dll和kernel32.dll暴露出很大一部分他们的函数, 以便于他们能够像API一样地调用, 但是大多数的dll会有很少的exported symbols. 大致上, export symbol不包含函数的参数信息, 并且因为暴露的函数实在太少, 所以当你只有export symbol的时候不能确定栈信息的正确性.
    • pdb symbols (public symbols)
      包含一些基本的符号信息, 比如说函数名和全局变量, 但是, 并不是所有的函数名都会在public symbol中暴露出来. dll的开发者可以选择暴露什么到public symbol中, 他可以隐藏任何它觉得会暴露过多的实现信息的信息.
    • private pdb symbols (private symbols)
      包含上面列出的所有信息.

    在debugging的时候, symbols会跟各自的dll或者exe匹配起来, 匹配的桥梁是一个GUID. 这意味着, 哪怕在你的符号搜索路径下有多个版本的ntdll.pdb, debugger也会知道用哪一个与你当前版本的ntdll.dll进行匹配.

    symbol的路径包括以下几个地点:

    • .sympath
    • dll被加载的目录
    • 环境变量_NT_SYMBOL_PATH指定的目录

    摘译自:

    Why do I get weird function names on my stack? (a discussion on symbols)

    http://blogs.msdn.com/tess/archive/2005/12/05/why-do-i-get-weird-function-names-on-my-stack-a-discussion-on-symbols.aspx

  • 相关阅读:
    SQL手工注入方法
    wireshark常见分析
    JOY靶机
    GoldenEye-v1靶机
    homeless靶机
    注入
    DC-9靶机
    你哈
    数据库常用数据类型
    数据表的基本操作
  • 原文地址:https://www.cnblogs.com/awpatp/p/1680156.html
Copyright © 2011-2022 走看看