
Windows 系统编程
文章平均质量分 87
less@more
.....
展开
-
Windows NT/2000内部数据结构探究
WINDOWS系统隐含了不少内部数据结构,其记录着与系统相关的所有重要信息如线程、进程、内核调用等等,具体如Windows NT/2000模块ntoskrnl.exe中的NtBuildNumber与KeServiceDescriptorTable等(用SoftICE或 Visual Studio所带的Dependency Walker之类的可以看到),前者只是指出当前Windows的Build号(转载 2008-05-04 15:28:00 · 641 阅读 · 0 评论 -
遍历进程Heap
Windows Heap管理是细粒度的内存管理方式。这样做可以降低内存碎片,提高内存的利用率。每个进程在启动之初都会有一个默认的Heap,这个我们可以通过GetProcessHeap()返回Heap的句柄,其实这个句柄就是一款buffer。之后进行内存申请都是在这个上面进行的。具体的Heap的结构不怎么了解,初步的heap管理在win 95系统设计揭秘中介绍。这里就不详述了。 这里需要介绍一些API,这些API用于遍历每个进程的Heap相关信息。 _heapwalk()//c 中的本进程原创 2011-02-25 16:11:00 · 3250 阅读 · 0 评论 -
如何识别物理网卡方法
由于各种原因,我们需要获取机器上的mac地址,但是现在虚拟机的存在,使得我们不好区分那个是真正的物理网卡。在网络上也说明了一些方法。在这里我先记录一下。获取mac的方法,可以google一下“取得系统中网卡MAC地址的三种方法”。我们里是通过GetAdaptersInfo来获取网原创 2011-08-04 18:33:15 · 5390 阅读 · 0 评论 -
在 Windows 操作系统中的已知安全标识符
安全标识符 (SID) 是用于标识安全主体或安全组,在 Windows 操作系统中的可变长度的唯一值。常用 Sid 的 Sid 标识一般用户的一组或通用组。跨所有操作系统,它们的值将保持不变。此信息可用于故障排除涉及安全问题。它也是有用的 ACL 编辑器中可能出现的潜原创 2011-09-13 13:56:51 · 1421 阅读 · 0 评论 -
谈谈对APC的一点理解
http://hi.baidu.com/combojiang/blog/item/3afc83eec53e05fdb2fb95a2.html 异步过程调用(APCs) 是NT异步处理体系结构中的一个基础部分,理解了它,对于了解NT怎样操作和执行几个核心的系统操作很有帮助。转载 2011-09-13 21:58:35 · 1004 阅读 · 0 评论 -
R0和R3下得到当前用户的SID
http://hi.baidu.com/sudami/blog/item/5ba21ceef587e1ffb3fb9541.html(1.) R0下需要attach到一个用户进程,取其SIDNTSTATUS GetUserName( char* a转载 2011-09-13 16:27:49 · 1065 阅读 · 0 评论 -
KeUserModeCallback用法详解
ring0调用ring3早已不是什么新鲜事,除了APC,我们知道还有KeUserModeCallback.其原型如下:NTSTATUSKeUserModeCallback ( IN ULONG ApiNumber, IN PVOID InputBu转载 2011-09-23 11:19:48 · 1692 阅读 · 0 评论 -
深层解析最核心的dll:NTDLL.dll
打开NTDLL.dll,惊奇的发现原来CRT的许多基本函数居然都是在这里实现的!甚至包括qsort,ceil这样的函数,还有臭名昭著的 strcpy(严格来讲,这只能怪使用者不当心)。堆的释放,进城管理,似乎都是在这。于是,我决定,仔细察看以下它,这1410个函数是做什么的.转载 2011-09-23 11:21:33 · 6493 阅读 · 0 评论 -
index.dat文件剖析
Windows系统中会存在三个index.dat文件。它们分别用来保存IE上网的cookies、临时文件和上网历史的索引信息。根据Windows系统版本不同,这些文件在系统中的位置也是不尽相同的。在Windows 95/98/Me/ NT中,index.dat一般会存放在下面的位置中: C:\Windows\Cookies\index.datC:\Windows\Histo转载 2011-12-29 18:18:46 · 3573 阅读 · 0 评论 -
Windows进程间通信的各种方法
<br />进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码、数据以及它可利用的系统资源(如文件、管道等)组成。多进程/多线程是Windows操作系统的一个基本特征。Microsoft Win32应用编程接口(Application Programming Interface, API)提供了大量支持应用程序间数据共享和交换的机制,这些机制行使的活动称为进程间通信(InterProcess Communication, IPC),进程通信就是指不同进程间进行数据共享和数据交换。<br转载 2010-11-18 21:30:00 · 751 阅读 · 0 评论 -
在DLL中用CRT静态库申请内存,EXE释放是不行的
因为malloc/free,new/delete都是调用HeapAlloc/HeapFree来实现来实现内存分配是释放的。查看Windows的API可以看到,这两个函数都需要一个Heap的HANDLE做为参数。CRT库采用了全局变量来保存这个HANDLE。如果是CRT静态链接,CRT库的代码会链接到各个DLL中去,也包括这个全局变量。也就是说,每个使用CRT静态链接的dll中都有一个自己的原创 2010-05-28 16:27:00 · 1860 阅读 · 1 评论 -
Win32 调试接口设计与实现浅析
所谓调试器实际上是一个很宽泛的概念,凡是能够以某种形式监控其他程序执行过程的程序,都可以泛称为调试器。在Windows平台上,根据调试器的实现原理大概可以将之分为三类:内核态调试器、用户态调试器和伪代码调试器。 内核态调试器直接工作在操作系统内核一级,在硬件与操作系统之间针对系统核心或驱动进行调试,常见的有SoftICE、WinDbg、WDEB386和i386KD等等;用户态调试器则转载 2009-11-09 18:29:00 · 1273 阅读 · 0 评论 -
再谈Windows NT/2000内部数据结构
现在我们结合Regmon(www.sysinternals.com)在NT中的实现方法再来谈谈Windows NT/2000内部数据结构。 Regmon是监视应用程序访问系统注册表的实用程序。大家都知道在应用程序中使用注册表一般都调用WinAPI Regxxx,而Regxxx最终会调用Native API Zwxxx!(参阅Windows NT/2000 DDK Documentation转载 2008-05-04 15:29:00 · 917 阅读 · 0 评论 -
获取Windows 系统的内核变量
创建时间:2004-08-05文章属性:原创文章提交:tombkeeper (t0mbkeeper_at_hotmail.com)获取Windows 系统的内核变量作 者:于旸邮 件:tombkeeper[0x40]nsfocus[0x2e]com tombkeeper[0x40]xfocus[0x2e]org完成于:2004.07.30关键字:PsLoadedModuleLis转载 2008-05-04 15:34:00 · 1058 阅读 · 0 评论 -
获取系统版本详细信息
// GetWinVer.h #ifndef GETWINVER_H #define GETWINVER_H #define WUNKNOWN 0 #define W9XFIRST 1 #define W95 1 #define W95SP1 2 #def原创 2009-04-21 18:23:00 · 1110 阅读 · 0 评论 -
如何从DirectX诊断工具对话框中获取信息
最近再搞一些烦人的东西,基本上就是要获取如同DirectX诊断工具对话框中类似的数据。在这这里,拼命在网上找了,一般像我们不熟悉这方面的时候,都是这样过来的。找找了一堆乱七八糟的信息。比如要获取系统信息,可以使用GetVerionEx,获取内存信息可以使用GetGlobalMemStatus等函数,还有像显卡的东西,可以使用WMI来得到,等等这些个东西。每种小东西,都可以用不同的方式来获取。但原创 2009-05-31 14:56:00 · 1534 阅读 · 0 评论 -
使用WMI获取硬盘信息
WMI可以进行的操作很多,想Windows优化大师就有很多操作是通过WMI进行的。在这篇文章中主要是给出一个使用WMI来获取数据的一个范例,如果要获取其他数据,可以先使用WMI studio tools查询,然后copy代码就可以了。我要贴上去代码也是msdn中的范例了。int GetStorageInfo(CString szClass,REQHARDWAREINFO& HardIn原创 2009-05-31 15:14:00 · 3044 阅读 · 0 评论 -
简要分析cpu-z和gpu-z软件
最近一直在搞获取cpu、显卡等硬件相关信息。搞的有点头大,获取硬件信息一般通过SetupDIXxxx类的函数获取相关的邮件信息,或者直接读取相关注册表中的数据,还有就是通过WMI方式获取(这在之前的文章中有提到,这里就不在论述了。)。几乎所有的数据都是可以从注册表中获取的。只不过这种方法比较繁琐一点。在setupapi.h中有很多函数,而且有很多在ddk或msdn中并没有讲述的api,大家有原创 2009-06-23 21:09:00 · 5505 阅读 · 1 评论 -
获取当前系统的安装程序
如何得到像‘添加/删除程序’中的程序呢?一般是两种方法,一种就是通过wmi,这个东西很强悍,不仅可以用于查询,也可以对软件、服务之类的进行操作。当然了,在这里使用wmi的话,就是查询Win32_Prodeuct进行查询。但是你会发现,查询到得信息并不全面,而是一小部分,因为WMI查询到得是通过Windows Installer安装的应用程序。接下来的一种方法,大家应该都猜到了,windows原创 2009-07-04 16:15:00 · 1000 阅读 · 0 评论 -
DxDiag中字段结构
下面贴一下从DxDiag中枚举到得部分字段,这个是方便以后使用的。免得每次都用时IDXDiagContainer::EnumPropNames和IDXDiagContainer::EnumChildContainerNames来获取相关信息了。只用这个com接口需要DX编程中的一些头文件。详细查看DX编程帮助文档中的DXDiag Interfaces说明。DxDiag_SystemInfo原创 2009-07-04 16:27:00 · 2076 阅读 · 0 评论 -
Umdhtools.exe: 如何使用 umdh.exe 来查找内存泄漏
http://support.microsoft.com/kb/268343用户模式转储堆 (UMDH) 实用程序处理分析 Windows 堆分配特定进程的操作系统。主要针对此实用程序,并与之关联的其他工具用于 Windows 2000 和 Windows XP。单击播放 按钮以查看此流媒体演示。请注意 ACELP ® 编解码器编码视频,您需要安装在可用的免费 ACELP ®转载 2012-06-16 17:12:58 · 2617 阅读 · 1 评论