blog

枪手亨利

博客园 首页 新随笔 联系 订阅 管理

2005年11月8日 #

摘要: 进程间共享数据的四种方式,1、CreateFileMapping;2、Dll;3、WM_COPYDATA;4、直接调用ReadProcessMemory和WriteProcessMemory函数实现进程间通讯; 最后说了一下进程间发送消息的方法 阅读全文
posted @ 2005-11-08 23:37 henry 阅读(9952) 评论(1) 推荐(0) 编辑

摘要: 我们知道,在NT/2K/XP中,操作系统利用虚拟内存管理技术来维护地址空间映像,每个进程分配一个4GB的虚拟地址空间。运行在用户态的应用程序,不能直接访问物理内存地址;而运行在核心态的驱动程序,能将虚拟地址空间映射为物理地址空间,从而访问物理内存地址。 如果要在应用程序中以物理地址方式访问内存,自然而然的办法,是编写一个专用的驱动程序(如大家熟悉的WinIO),里面设置一定的IOCTL码,应用程序... 阅读全文
posted @ 2005-11-08 23:22 henry 阅读(872) 评论(0) 推荐(0) 编辑

摘要: Q 在NT/2000/XP中,如何读取CMOS数据? Q 在NT/2000/XP中,如何控制speaker发声? Q 在NT/2000/XP中,如何直接访问物理端口? A 看似小小问题,难倒多少好汉! NT/2000/XP从安全性、可靠性、稳定性上考虑,应用程序和操作系统是分开的,操作系统代码运行在核心态,有权访问系统数据和硬件,能执行特权指令;应用程序运行在用户态,能够使用的接口和访问系... 阅读全文
posted @ 2005-11-08 23:18 henry 阅读(280) 评论(0) 推荐(0) 编辑

摘要: Q 前几次我们讨论的都是设备名比较清楚的情况,有了设备名(路径),就可以直接调用CreateFile打开设备,进行它所支持的I/O操作了。如果事先并不能确切知道设备名,如何去访问设备呢? A 访问设备必须用设备句柄,而得到设备句柄必须知道设备路径,这个套路以你我之力是改变不了的。每个设备都有它所属类型的GUID,我们顺着这个GUID就能获得设备路径。 GUID是同类或同种设备的全球唯一识别码,... 阅读全文
posted @ 2005-11-08 23:17 henry 阅读(1089) 评论(0) 推荐(0) 编辑

摘要: Q 用IOCTL_DISK_GET_DRIVE_GEOMETRY或IOCTL_STORAGE_GET_MEDIA_TYPES_EX只能得到很少的磁盘参数,我想获得包括硬盘序列号在内的更加详细的信息,有什么办法呀? A 确实,用你所说的I/O控制码,只能得到最基本的磁盘参数。获取磁盘出厂信息的I/O控制码,微软在VC/MFC环境中没有开放,在DDK中可以发现一些线索。早先,Lynn McGuire... 阅读全文
posted @ 2005-11-08 23:16 henry 阅读(2161) 评论(0) 推荐(0) 编辑

摘要: Q DOS命令DISKCOPY给我很深的印象,现在也有许多“克隆”软件,可以对磁盘进行全盘复制。我想,要制作磁盘镜像文件,DeviceIoControl应该很有用武之地吧? A 是的。这里举一个制作软盘镜像文件,功能类似于“DISKCOPY”的例子。 本例实现其功能的核心代码如下: // 打开磁盘 HANDLE OpenDisk(LPCTSTR filename) { HANDLE h... 阅读全文
posted @ 2005-11-08 23:14 henry 阅读(920) 评论(0) 推荐(0) 编辑

摘要: Q 在MSDN的那个demo中,将设备名换成“A:”取A盘参数,先用资源管理器读一下盘,再运行这个程序可以成功,但换一张盘后就失败;换成“CDROM0”取CDROM参数,无论如何都不行。这个问题如何解决呢? A 取软盘参数是从软盘上读取格式化后的信息,也就是必须执行读操作,这一点与硬盘不同。将CreateFile中的访问方式改为GENERIC_READ就行了。 IOCTL_DISK_GET_D... 阅读全文
posted @ 2005-11-08 23:13 henry 阅读(1215) 评论(0) 推荐(0) 编辑

摘要: Q 在NT/2000/XP中,我想用VC编写应用程序访问硬件设备,如获取磁盘参数、读写绝对扇区数据、测试光驱实际速度等,该从哪里入手呢? A 在NT/2000/XP中,应用程序可以通过API函数DeviceIoControl来实现对设备的访问—获取信息,发送命令,交换数据等。利用该接口函数向指定的设备驱动发送正确的控制码及数据,然后分析它的响应,就可以达到我们的目的。 DeviceIoCont... 阅读全文
posted @ 2005-11-08 23:09 henry 阅读(1319) 评论(0) 推荐(0) 编辑

摘要: 给应用程序加装“看门狗” 相信大多数的程序员或用户,在Windows中见到类似于下面的亲切而又温馨的提示信息,都不会感到陌生: “XXX执行了非法操作,将被关闭。要终止程序,请单击;要调试程序,请单击。”或者,“是否向Microsoft发送错误报告?,。” 如果这个程序运行在无人值守、需要保持连续工作状态的场合,而其中的bug又一时难以排除,就需要采取应急措施,消除或减少程序出错造成的影响。本... 阅读全文
posted @ 2005-11-08 23:05 henry 阅读(1016) 评论(2) 推荐(0) 编辑

摘要: 在Windows NT/2K/XP中,直接用CreateFile打开名称类似于"\\.\A:"的”文件”,就可以与设备驱动打交道,通过ReadFile/WriteFile以绝对地址方式访问磁盘了。但Windows 9X不支持这样的简单方法。本文介绍一种在Windows 9X中实现磁盘直接访问的方法:利用系统的vwin32.vxd,通过DeviceIoControl调用DOS INT21 7305H... 阅读全文
posted @ 2005-11-08 23:01 henry 阅读(498) 评论(0) 推荐(0) 编辑

摘要: 分组密码算法分析,改进 东方龙马公司 孙琳(2000.11) 序:这是我花了近2周的时间写的,可以说比较全面地介绍了各种分组密码、如DES算法、IDEA算法,其中最为宝贵的一部分是最后AES新推荐的算法Rijndael,它是今年10月份美国国家标准和技术研究所刚刚推出的分组密码算法,目前美国官方还没有正式发布此标准,但基本上已有定夺。 前言 数据加密作为一项基本技术是所有通信安全的基石。数据加... 阅读全文
posted @ 2005-11-08 22:35 henry 阅读(3680) 评论(0) 推荐(0) 编辑

摘要: http://fp.gladman.plus.com/cryptography_technology/rijndael20051108 阅读全文
posted @ 2005-11-08 22:27 henry 阅读(1435) 评论(0) 推荐(0) 编辑

摘要: 1 AES加密算法主要步骤1.1 AES算法整体描述l 给定一个明文x,将State初始化为x,并进行AddRoundKey操作,将RoundKey与State异或。l 对前Nr-1轮中的每一轮,用S盒对进行一次代换操作,称为SubBytes;对State做一置换ShiftRows;再对State做一次操作MixColumns;然后进行AddRoundKey操作。l 依次进行SubBytes、Sh... 阅读全文
posted @ 2005-11-08 22:13 henry 阅读(23751) 评论(46) 推荐(0) 编辑

摘要: http://blog.joycode.com/moslem/archive/2003/12/29/10108.aspx目前企业面临的计算环境和过去有很大的变化,许多数据资源能够依靠网络来远程存取,而且越来越多的通讯依赖于公共网络公共网络(如 Internet),而这些环境并不保证实体间的安全通信,数据在传输过程可能被其它人读取或篡改。 加密将防止数据被查看或修改,并在原本不安全的信道上提供安全的... 阅读全文
posted @ 2005-11-08 21:59 henry 阅读(1360) 评论(0) 推荐(0) 编辑

摘要: 摘要:本文主要介绍了在Windows 2000下对磁盘扇区数据的直接读写访问方法,并在此基础上实现了对磁盘扇区内容的查看、基于扇区的数据备份与恢复、对磁盘信息的彻底擦除等一些有着实际意义的应用。 关键字:磁盘访问;扇区;Windows 2000;VC++ 引言 由于Windows 操作系统在很大程度上采取了访问安全保护机制(例如,在Windows操作系统下不能直接访问物理内存、不能使用... 阅读全文
posted @ 2005-11-08 19:39 henry 阅读(1696) 评论(0) 推荐(0) 编辑

摘要: ---- 因为过于复杂的加密算法实现起来非常困难,所以在过去,许多应用程序只能使用非常简单的加密技术,这样做的结果就是加密的数据很容易就可以被人破译。而使用Microsoft提供的加密应用程序接口(即Cryptography API),或称CryptoAPI,就可以方便地在应用程序中加入强大的加密功能,而不必考虑基本的算法。本文将对CryptoAPI及其使用的数据加密原理作一简单的介绍,然后给出... 阅读全文
posted @ 2005-11-08 16:49 henry 阅读(2125) 评论(0) 推荐(0) 编辑

摘要: 在程序开发过程中,经常遇到需要保护用户信息和私有数据不被他人窃取的情况,也就是要对数据进行加密。在Win2000以前,要对数据进行加密和解密操作,一般要使用CryptAPI函数,相当烦琐。幸运的是,从Win2000开始,操作系统从内核的级别上提供了对文件进行加密和解密的函数,而且使用起来相当简单。 加密的函数是 BOOL EncryptFile( LPC... 阅读全文
posted @ 2005-11-08 16:46 henry 阅读(881) 评论(0) 推荐(0) 编辑

摘要: ShortCurBarDemo20051108 阅读全文
posted @ 2005-11-08 15:19 henry 阅读(560) 评论(1) 推荐(0) 编辑

摘要: Win2000的共享内存是同机进程间通信的一个省事的办法。虽然只能在同一台机器上起作用,但使用起来很方便。现在下面开始介绍一下函数: 1. CreateFileMappingHANDLE CreateFileMapping( HANDLE hFile, //... 阅读全文
posted @ 2005-11-08 14:19 henry 阅读(2435) 评论(0) 推荐(0) 编辑

摘要: 获取内存和Drive信息- - http://hanyu1980.blogchina.com/3329322.html 今天写了一个获取硬盘和内存信息的值的程序,总结一下如下: 1. GlobalMemoryStatus VOID GlobalMemoryStatus( LPMEMORYST... 阅读全文
posted @ 2005-11-08 13:57 henry 阅读(556) 评论(0) 推荐(0) 编辑