Visual Studio2012
文章平均质量分 80
尹成
尹成微信18510341407,助理微信18514203048
展开
-
VC++网络安全编程范例(5)-创建创建密钥容器和密钥
密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的数据。密钥分为两种:对称密钥与非对称密钥对称密钥加密,又称私钥加密,即信息的发送方和接收方 用一个密钥去加密和解密数据。它的最大优势是加/解密速度快, 适合于对大数据量进行加密,但密钥管理原创 2011-10-07 22:15:25 · 4739 阅读 · 1 评论 -
Windows8王者归来,Windows8必胜,所有程序员都认真关注了。
业界有评论称Windows8来得太晚。但是,微软此刻推出Windows8生逢其时。9月14日,传说中的Windows8在微软Build Conference大会上亮相。Windows8将是苹果在移动终端战场的终结者。以下是几点原因Windows的品牌号召力目前,各种不同版本的Windows在全球数十亿台PC上运转着,在品牌号召力上,任何竞争对手恐怕都望尘莫及。事实上,目前包括三原创 2011-10-21 12:35:24 · 6866 阅读 · 13 评论 -
VC++消息钩子编程
一、消息钩子的概念1、基本概念 Windows应用程序是基于消息驱动的,任何线程只要注册窗口类都会有一个消息队列用于接收用户输入的消息和系统消息。为了拦截消息,Windows提出了钩子的概念。钩子(Hook)是Windows消息处理机制中的一个监视点,钩子提供一个回调函数。当在某个程序中安装钩子后,它将监视该程序的消息,在指定消息还没到达窗口之前钩子程序先捕获这个消息。这样就有机会对此原创 2011-10-23 23:54:00 · 11897 阅读 · 7 评论 -
借助 C++ 进行 Windows 开发---线程池取消和清理
取消和清理是相当困难的问题,以解决说到多线程应用程序。如果是,可以安全地关闭句柄?您是否需要考虑哪个线程取消的操作?更糟的是,一些多线程的 Api 不重入,潜在地提高性能,但还为开发人员增加的复杂性。我引入了最后一个月的专栏中的线程池环境 (msdn.microsoft.com/magazine/hh394144)。此环境允许的一项关键功能是清理组,而这是什么我将重点此处。清理组不要尝试解翻译 2011-11-03 14:08:58 · 6143 阅读 · 2 评论 -
基于Visual C++之Windows核心编程代码分析(1)实现设备管理器枚举设备
我们进行Windows编程的时候,有些时候需要枚举设备,例如光盘,光驱,硬盘等等,我们如何实现功能呢,请见代码分析 #include #include #include #include #include /* 函数声明 */BOOL EnumPresentDevice( const GUID * InterfaceClassGuid );BOOL EnumAllDevice();原创 2011-12-16 21:14:15 · 9756 阅读 · 8 评论 -
基于Visual C++之Windows核心编程代码分析(2)实现Windows用户管理
在Windows编程中间,我们经常需要添加用户,删除用户,添加用户组等等功能,那些功能如何实现呢,我们请见实现代码与注释分析 /* UNICODE */#ifndef UNICODE#define UNICODE#endif/* 头文件 */#include #include #include #include /******************************原创 2011-12-16 21:17:30 · 3606 阅读 · 1 评论 -
基于visual c++之windows核心编程代码分析(8)自动下载更新程序
我们编写Windows程序,经常需要自动更新,该功能如何实现呢,我们来看代码实现与注释讲解 #include "stdafx.h"#include "AutoUpdate.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// 唯一的应用程序对象CWinApp theApp;using namespace std;#define MYV原创 2011-12-16 22:46:47 · 4741 阅读 · 3 评论 -
基于visual c++之windows核心编程代码分析(13)获取磁盘可用空间信息
我们在进行Windows核心编程,经常要用到获取磁盘可用空间信息。我们来亲自编程实践获取磁盘可用空间信息,请见代码实现与注释讲解 /* 头文件 */#include #include /* ************************************ * BOOL GetDiskSpaceInfo(LPCSTR pszDrive * 功能 根据输入的驱动器,获取磁盘总容量原创 2011-12-16 22:25:30 · 3465 阅读 · 0 评论 -
基于visual c++之windows核心编程代码分析(16)使用邮槽进行进程通信
在Windows环境下,实现进程间通信的方式有很多种,如套接字、管道、远程过程调用和NETBIOS等,邮槽是其中实现单通道进程间通信的一种。创建邮槽的进程被称为邮槽服务器,而其它发送消息给邮槽的进程被称为邮槽客户端。邮槽客户端能发送消息给本机的邮槽,也可发送消息给局域网内其他计算机内的邮槽,所有这些消息都存储在邮槽内,直到邮槽服务器读取它。这些消息通常是以广播的方式发送,建立在面向无链接的数据报的原创 2011-12-17 12:12:59 · 3011 阅读 · 0 评论 -
基于visual c++之windows核心编程代码分析(20) 纤程与线程的互相转换
在Windows2000/XP中,纤程(fiber)相当于用户级别的线程或轻进程.纤程由Win32库函数支持,对核心是不可见的.纤程可以通过SwitchToFiber显示至另一合作纤程,以实现合作纤程之间的协同.纤程包含独立的目态栈,寄存器状态的控制信息.目态控制的纤程转接要求较高的编程经验.由于纤程属于目态对象,一个纤程被封锁意味着所在线程被封锁.应用程序可以通过ConvertThreadToF原创 2011-12-17 12:30:37 · 3239 阅读 · 1 评论 -
基于visual c++之windows核心编程代码分析(22)Mapping File编程
文件映射(mapping)是一种将文件内容映射到进程的虚拟地址空间的技术。视图(View)是一段虚拟地址空间,进程可以通过View来存取文件的内容,视图是一段内存,可以使用指针来操作视图。使用文件映射之后,读写文件就如同对读写内存一样简单。在使用文件映射时需要创建映射对象,映射对象分为命名的和未命名的。映射对象还存取权限。 使用文件映射至少有3个好处,一是因为文件存储与硬盘上的,而文件原创 2011-12-17 12:44:09 · 3716 阅读 · 0 评论 -
基于visual c++之windows核心编程代码分析(24)IO控制、内核通信
我们在进行Windows编程的时候,经常需要进行IO控制与内核通信,我们来实现IO控制与内核通信。请见代码实现与注释讲解 驱动代码实现与分析/* 头文件 */#include // 包括了很多NT内核的类型、结构、函数定义,开发驱动时需要包括此头文件#include #include "xioctl.h"/* 常量与预定义 */#define NT_DEVICE_NAME L"原创 2011-12-17 13:06:36 · 4060 阅读 · 0 评论 -
vc++网络安全编程范例(15)-导出会话密钥
密钥(Cryptographic key)是一个基于RSA公匙加密体系的邮件加密软件。它能对你的邮件加上数字签名从而使收信人可以确信邮件是你发来的。它让你可以安全地和你从未见过的人们通讯,事先并不需要任何保密的渠道用来传递密匙。它采用了:审慎的密匙管理,一种RSA和传统加密的杂合算法,用于数字签名的邮件文摘算法,加密前压缩等,还有一个良好的人机工程设计。它的功能强大,有很快的速度。密钥(Crypt原创 2011-12-17 18:36:47 · 3757 阅读 · 0 评论 -
vc++网络安全编程范例(16)-open ssl 哈希编码解码数据
OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是1原创 2011-12-17 18:42:55 · 3982 阅读 · 1 评论 -
vc++网络安全编程范例(21)用CryptoAPI进行数据加密
由于过于复杂的加密算法实现起来非常困难,所以在过去,许多应用程序只能使用非常简单的加密技术,这样做的结果就是加密的数据很容易被人破译。而使用Microsoft提供的加密应用程序接口(即Cryptography API),或称CryptoAPI,可以方便地在应用程序中加入强大的加密功能,而不必考虑基本的算法。本文将对CryptoAPI及其使用的数据加密原理作一简单的介绍,然后给出了用CryptoAP原创 2011-12-17 21:51:18 · 4810 阅读 · 1 评论 -
基于Visual C++之Windows核心编程代码分析(3)实现程序自动安装
我们进行Windows编程的时候,经常需要开发程序,使程序进行自动安装。具体如何实现呢,请见代码实现与注释分析。**************************************//* 头文件 */#include #include #include /* 库 */#pragma comment (lib, "shell32.lib")#pragma comment (li原创 2011-12-16 21:20:57 · 3828 阅读 · 1 评论 -
基于Visual C++之Windows核心编程代码分析(5)操作注册表与系统时间
我们进行Windows编程的时候,经常需要进行注册表操作,操作注册表请见下列实现代码与说明注释。 /* 头文件 */#include #include #include /* 预定义 */#define MAX_KEY_LENGTH 255#define MAX_VALUE_NAME 16383/* ************************************* vo原创 2011-12-16 21:33:10 · 3132 阅读 · 0 评论 -
基于visual c++之windows核心编程代码分析(7)操作光驱
我们在进行Windows编程的时候经常需要进行操作光驱,请见代码实现与注释讲解。 /* 头文件 */#include #include #include /* 预定义 */#define BUFSIZE 512/* ************************************ * int main( int argc, PCHAR argv[]原创 2011-12-16 22:22:51 · 2709 阅读 · 0 评论 -
基于visual c++之windows核心编程代码分析(18)远程代码注入执行
我们进行系统级别的安全监控的时候,防范木马的时候,经常需要进行远程代码注入执行。执行步骤如下1. 提升进程权限,如果权限不够的话,很容易造成 OpenProcess 失败;2. 确定你的宿主进程,即你所要注入代码的进程,这个其实很好办,你要是不想你的木马或者病毒被别个一下子就结束了的话, 最好是选择系统要想运行,则必须开启的那种进程,比如资源管理器进程 Explorer.exe, Wind原创 2011-12-17 12:23:39 · 3685 阅读 · 0 评论 -
基于visual c++之windows核心编程代码分析(19)枚举进程以及进程加载模块信息
我们进行Windows安全编程的时候,经常需要检测进程,我们来实践一下枚举进程与进程加载模块。请见代码实现与注释分析。 /* 头文件 */#include #include #include #include /* 预处理声明 */#pragma comment (lib, "psapi.lib")/* 函数声明 */VOID WINAPI EnumProcess1();VOI原创 2011-12-17 12:26:58 · 3019 阅读 · 0 评论 -
基于visual c++之windows核心编程代码分析(21)获取和设置环境变量
环境变量是一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如path,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,比如临时文件夹位置和系统文件夹位置等。这点有点类似于DOS时期的默认路径,当你原创 2011-12-17 12:35:28 · 3614 阅读 · 0 评论 -
基于visual c++之windows核心编程代码分析(23)遍历驱动器并获取驱动器属性
我们在进行Windows编程的时候,经常需要进行遍历驱动器并获取驱动器属性,我们来实现遍历驱动器并获取驱动器属性。请见代码实现与注释讲解 #define _WIN32_WINNT 0x0501/* 头文件 */#include #include /* 预定义 */#define BUFSIZE MAX_PATH/* 函数申明 */BOOL GetDirverIn原创 2011-12-17 12:48:14 · 3126 阅读 · 0 评论 -
VC++网络安全编程范例(11)-SSL高级加密网络通信
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。 SSL (Secure Socket Layer) 为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)原创 2011-12-17 13:42:41 · 4574 阅读 · 1 评论 -
vc++网络安全编程范例(17)-open ssl 实现文件加密与解密
OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。 作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。对称加密算法 OpenSSL一共提供了8种对称加密算法原创 2011-12-17 19:01:40 · 4565 阅读 · 0 评论 -
vc++网络安全编程范例(19)实现数字信封打包与拆解
数字信封是将对称密钥通过非对称加密(即:有公钥和私钥两个)的结果分发对称密钥的方法。PKCS#7中将数字信封作为术语进行定义,而在正文中对进行了如下解释:数字信封包含被加密的内容和被加密的用于加密该内容的密钥。虽然经常使用接收方的公钥来加密“加密密钥”,但这并不是必须的,也可以使用发送方和接收方预共享的对称密钥来加密。当接收方收到数字信封时,先用私钥或预共享密钥解密,得到“加密密钥”,再用该密钥解原创 2011-12-17 19:17:30 · 4299 阅读 · 0 评论 -
基于visual c++之windows核心编程代码分析(6)分配和释放可读可写的虚拟内存页面
我们在进行Windows核心编程,经常要用到读取虚拟内存。我们来亲自实践一个分配与释放可读可写的虚拟内存页面,请见代码实现与注释讲解。#include #include /************************************** int main(void)* 功能 演示虚拟内存的使用** 参数 未使用******************************原创 2011-12-16 21:40:25 · 3198 阅读 · 0 评论 -
基于visual c++之windows核心编程代码分析(9)实现Windows服务并安装,控制
我们进行Windows编程的时候,经常涉及到Windows服务编程,针对Windows服务我们该怎么编程呢,我们先来实现一个Windows服务并实现之,请见注释代码分析。/* 头文件 */#include /* 全局变量 */SERVICE_STATUS SplSrvServiceStatus; SERVICE_STATUS_HANDLE SplSrvServiceS原创 2011-12-17 11:23:19 · 4432 阅读 · 0 评论 -
基于visual c++之windows核心编程代码分析(10)实现socket通信
在多台计算机之间实现通信,最常见的方法有两种:Socket通信与UDP通信。Socket是一种基于TCP/IP协议,建立稳定连接的点对点通信,它的特点是安全性高,数据不会丢失,但是很占系统资源。在JAVA中,ServerSocket类和Socket类为我们实现了Socket通信,建立通信的一般步骤是:1。建立服务器ServerSocket ss = new ServerSocket(端口号);So原创 2011-12-17 11:32:37 · 3648 阅读 · 1 评论 -
基于visual c++之windows核心编程代码分析(11)实现屏幕截取
我们在进行Windows编程的时候,经常需要进行屏幕截取,我们来实现截取屏幕,不依赖MFC来实现屏幕截取。请见代码实现与注释讲解 /* 头文件 */#include /* 常量定义 */#define PALVERSION 0x300#define CAP_SHOW_MODE_STRTCH 1#define CAP_SHOW_MODE_NOSTRTCH 0/* 全局变量 */H原创 2011-12-17 11:35:28 · 5573 阅读 · 3 评论 -
基于visual c++之windows核心编程代码分析(12)使用信号量同步线程
我们编写多线程应用程序的时候,经常需要进行线程同步协作,我们来实践一下用信号量同步线程。请见代码实现与注释分析,/* 头文件 */#include #include /* 常量定义 */#define NUMTHREADS 4 /* 全局变量 */HANDLE hSemaphore;/* 函数声明 */void UseSemaphore(void);DWORD WINAPI Se原创 2011-12-17 11:49:19 · 2933 阅读 · 3 评论 -
基于visual c++之windows核心编程代码分析(14)使用Event同步线程
我们进行Windows编程编写多线程程序的时候经常需要用到线程同步,我们来实现用Event同步线程。请见代码注释与实例讲解。 /* 头文件 */#include #include /* 常量定义 */#define NUMTHREADS 3 #define BUFFER_SIZE 16#define FOR_TIMES 5/* 全局变量 */HANDLE hWriteEvent[N原创 2011-12-17 12:01:53 · 2627 阅读 · 0 评论 -
基于visual c++之windows核心编程代码分析(15)使用Mutex同步线程
我们编写多线程应用程序的时候,经常需要进行线程同步协作,我们来实践一下用Mutex同步线程。请见代码实现与注释分析。 /* 头文件 */#include #include /* 常量定义 */#define NUM_THREADS 4 /* 全局变量 */DWORD dwCounter = 0;HANDLE hMutex; /* 函数声明 */void UseMutex(voi原创 2011-12-17 12:07:57 · 2639 阅读 · 0 评论 -
基于visual c++之windows核心编程代码分析(17)通过pipe进程间通信
管道是一种用于在进程间共享数据的机制,其实质是一段共享内存。Windows系统为这段共享的内存设计采用数据流I/0的方式来访问。由一个进程读、另一个进程写,类似于一个管道两端,因此这种进程间的通信方式称作“管道”。 管道分为匿名管道和命名管道。 匿名管道只能在父子进程间进行通信,不能在网络间通信,而且数据传输是单向的,只能一端写,另一端读。 命令管道可以在任意进程间通信,通信是双原创 2011-12-17 12:17:28 · 3532 阅读 · 1 评论 -
VC++网络安全编程范例(7)-实现哈希摘要算法
哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。 哈希表是根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上原创 2011-12-17 13:23:43 · 3921 阅读 · 0 评论 -
VC++网络安全编程范例(9)-基于OPENSSL实现对称算法与BASE64编码
对称密码算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加密解密密钥是相同的。这些算法也叫秘密密钥算法或单密钥算法,它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加密解密。只要通信需要保密,密钥就必须保密。 对称算法的加密和解密表示为: Ek(M)=C Dk(C)=M原创 2011-12-17 13:31:57 · 3856 阅读 · 1 评论 -
VC++网络安全编程范例(10)-SSL网络通信
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。 SSL (Secure Socket Layer) 为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)原创 2011-12-17 13:38:31 · 6088 阅读 · 0 评论 -
VC++网络安全编程范例(12)-PKI编程
PKI(Public Key Infrastructure ) 即"公钥基础设施",是一种遵循既定标准的密钥管理平台,它能够为所有网络应用提供加密和数字签名等密码服务及所必需的密钥和证书管理体系,简单来说,PKI就是利用公钥理论和技术建立的提供安全服务的基础设施。PKI技术是信息安全技术的核心,也是电子商务的关键和基础技术。 PKI的基础技术包括加密、数字签名、数据完整性机制、数字信封、双重数原创 2011-12-17 13:55:33 · 5309 阅读 · 4 评论 -
vc++网络安全编程范例(14)-openssl bio编程
OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。 作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。BIO机制是OpenSSL提供的一种高层IO接口,该接口原创 2011-12-17 14:04:39 · 3830 阅读 · 0 评论 -
vc++网络安全编程范例(18)-open ssl 实现数字证书编程
数字证书就是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构-----CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一原创 2011-12-17 19:12:42 · 4555 阅读 · 2 评论 -
vc++网络安全编程范例(20)木马防范检测数据端口与进程
我们进行系统安防的时候,需要防范木马,木马的存在就有网络连接,我们检测数据端口与进程的模式来防范木马。我们来用VC++实现检测数据端口与进程,请见代码实现与注释讲解#include #include #include #include #pragma comment(lib, "ws2_32.lib")//----------------------------------------原创 2011-12-17 19:32:24 · 4074 阅读 · 1 评论