博文

目前显示的是 一月, 2019的博文

Immunity Debugger 打开就闪退的解决方法

    不知为何Immunity Debugger 一打开就闪退,搜到一个 方法 ,只要设置PYTHONPATH环境变量就可,例如PYTHONPATH="C:\Python27\DLLs;C:\Python27\Lib;C:\Python27\Lib\site-packages",重新打开即可正常运行。     仅作记录,没啥含量。

《0day 2》笔记

    windows中最重要的堆表有两种:空闲双向链表(Freelist)和快速单向链表Lookaside。快表从来不会发生堆块合并。     快表只有在精确匹配时才会分配,而空表有“找零钱”现象。     所有的释放块都链入堆表的末尾,分配的时候也先从堆表末尾拿。     调试态堆管理策略和常规堆管理策略有很大差异。      DWORD SHOOT的常用目标:     内存变量、代码逻辑、函数返回地址、攻击异常处理机制、函数指针、PEB中线程同步函数的入口地址(RtlEnterCriticalSection、RtlLeaveCriticalSection)。     异常处理流程:线程SEH异常处理函数,进程seh处理函数,系统默认异常处理程序(程序崩溃对话框)。     异常处理函数的第一轮调用用来尝试处理异常,第二轮的unwind调用往往执行释放资源等操作。     以下情况不会应用GS:     (1)函数不包括缓冲区;     (2)函数被定义为具有变量参数列表;     (3)函数使用无保护的关键字标记;     (4)函数在第一个语句中包含内嵌汇编代码;     (5)缓冲区不是8字节类型且大小不大于4个字节。     突破GS:     利用未被保护的内存     覆盖虚函数     攻击异常处理     同时替换栈中和.data中的cookie     SafeSEH     RtlIsValidHandler函数在以下情况允许异常处理函数执行:     (1)异常处理函数位于加载模块内存范围之外,DEP关闭。     (2)异常处理函数位于加载模块内存范围之内,相应模块未启用SafeSEH(安全SEH表为空),同时相应模块不是纯IL。     (3)异常处理函数位于加载模块内存范围之内,相应模块启用SafeSEH(安全SEH表不为空),异常处理函数地址包含在安全SEH表中。      不过有两种更为直接的方法可以突破SafeSEH:     (1)不攻击SEH,可以考虑覆盖返回地址或者虚函数表等信息。     (2)如果SEH的异常处理函数指针指向堆区,即使安全校验发现了SEH已经不可信,仍然会调用其已被修改过的异常处理函数。     DEP绕过:     (1)攻击未启用DEP的程序