手机随时阅读
新人专享大礼包¥24
51CTO博客开发
关于IOCP中是否可以对同一socket连续投递的疑问已经很久了,主要的疑问在wsaSend是否可以保证数据的完整发送,是否会出现部分发送成功的情况? 网上大多数的建议都是WSASEND采用线性模式,即建立一个发送缓冲,当上一次send完成之后,再进行下一次的投递。那么WSASEND什么情况下会出现部分发送呢? &nbs
其它对象 设备可能还有其它一些需要在AddDevice中初始化的对象。这些对象可能包括各种同步对象,各种队列头(queue anchors),聚集/分散列表缓冲区,等等。事实上,在本书的其它地方讨论这些对象的初始化更合适。 初始化设备标志 设备对象中有两个标志位需要在AddDevice中初始化,并且它们在以后也不会改变,它们是DO_BUFFERED_IO和DO_DIRECT_IO
设备接口 用旧的命名方法命名设备对象,并创建一个应用程序能够使用的符号连接,存在着两个主要问题。命名设备对象所带来的潜在安全问题我们已经讨论过。此外,访问设备的应用程序需要先知道设备采用的命名方案。如果你的硬件仅由你的应用程序访问,那么不会有什么问题。但是,如果有其它公司想为你的硬件写应用程序,并且有许多硬件公司想制作相似的设备,那么设计一个合适的命名方案是困难的。最后,许多命名方案
在前一节中,我讲述了当WDM驱动程序被第一次装入时如何初始化。通常,一个驱动程序可以被多个设备利用。WDM驱动程序有一个特殊的AddDevice函数,PnP管理器为每个设备实例调用该函数。该函数的原型如下: NTSTATUS AddDevice(PDRIVER_OBJECT DriverObject,
WinDBG命令输入dd Nt!NtOpenProcess正常显示了,但有的执行不了, 事例: 一,WinDBG命令输入!process 0 0提示错误 lkd> !process 0 0 **** NT ACTIVE PROCESS DUMP **** NT&
zwSetSystemInformation函数是个未公开的函数,调用38号会加载驱动,对应的第二个参数为SYSTEM_LOAD_AND_CALL_IMAGE结构体,第三个参数为SYSTEM_LOAD_AND_CALL_IMAGE结构体的长度.. [cpp] view plaincopyprint? #inc
bool driver_zwload(char *strSvcName, char *strDrvPath) { HKEY hKey = NULL; bool bRet = false; char Data[4] = {0}; char strSubKey[MAX_PATH] = {0}; NTSTATUS stat
第二种方法如下: 一般情况下win2000启动后会开始加载特别的驱动win2k.sys。然而它并不是以其他驱动那样调用函数ZwLoadDriver, NtLoadDriver等。 事实上它是通过内核API函数ZwSetSystemInformation载入的。 该API通常用来设置类似文件分卷等系统信息,以及加载上面提到的驱动,文件缓存等等。 该函数调用方法如下: ZwSet
Loading drivers and Native applications from kernel mode, without touching registry * Security "How to load driver without touching registry from kernel mode", thi
一般在内核SSDT HOOK的时候就是直接钩住SSDT表替换NtOpenProcess的地址来达到保护进程的目的。而在InlineHook中,侧需要更进一步的了解NtOpenProcess函数,才能更好的做inlinehook。 首先说说Windows中用户层 OpenProces,WIN32函数OpenProces执行后,调用NTDLL.DLL中NtOpenProcess函数,然后
系统服务分发: lkd> dd KeServiceDescriptorTableShadow 805634e0 804e58d0 00000000 0000011c 80512114 // ntoskrnl 805634f0 bf99f280 00000000 0000029b bf99ff90 // win32k 8056
进程上下文和中断上下文是操作系统中很重要的两个概念,这两个概念在操作系统课程中不断被提及,是最经常接触、看上去很懂但又说不清楚到底怎么回事。造成这种局面的原因,可能是原来接触到的操作系统课程的教学总停留在一种浅层次的理论层面上,没有深入去研究。 处理器总处于以下状态中的一种: 1、内核态,运行于进程上下文,内核代表进程运行于内核空间; 2、内核态,运行于中断上下文,内核代表硬件运
直接上图 步骤一 步骤二
WTL嵌入类的架构可以使整个程序很清晰,系统托盘气泡提示、上下文菜单处理可以分别独立出来,以下是实现代码,很清晰就不注释了。基本上这两个类很少需要修改,因此我把它们放到了系统包含文件搜索路径中。 //ContextMenu.h #pragma once template <class T> class CContextMenu { public:  
1 this->m_hwnd 2 CWnd::GetSafeHwnd 获取窗口类的窗口句柄 HWND GetSafeHwnd( ) const; Returns m_hWnd, or NULL if the this pointer is NULL. 3 CW
HANDLE m_hProcessSnap = NULL; HANDLE m_hThreadSnap = NULL; HANDLE m_hProcess = NULL; HANDLE m_hThread = NULL; PROCESSENTRY32 m_pe32; THREADENTRY32 m_te32; &nb
【前言】 写这篇文档的时候由于我足够菜,碰到了不少问题,多谢bkbll,a1rsupply和SobeIt的指点,还有TCH的辛勤劳动,才有这篇文档的诞生,本文中可能存在一些错误,这些错误都是由于我的失误造成的,如果您有什么意见和看法,欢迎来http://www.itaq.org指出,或者E-mail:zf35@citiz.net 【概述】 在服务器上实现对进程创建的控
[cpp] view plaincopy 1. // Activate/Deactivate hooking engine 2. BOOL CModuleScope::InstallHookMethod(BOOL bActi
2.Win32用户级钩子 A. 窗口子类 这种方法适用于那些会根据不同窗口过程的实现而具有不同行为的应用程序。要完成上述工作(通过更改窗口过程来执行用户自定义代码),只需对该特定窗口简单调用SetWindowLongPtr(),传递GWLP_WNDPROC和用户自定义窗口过程的指针作为实参即可。一旦建立好用户自定义窗口过程,以后windows每次
原文出处:http://www.codeproject.com/system/hooksys.asp 简要介绍 拦截win32 API 调用对于多数windows开发人员来说都一直是很有挑战性的课题,我承认,这也是我感兴趣的一个课题。钩子机制就是用一种底层技术控制特定代码段的执行,它同时提供了一种直观的方法,很容易就能改变操作系统的行为,而并不需要涉及到代码。这跟一些第三方产品类似
RemoteDLL是老外开发的一款DLL注入、卸载工具,它已经在许多顶级程序中使用,如pwdump等,许多间谍软件都使用这种技术隐藏自己的进程,其中包含注入到正常的windows进程中,你可以使用该工具轻松注入进程,并且可以帮助删除恶意的DLL。它支持下面的DLL注入方法: 1:CreateRemoteThread 2:NtCreateThread [Good for DLL In
1、在对话框中添加一个标签页控件,并为此控件关联一个CTabCtrl类变量m_tabctrl. 2、创建若干个对话框资源作为标签页控件的标签。 修改两个属性: Border: none // 边界为空,这样它就没了标题栏 Style: Child // 这个模板就可以当作另一个窗口的子窗口了在对话框的初始化函数 3,
转自 Rover12421 ‘s Blog 三.解决连接错误 到现在为止,所以代码已经没有任何错误了,但在Gh0st还是编译不成功,而错误全部是在连接错误上。下面来解决掉这些链接错误。 3.1 CJ60StaticLib链接库错误 首先我们看到的是CJ60StaticLib的链接错误 1>
转自 Rover12421 ‘s Blog 二.编译Gh0st 成功编译CJ60Lib界面库之后,就可以开始编译Gh0st了。 2.1 转换Gh0st3.6项目 直接用VS2010打开Gh0st3.6\gh0st.dsw 提示转换项目,确定转换就行了。这里一共三个项目:gh0st,install,svchost。编译的时候需要先编译svchost
转自 Rover12421 ‘s Blog 用Vs编译Gh0st修改的工作量还是挺大的,毕竟从VC6.0移植到VS2010平台,已经是一个很大的跨越了,VS2010相对于VC6.0也改进了不止一点了。Gh0st3.6使用了第三方界面库CJ60Lib,目前这个库只支持到VC6.0,而其后的版本已经商业化,所以使用VS2010编译Gh0st的时候,需要重新编译CJ60Lib。VS2010
在新的Windows Server2008 R2上安装VS 2008 ,报错提示:You must use the Role Management Tool to install or configure Microsoft .NET Framework 3.5。为什么在我本机的WIN7上不会出现这样的问题呢??? Ok,让我们来解决它,在Server Manager 中选择Fe
14.2 选词控件的渲染 这个控件由于使用了三个子窗口来实现功能,所以它的渲染窗口实现非常简单,只是负责描绘背景。代码如下。 void FalgardIMEShowWindow::render() { IMEShowWindow* w = (IMEShowWindow*)d_window; &
第二个子状态,获取结果字符串的状态。同理这个函数获取的也是Unicode字符串。 if(lParam & GCS_RESULTSTR) { LONG buflen = ImmGetCompositionStringW(hIMC,GCS_RESULTSTR,NULL,0); &nbs
选自:《CEGUI深入解析》 第13章 中文输入 CEGUI可以显示中文,前文已经简单的介绍过。哪么如何在CEGUI中输入中文呢?计算机原生支持英文的输入,但要输入其他的文字则需要输入法IME(Input Method Editor)的支持。我们前文已经介绍过CEGUI的String类其实保存的是Unicode字符串。所以CEGUI其实是可以支持任何字符的显示的,只要有对应的字体支持
Copyright © 2005-2022 51CTO.COM 版权所有 京ICP证060544号