5.3k 10 分钟

# [翻译] 从接到告警到发现驱动漏洞:Microsoft Defender ATP 检测出提权漏洞 -> 原文链接 随着 Microsoft 团队不断增强内核层的安全性、以及提升内核组件被利用的门槛,第三方开发的驱动渐渐成为了攻击者青睐的目标,同时第三方驱动也成为了漏洞分析的一个重要试验地。 一个签名的第三方驱动如果有一个漏洞,那么它可能会带来严重的影响:这个漏洞可能被攻击者利用,用来权限提升,或者用来过掉驱动签名验证。相对于用一个操作系统自身的 0day...
12k 21 分钟

In this article, I would write my own comprehension of the book, C++ Coding Standards, for following aims: Continuous study about design pattern, refactoring Give me some hints about software development when coming across difficulties Review what I wrote for Reminding what I should take care of #...
2.1k 4 分钟

# 起因 某一天开发完做测试的时候,发现测试程序没有输出日志。确定与新功能没关系后,决定上 windbg 一探究竟,最后定位的结果是垫片引擎和 ntdll 模块的锁之间形成了死锁关系。 接下来记录一下死锁的形成经历。 # 观察主线程状态 # ChildEBP RetAddr Args to Child 00 008fe8e0 775f57da 6be0c9ac 00000000 02c78f58 ntdll!NtWaitForAlertByThreadId+0xc (FPO: [2,0,0])01 008fe944 6bdddaa3 6be0c9ac 00000000 02c78f28...
4.6k 8 分钟

# 1 基类需要定义虚析构函数 根据开发场景,继承类有两种情况: 继承类是别人写的,那么继承类可能会有析构函数,如果调用以下代码,那么继承类的析构函数不会被调用: BaseClass* = new InheritedClass;delete...
19k 35 分钟

# LFH 原理解析 ​ 为了精确利用堆相关的漏洞,了解操作系统的堆管理方式是很重要的。这篇文章的主题是在 win7 的各种堆保护措施下,我们能实施哪些利用手段,获得 EIP 的控制权。 ​ 本篇文章将分析两种 win7 下可能利用的方式: 对_HEAP_ENTRY.SegmentOffset 的利用 其在 “Understanding the LFH”(以下简称 LFH paper, LFH 是 Low Fragmentation Heap 的缩写)中有描述; 对 FreeEntryOffset 的利用。 本文参考了 Understanding the LFH,由于 LFH...
4.1k 8 分钟

# VS Runtime (运行时) 库的介绍 运行时库提供了很多变量(包括常量),还有很多类函数,比如字符串处理、输入与输出等。它们可以被静态编译到可执行文件(EXE 或 DLL),也可以被动态加载。 详细的说明可参考 C runtime library (CRT) reference - Microsoft Docs。关于用到的库可参考 C runtime (CRT) and C++ Standard Library (STL) .lib files。 本文重点阐述运行时库在 MT 和 MD 之间的区别。 # 运行时库的区别 不管编译 DLL 还是 EXE,都可以在 VS...
1.9k 3 分钟

# 本文产生的原因 最近在用 VS 2019 来编译兼容 WinXP 的程序时,发现高版本 (14.29.xxxxx) 的 MSVC 的 runtime 代码部分不兼容 winXP。之后使用低版本(14.25.xxxxx)的 MSVC 就可以运行在 winXP 上,所以本文的目的是记录整个问题的解决工程,方便其他朋友参考。 以上方案解决的问题如下: 用 “Visual Studio 2017 - Windows XP (v141_xp)” 工具集,使用 14.29.xxxx 版本的 MSVC 编译程序,最后程序在 winXP 无法运行,报错 “无法定位程序输入点...
5.7k 10 分钟

这里浅谈一下 VMP、Safengine 和 Themida 的反虚拟机的分析过程,关于反调试下面会说下值得注意的地方。 VMP 的反调试请参考 https://bbs.pediy.com/thread-226455.htm,Safengine 和 Themida 的反调试与 VMP 差不多。 分析的 VMP 版本为 3.0.9,Themida 版本为 2.4.6.30,Safengine 不知道是什么版本了,程序是 32bit 。 关于 64bit 程序,反调试和反虚拟机都更简单。其中反调试只包含...
6.2k 11 分钟

# StackWalk64 (32 位) 栈回溯原理 # 目标 StackWalk64 是用于回溯栈的,32 位和 64 位皆可。本次目标为 StackWalk 如何回溯 32 位程序的栈 注: 本次分析集中于无符号文件,有符号信息的情况将略讲 64 位的栈回溯主要依赖程序的 Exception Directory 数据节,所以相对 32 位,64 位在栈回溯上不用考虑无符号文件 (pdb) 的问题,因此也不会出现类似 32 位的问题,比如跳过某一层的函数(在 32 位无符号文件的情况下)。 # 环境 本次分析以 dbghelp.dll, 版本为 10.0.18362.1139...