自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 《Windows核心编程》之“同步IO和异步IO”

本文主要通过一张思维导图来总结Windows编程中关于设备IO的相关知识,其中,“IO Completion Port”后面会单独用一个系列文章进行介绍,在此不再展开。

2016-08-29 14:33:34 587

原创 《Windows核心编程》之“堆”

本文我将用一张思维导图来总结“堆”相关的知识点。

2016-08-26 15:50:42 608

原创 《Windows核心编程》之“内核对象同步”

本文主要总结如何使用“kernel object”来实现线程间的同步。与用户模式下的同步方法相比,内核对象同步的效率会相对要低一些(需要切换到内核模式下),但是,它可以跨进程使用,而且在编程上也更简单。    除了总结知识点,我还分析了内核对象同步实现的Queue.exe的示例代码,并与上一篇的Queue.exe进行了简单对比。最后,我将介绍微软提供的一种诊断死锁问题的手段:Wait Chai

2016-08-26 11:01:59 652

原创 《Windows核心编程》之“用户模式同步”

本文我将用一张思维导图来总结“用户模式下线程同步”的各个知识点,然后再分析书中给出的“Queue”示例代码。Queue示例代码分析:一、功能简介    该示例实现了一个简单的“client/server”模式的“producer .vs consumer”案例。待保护资源是 一个全局queue,client端有四个writer线程向该queue发送入队request,并

2016-08-24 11:19:52 500

原创 《Windows核心编程》之“线程调度和优先级”

  “线程调度和优先级”这一章主要讲解 Windows 的线程调度的机制,特别是线程上下文切换(context switch)。由于 Windows 并非“实时操作系统”,在线程调度方面留给程序员操作的空间很少,因此,这一章对实际编程的帮助并不大,如果仅仅是想了解一些基本原理,建议通读一遍即可,或者仅阅读前面 4 个小节。 本章最重要的一个概念就是“线程上下文切换”(context sw...

2016-08-23 11:04:14 794

原创 《Windows核心编程》之“线程基础”

  本文主要介绍线程的一些基础知识,包括:线程内核对象、线程的创建和退出、线程的初始化和线程上下文等,可以用下面这张思维导图来总结。一、线程VS进程 内核对象 地址空间 进程 进程内核对象 进程地址空间 线程 线程内核对象 线程栈 进程是线程的容器,线程依赖于进程的上下文。 线程要在某个进程的地址空间内执行代码和处理数据。...

2016-08-22 16:43:59 420

原创 《Windows核心编程》之“进程”

    本文我尝试用一张思维导图来总结我对《Windows核心编程》CH4“进程”这一章内容的理解,然后针对一些感兴趣的内容展开来谈谈我的理解。建议大家在阅读这一章时,认真阅读示例程序“ProcessInfo.exe”,它是一个迷你版的“procexp.exe”,通过对“ProcessInfo.exe”的学习,可以加深对 procexp.exe 的认识和掌握高级用法。 一、知识图谱...

2016-08-22 14:08:59 1131

原创 《Windows核心编程》之“内核对象”

    内核对象(Kernel Object)是Winodws操作系统中最核心的一个概念,本章主要介绍“内核对象”整个抽象概念的共性,而不针对具体的某个内核对象。    这一章介绍了“内核对象”的公共属性:usage count(使用计数) 和 Security Descriptor (SD,安全描述符)、进程的内核对象句柄、内核对象的命名空间和跨进程共享内核对象。       要理解本章...

2016-08-19 11:17:38 2990

原创 《Windows核心编程》之“SEH”

SEH,Structured Exception Handling(结构化异常处理),包括两种类型:一是Termination Handling,即终止处理;另一个是Exception Handling。本文主要介绍Termination Handling。一、Advantages of Termination

2016-08-18 11:14:41 1107

原创 《Windows核心编程》之“API Hooking”(二)

前一篇主要讲“API Hooking”的原理——修改IAT,这一篇主要讲代码实现和调试。一、修改IAT    我们要修改IAT,首先要了解导入段的数据结构和操作API。1,IMAGE_IMPORT_DESCRIPTOR    在winnt.h文件中,定义了这么一个数据结构来描述导入段中的信息单元typedef struct _IMAGE_IMPORT_DESCRIPTOR {

2016-08-17 16:19:34 1092

原创 《Windows核心编程》之“API Hooking”(一)

《Windows核心编程》中介绍了两种API Hooking的方法 —— “Overwritting Code”(代码覆盖)和“API Hooking by Manipulating a Module's Import Section”(修改导入段)。本文在以学习这两种API Hooking为目的,介绍相关的内容,包括:API Hooking的作用、导入段的获取和修改、detours库、使用WM_

2016-08-17 11:11:33 2166

原创 《Windows核心编程》之“Windows挂钩”(三)

本文主要结合之前两篇介绍的“Windows挂钩”知识,讲解《Windows核心编程》一书中的“DIPS"示例程序和我的调试经验。一、程序功能介绍1,功能需求    DIPS.exe应用程序使用了Windows Hook来将一个DLL注入到Explorer.exe的地址空间中,并在内部给桌面的ListView控件发送LVM_GETITEM和LVM_GETITEMPOSITON消息

2016-08-12 14:56:21 1353

原创 《Windows核心编程》之“Windows挂钩”(二)

本文接上篇,继续探讨“Windows挂钩”,包括:跨进程的“窗口子类化”,使用Windows Hook注入DLL,跨进程窗口通讯,进程间共享内存和示例程序调试总结。

2016-08-11 16:54:18 997

原创 《Windows核心编程》之“Windows挂钩”(一)

《Windows核心编程》一书中介绍了一种针对带窗口的Windows应用程序的“DLL注入”的方法——Windows Hook(窗口挂钩)。本系列文章将探讨这种技术的原理和分享我的实验心得。

2016-08-11 15:27:27 2492

原创 《Windows核心编程》之”DLL注入“(二)

本文接上一篇,开始介绍"DLL注入"的实现。一、DLL注入的方法        DLL注入的方法有很多,《Windows核心编程》中介绍了如下几种:1)使用注册表来注入DLL;2)使用Windows挂钩来注入DLL;3)使用远程线程来注入DLL;4)使用木马DLL来注入DLL;5)把DLL作为调试器来注入DLL;6)使用CreateProcess来注入DLL;

2016-08-09 16:55:22 3512

原创 《Windows核心编程》之“DLL注入”(一)

一、背景知识1,Private Address Space        在Windows操作系统中,每个进程都有自己私有的地址空间(private address space)。各个进程的地址空间(user partition)是相互独立的,尽管它们的地址编码范围相同(0x00010000 ~ 0x7FFEFFFF),但是它们对应虚拟地址的后备物理存储器一般都不相同(只读模式下的Imag

2016-08-09 16:29:26 7533

原创 《Windows核心编程》之“ASLR .vs Rebasing dlls”

《Windows核心编程》第14章最后部分提到了“ASLR - Address Sppace Layout Randomization,地址空间分布随机化”特性。该特性允许Windows在第一载入一个DLL时,为它选择一个不同的地址,而不是它的PE文件中指定的“prefered address”,默认为“0x10000000”。在载入DLL时,系统内核会执行ASLR基地址重定位(ASLR reba

2016-08-03 13:35:56 1635 1

原创 《Windows核心编程》之“内存映射文件”

一般来说,应用程序对文件的操作分为两类:第一类是操作文件本身,包括new、delete、cut、copy、paste以及获取或修改文件属性等操作;第二类就是操作文件的内容,包括:read、write以及文件指针,事实上,cut、copy和paste从实现上来说,也是文件内容操作。对于第二类操作,通行的做法是设计一个buffer(它对应进程地址空间的一个区域),先把待操作的内容读入到buffer,然

2016-08-01 10:59:35 1474

《Windows驱动开发技术详解》源码

《Windows驱动开发技术详解》一书的源码,包括:DDK 编译版本和VC 版本。

2019-02-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除