zoukankan      html  css  js  c++  java
  • winpwn笔记

    1.seh相关数据结构

    传送门

    #define EXCEPTION_CHAIN_END ((struct _EXCEPTION_REGISTRATION_RECORD * POINTER_32)-1)
    
        typedef enum _EXCEPTION_DISPOSITION {
            ExceptionContinueExecution,  
            ExceptionContinueSearch,
            ExceptionNestedException,
            ExceptionCollidedUnwind
        } EXCEPTION_DISPOSITION;
    
        typedef struct _EXCEPTION_RECORD {
            DWORD ExceptionCode;
            DWORD ExceptionFlags;
            struct _EXCEPTION_RECORD *ExceptionRecord; 
            PVOID ExceptionAddress;
            DWORD NumberParameters;
            ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
        } EXCEPTION_RECORD;
    
        typedef EXCEPTION_RECORD *PEXCEPTION_RECORD;
    
        typedef
        EXCEPTION_DISPOSITION
        (*PEXCEPTION_ROUTINE) (
            IN struct _EXCEPTION_RECORD *ExceptionRecord,
            IN PVOID EstablisherFrame,
            IN OUT struct _CONTEXT *ContextRecord,
            IN OUT PVOID DispatcherContext
            );
    
        typedef struct _EXCEPTION_REGISTRATION_RECORD {
            //指向下一个 EXCEPTION_REGISTRATION_RECORD,由此构成一个异常注册信息链表。
            //链表中的最后一个结点会将 Next 置为 EXCEPTION_CHAIN_END,表示链表到此结束。
            struct _EXCEPTION_REGISTRATION_RECORD *Next;
            PEXCEPTION_ROUTINE Handler;  //指向异常处理函数
        } EXCEPTION_REGISTRATION_RECORD;
    
        typedef EXCEPTION_REGISTRATION_RECORD *PEXCEPTION_REGISTRATION_RECORD;
    typedef struct _EXCEPTION_REGISTRATION PEXCEPTION_REGISTRATION;
        struct _EXCEPTION_REGISTRATION{
            PEXCEPTION_POINTERS xpointers;
            struct _EXCEPTION_REGISTRATION *prev;
            void (*handler)(PEXCEPTION_RECORD, PEXCEPTION_REGISTRATION, PCONTEXT, PEXCEPTION_RECORD);
            struct scopetable_entry *scopetable;    //类型为 scopetable_entry 的数组
            int trylevel;          //数组下标,用来索引 scopetable 中的数组成员。
            int _ebp;    //包含该 _EXCEPTION_REGISTRATION 结构体的函数的栈帧指针。
                         //对于没有 FPO 优化过的函数,一开头通常有个 push ebp 的操作,_ebp 的值就是被压入的 ebp 的值
        };

     2.windows用户态堆

    windows各个版本堆保护措施的变化

    HeapCreate返回的handle是_heap结构体

     3.windbg的坑

    !heap 
    Invalid type information

    解决

    .symfix
    .reload /f
  • 相关阅读:
    P1197 [JSOI2008]星球大战[并查集+图论]
    P1955 [NOI2015]程序自动分析[离散化+并查集]
    取模运算律[简单数学]
    P1462 通往奥格瑞玛的道路[最短路+二分+堆优化]
    P1330 封锁阳光大学[搜索+染色]
    P1168 中位数[堆 优先队列]
    P2661 信息传递[最小环+边带权并查集]
    P1080 【NOIP 2012】 国王游戏[贪心+高精度]
    P2085 最小函数值[优先队列]
    【转】priority_queue的用法
  • 原文地址:https://www.cnblogs.com/snip3r/p/11820158.html
Copyright © 2011-2022 走看看