- 博客(24)
- 资源 (67)
- 收藏
- 关注
原创 转 开始进行 64 位 Windows 系统编程之前需要了解的所有信息
Everything You Need To Know To Start Programming 64-Bit Windows Systems Matt Pietrek This article discusses: Background on 64-bit versions of Windows Just enough
2009-11-26 14:51:00 2154
原创 64位Windows 移植须知
<!-- INTRODUCTION The Code Project article submission template (HTML version)Using this template will help us post your article sooner
2009-11-26 14:02:00 9273
原创 转【Windows源码分析】(一)初始化内核与执行体子系统
对于那么没有相关经验的朋友,在阅读本文时最好对照windows源码来看,否则光看着这么多数据结构就足以头大。对于这篇文章,严格来说,应该是属于学习笔记型,如有分析不当的地方,请各位多指教! 本文的主要目标是根据windows源码分析内核与执行体初始化流程,过程中会涉及大量的内核数据结构与函数,文中并不会介绍每个结构的含义及作用。内核中有很多晦涩难懂且枯燥的代码,我在分析过程尽可能的去分
2009-11-22 21:08:00 2028
原创 Vista下的Shadow SSDT服务函数名表
"NtGdiAbortDoc", "NtGdiAbortPath", "NtGdiAddFontResourceW", "NtGdiAddRemoteFontToDC", "NtGdiAddFontMemResourceEx", "NtGdiRemoveMergeFont", "NtGdiAddRemoteMMInstanceToDC", "NtGdiAlp
2009-11-22 21:05:00 1633
原创 Windows 的Cache管理器
Cache的四个接口 File Stream Manipulation Functions Copy Interface MDL Interface Pinning Interface 注意:Cache管理器的Pin接口和另外两个接口:Copy接口以及MDL接口不能 同时使用。 重要:Cache管理器并解释被缓存的数据内容,它只是理解File
2009-11-22 21:02:00 2283
原创 NT缓存管理器(五)
CcPurgeCacheSection 这个例程被FSD用来清除cache里的所有页面映射。被清除的数据从内存中被抛弃。如果数据在清扫之前被修改了,那么对数据的更新就丢了。原型如下: NTKERNELAPI BOOLEAN CcPurgeCacheSection ( IN PSECTION_OBJECT_POINTERS SectionObje
2009-11-22 21:01:00 2867
原创 NT缓存管理器(四)
CcInitializeCacheMap 缓存管理器维护一个文件的cache map,以跟踪对文件执行的活动。第一个文件打开操作导致一个public cache map的生成。更多地,每个打开文件的实例同样有自己的一张cache map用来跟踪在其文件对象上执行的操作的信息。 一般地,cache map的生成被推迟直到第一个I/O发生。这保证了文件系统不能生成和删除cache map对一般的
2009-11-22 21:00:00 2251
原创 NT缓存管理器(三)
CcCanIWrite 因为应用程序能够在内存中以大于写回磁盘的速度修改数据,虚拟内存系统能用数据填满。这反过来在VM系统中能够导致致命的out-of-memory情况。缓存管理器提供的一个支持这个的关键操作是CcCanIWrite.这种回调的原型是: NTKERNELAPI BOOLEAN CcCanIWrite ( IN PFILE_OBJ
2009-11-22 20:59:00 1667
原创 NT缓存管理器(二)
文件大小信息 文件系统和内存管理器每个都维护了文件的大小信息。无何何时只要文件系统对一个文件建立映射,它就指明文件的当前大小。任何接下来对文件大小的改变就由缓存管理器来说明了。 缓存管理器用三个值来说明当前的文件大小: typedef struct _CC_FILE_SIZES { LARGE_INTEGER AllocationSize;
2009-11-22 20:58:00 1464
原创 NT缓存管理器(一)
在这篇文章中,我们将对缓存管理器的一个运行时例程做个基本的描述。此外,对于这些例程使用的一些方法以及示例代码,可以参考Microsoft IFS Kit。 缓存管理器概述 缓存管理器是一个软件部分,集成在Windows Nt内存管理器中,以集成文件系统(数据)和虚拟内存系统。一些操作系统完成它们自己的文件系统,所以它们有自己的数据cache. 然而,因为这些caches受物理内存限制,它们在大
2009-11-22 20:57:00 2992
原创 文件系统、缓存管理器、内存管理器的关系
以前对文件系统、缓存管理器、内存管理器的关系比较模糊,特别是具体在文件操作过程中的相互调用关系。在看《数据恢复技术》这本书时,介绍了些,以及另外的一些资料,总算是大致明白了它们之间的关系。摘录相关的文字如下; 1、显示文件I/O:应用程序通过Win32 I/O接口函数如CreateFile、ReadFile及WriteFile等来访问文件。函数CreateFile是通过Win32客户端DLL-K
2009-11-22 20:52:00 2159
原创 转SSDT Hook的妙用-对抗ring0 inline hook
1,SSDT SSDT即系统服务描述符表,它的结构如下(参考《Undocument Windows 2000 Secretes》第二章): typedef struct _SYSTEM_SERVICE_TABLE { PVOID ServiceTableBase; //这个指向系统服务函数地址表 PULONG ServiceCounterTableBase; UL
2009-11-20 20:15:00 958
原创 转关于Anti-SSDT Hook
本文主要为学习各位大牛的技术,不敢擅称原创,见谅 SSDT HOOK最终是要修改KeServiceDescriptorTable的成员ServiceTableBase所指向内存空间的Nt××函数地址,那么我们就可以通过扫描这段内存空间就可以抓到hook的痕迹,唔,这就是我们anti-ssdt hook的基本思路,或者说scan为anti提供了可行性 最经典的,该是Greg Hoglund
2009-11-20 20:13:00 1036
原创 转Hook Shadow SSDT
网上很多文章都有关于SSDT的完整的实现,但是没有关于Shadow SSDT的完整实现,目前最好的文章是《shadow ssdt学习笔记 by zhuwg》,我这里的程序也很多参考了他的文章,在这里谢谢了。我这里给出一个hook shadow ssdt的完整实现的驱动和3层的代码。 这里主要是hook 了 NtUserFindWindowEx,NtUserBuildHwndList,NtUse
2009-11-20 20:08:00 1639
原创 转shadow ssdt学习笔记
1。取得shadow ssdt真实地址 系统只提供了KeServiceDescriptorTable导出 KeServiceDescriptorTableShadow是个未导出结构 定义 Copy code typedef struct _SYSTEM_SERVICE_TABLE { PNTPROC ServiceTab
2009-11-20 19:55:00 1802
原创 Windows 7 RC - Shadow SSDT 服务名表
NtGdiAbortDoc NtGdiAbortPath NtGdiAddFontResourceW NtGdiAddRemoteFontToDC NtGdiAddFontMemResourceEx NtGdiRemoveMergeFont NtGdiAddRemoteMMInstanceToDC NtGdiAlphaBlend NtGdiAngleA
2009-11-20 19:53:00 1866
原创 模拟键盘鼠标操作
现在的一些模拟键盘鼠标输入的程序使用了一种所谓硬件模式的东西,例如按键精灵。其实就是使用了WinIo这样一些打开进程在Ring3访问端口权限的库。这里会详细分析一下他们的实现机制,以及对付这些工具的推荐方法。 首先摘抄一段WinIo驱动里面的代码: case IOCTL_WINIO_ENABLEDIRECTIO: OutputDebugString("IOCTL_WINIO_ENABLEDI
2009-11-18 21:42:00 1062
原创 转XTrap驱动分析
最近拿到一个使用XTrap的游戏,据说此物乃NP和HS之外的第三大反外挂系统,so拿来瞧了瞧。 Ring3层包括几个dll和一个进程。看里面貌似使用了pipe相关的函数,运行时也起了一个进程。所以XTrap的架构应该和NP很类似,但是实现上就要弱很多了。 1、 现在还没发现有ring3全局注入的dll。 2、 大量工作放到了作为和游戏接口的dll里面。通过dll方式提供游戏使用这点
2009-11-18 21:36:00 1281
原创 线程调度资料
XP下枚举两个链表并不能得到全部线程?KiWaitInListHead KiDispatcherReadyListHead PART 1: Kernel Object //每一位表示对应这个特权级的队列中是否有线程(主要在KiSwapThread用,详细代码见PART3) ULONG KiReadySummary = 0 - Referenced by K
2009-11-18 21:33:00 1126
转载 隐藏进程检测
隐藏进程检测User Mode下的隐藏进程检测我们先来看一些简单的方法,这些方法可以用在ring3下,用不着驱动。检测的原理是每一个进程活动时都会暴露一些痕迹,可以通过这些痕迹检测到它们。这些痕迹包括打开的句柄、窗口和创建的系统对象。针对类似的检测方法来实现进程隐藏并不困难,但需要考虑进程工作时可能暴露出的所有迹象。目前还没有一个公开的rootkit做到了这一点(遗憾的是私有版本我也还没见到)。
2009-11-17 21:06:00 3250
原创 HttpSendRequest超时问题解决
刚解决了一个HttpSendRequest超时的问题。 目的:使用internet api进行get或post数据给服务器。 方法:通过线程进行get或post数据给服务器。 问题:刚开始的几个线程是可以进行正常操作的。但是在后面的线程会出现在HttpSendRequest中阻塞超时。 问题原因:internet 的句柄没有及时关闭。 解决方法:
2009-11-17 14:45:00 9096 2
原创 检测是否在虚拟机中
如何检测是否在虚拟机中,网上的代码一般都是检测虚拟机特性进行。原理就是通过汇编指令,引起异常。主要代码如下:// IsInsideVPCs exception filterDWORD __forceinline IsInsideVPC_exceptionFilter(LPEXCEPTION_POINTERS ep){ PCONTEXT ctx = ep->ContextRecord;
2009-11-16 20:03:00 2070
原创 获取传感器温度-硬盘温度篇
最近在研究硬盘温度的获取。看来ata spec,疯狂的在网上查找资料,还有就是分析hwmonitor.exe(这个帮助最大)。刚开始的时候什么都不会,到什么地方获取数据呢。在之前获取dmi中,有在spec中看到有温度。但是这个一般的主板商是不会写温度数据到里面的。而wmi很多就是读取dmi数据的。所以在获取cpu温度等上面,都是读不出数据的。因此,首先打消这个念头。 在疯狂的在网
2009-11-16 18:01:00 5305
转载 Win32 调试接口设计与实现浅析
所谓调试器实际上是一个很宽泛的概念,凡是能够以某种形式监控其他程序执行过程的程序,都可以泛称为调试器。在Windows平台上,根据调试器的实现原理大概可以将之分为三类:内核态调试器、用户态调试器和伪代码调试器。 内核态调试器直接工作在操作系统内核一级,在硬件与操作系统之间针对系统核心或驱动进行调试,常见的有SoftICE、WinDbg、WDEB386和i386KD等等;用户态调试器则
2009-11-09 18:29:00 1246
Compuware Devpartner Studio 9.0.2 Professional 种子和破解文件
2010-11-02
微软过滤驱动内存管理smbios说明等技术文档
2010-04-09
icrosoft Windows Internals Fourth Edition(2004).chm
2009-04-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人