李sir_Blog

博客园 首页 联系 订阅 管理

随笔分类 -  底层

上一页 1 2 3 下一页

摘要:http://www.360doc.com/content/10/0731/09/1794115_42661252.shtml一、安装VS2008二、安装Visual Assist (这不是必需的)但它确是我们开发时不可多得的好工具三、安装WDK四、安装DDKWizard下载地址:http://ddkwizard.assarbad.net/需要下载的文件有1、ddkwizard_setup.exe2、ddkbuild_bat.zip3、ddkbuild_cmd.zip安装第一个文件跟安装普通程序一样只需要按默认设置即可2、3两个文件只需要解压copy到我们的wdk所有的根目录即可接下来的我们便 阅读全文
posted @ 2010-12-09 10:14 李sir 阅读(2090) 评论(0) 推荐(0)

摘要:在公元3400年以前产生的UUID/GUID与任何其他产生过的UUIDs/GUIDs都不 相同。GUID不重复的特性倒是可以用了做随机字符比如把窗口类名和标题名都用GUID,那FindWindow就无效了.使用CoCreateGuid函数,你需要#include <ObjBase.h>#pragma comment(lib,"ole32.lib")//Get the GUID,//cd... 阅读全文
posted @ 2010-12-01 10:05 李sir 阅读(461) 评论(0) 推荐(0)

摘要:最近写东西的时候,需要加上监控主机开机启动登录注销等信息,解决的方法很多,比如Hook nt!NtExitWindowEx,拦截WM_ENDSESSION消息(部分)其实,windows在NT4以上的平台已经引入了这种Notify机制,要监控主机开机启动登录注销等信息,只需向系统注册即可,我的解决方法分2个部分.DemonApp.exe负责向windows注册.,实际上就是写注册表DemonDll... 阅读全文
posted @ 2010-12-01 10:03 李sir 阅读(1083) 评论(0) 推荐(0)

摘要://注射void CInjectDlg::OnButtonInject(){ int nPid=0; WCHAR szDllPath[MAX_PATH]={0}; int nDllNameSize=0; //获取选择的进程PID nPid=m_CtrCboProcess.GetUserChoosePid(); if (nPid<8) { ... 阅读全文
posted @ 2010-12-01 09:56 李sir 阅读(1151) 评论(0) 推荐(0)

摘要:NTSTATUS WINAPI Hook_NtQueryDirectoryFile(IN HANDLE FileHandle,IN HANDLE Event OPTIONAL,IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,IN PVOID ApcContext OPTIONAL,OUT PIO_STATUS_BLOCK IoStatusBlock,OUT PVOID FileInformation,IN ULONG FileInformationLength,IN FILE_INFORMATION_CLASS FileInformationClass,IN BO 阅读全文
posted @ 2010-12-01 09:52 李sir 阅读(4005) 评论(2) 推荐(0)

摘要:voidChangeByteOrder(LPSTRlpString,intnLen){CHARc;//636372756E2E636F6Dfor(inti=0;i<nLen;i+=2){c=lpString[i];lpString[i]=lpString[i+1];lpString[i+1]=c;}}//获取硬盘序列号VOIDGetDiskNum(HWNDhWnd){CHARszDiskNu... 阅读全文
posted @ 2010-12-01 09:49 李sir 阅读(903) 评论(0) 推荐(0)

摘要:在某公司实习完,再次回到寝室。还是在学校好。实习期间的给我的任务就是为项目添加一个强行删除的模块。背景是硬盘上存储空间不够时,需要删掉老的文件,如果这时后,老的文件被打开了,没有关掉,就无法删除。所以叫我写一个这样的功能。所谓干净,指的是释放掉这个被占用的句柄。强行删除的方法很多,用驱动直接发磁盘IRP。等等查阅相关资料后。整理思路如下,如果有同学以后要写这样的功能,可以参考,1.ZwQueryS... 阅读全文
posted @ 2010-12-01 09:29 李sir 阅读(2278) 评论(0) 推荐(0)

摘要:輔助材料……原文地址:http://hi.baidu.com/ring3world/blog/item/3f0fb1dbf1fa0a65d0164eab.htmlNative API乃Windows用户模式中为上层Win32 API提供接口的本机系统服务。平常我们总是调用MS为我们提供的公用的Win32 API函数来实现来实现我们系统的功能。今天我们要谈的是如何通过本机... 阅读全文
posted @ 2010-12-01 09:21 李sir 阅读(866) 评论(0) 推荐(0)

摘要:GetVolumeInformation:Retrieves information about the file system and volume associated with the specified root directory.GetVolumeInformation( lpRootPathName: PChar;        {磁盘驱动器代码字符串} lpVolumeNameBu... 阅读全文
posted @ 2010-11-30 20:16 李sir 阅读(462) 评论(0) 推荐(0)

摘要:1:設備對象是系統為幫組軟件管理硬件而創建的數據結構,一個物理硬件可以有多個這樣的數據結構。處於堆棧最底層的設備對象稱為物理設備對象(PDO);2:操作系統的pnp管理器按照設備驅動程序的要求構造了設備對象堆棧。總線驅動程序的任務就是枚舉總線上的設備。并為每個設備創建一個PDO;一旦總線驅動程序檢查到新硬件存在。Pnp管理器就創建一個PDO.創建完PDO后。PNP管理器參照注冊表中的信息查找于這個PDO相關的過濾器和功能驅動程序。系統安裝程序負責添加這些注冊表項。而驅動程序包中的控制硬件安裝的INF文件負責添加其他表項。這些表項定義了過濾器和功能驅動程序在堆棧中的次序。PNP管理器先裝入最底層 阅读全文
posted @ 2010-11-25 17:54 李sir 阅读(958) 评论(0) 推荐(0)

摘要:摘要: 给32位的PE文件加壳,包括exe, dll, ocx, 服务程序,com组件等,差不多所有的PE文件都可以用这个给加上了。我写的这个程序需要插上一个U盘,随便有一个U盘就可以,然后才能给程序加壳,加壳的程序也依靠这个U盘才能运行,有点意思吧。先把程序最主要的函数写到下面。//---------------------------------------------------------... 阅读全文
posted @ 2010-11-19 17:05 李sir 阅读(2789) 评论(7) 推荐(1)

摘要:参考FileSpy写的文件监控程序,但比它的抽象多了。可能瑞星的文件驱动也是这样写的,否则它为什么老阻止我安装驱动呢。测试程序是一个命令行小程序,负责打开设备,开启监控和关闭监控,运行时开启和关闭两次。在DebugView中查看输出信息,我只是想看看能不能达到目的,所以信息量很少。在驱动程序中开启和关闭监控的代码:VOID AttachedToDeviceByName (__in PWSTR De... 阅读全文
posted @ 2010-11-19 16:54 李sir 阅读(754) 评论(0) 推荐(0)

摘要:转载自http://www.misssir.cn/art/_show.aspx?art=49摘要: 我想做一个unlocker一样的程序,不管这个文件有没有被使用,先实现删除它。在查资料过程中,就知道了如果不访问磁盘扇区的话,除非写驱动才能做到。奈何时间有限,工作匆忙,一直没有完成。而且忽视了更简便的方法——在别的路径下把修改后的OCX控件重新注册一下就可以了。 这些都不... 阅读全文
posted @ 2010-11-19 16:40 李sir 阅读(2136) 评论(0) 推荐(0)

摘要:转载于http://www.misssir.cn/art/_show.aspx?art=44摘要: 从主控开始遍历,先是RootHub,然后每个端口,端口连接的设备类型、描述符,如果是Hub则继续向下遍历。代码已贴出来,如果您看到附件中的样例,会不会感觉和DDK中的usbview很像呢?USB View是DDK中的示例程序,以前我也看过,感觉有点乱,这些天我有的是时间,就模仿它用VC++重新写了一... 阅读全文
posted @ 2010-11-19 16:34 李sir 阅读(10170) 评论(1) 推荐(1)

摘要:理解Windows NT驱动程序最重要的概念之一就是驱动程序运行时所处的“执行上下文”。理解并小心地应用这个概念可以帮助你构建更快、更高效的驱动程序。NT标准内核模式驱动程序编程的一个重要观念是某个特定的驱动程序函数执行时所处的“上下文”。传统上文件系统开发者最关注这个问题,但所有类型的NT内核模式驱动程序的编写者都能从执行上下文的深刻理解中获益。小... 阅读全文
posted @ 2010-11-19 16:29 李sir 阅读(533) 评论(0) 推荐(0)

摘要:这种方式需要在创建完设备对象后,为设备设置属性DO_DIRECT_IO和缓冲读写设备不同,直接方式读写设备,操作系统会将用户模式下的缓冲区锁住。然后操作系统将这段缓冲区在内核模式地址空间中再映射一遍。这样,用户模式的缓冲区和内核模式的缓冲区指向的是同一区域的物理内存。无论操作系统如何切换进程,内核模式地址保持不变。操作系统(IO管理器)先将用户模式的地址锁定后,操作系统(IO管理器)用内存描述符表... 阅读全文
posted @ 2010-11-19 16:24 李sir 阅读(2750) 评论(0) 推荐(0)

摘要:在调用DeviceIoControl时,应用层的输入缓冲区的内容被复制到IRP中的Irp->AssociatedIrp.SystemBuffer内存地址中。这个步骤和缓冲区模式IOCTL处理一样。但是,对于DeviceIoControl指定的输出缓冲区的处理,操作系统将该缓冲区锁定,然后在内核模式地址空间中重新映射一段地址。在驱动程序中,METHOD_IN_DIRECT 和 METHOD_O... 阅读全文
posted @ 2010-11-19 16:22 李sir 阅读(1652) 评论(0) 推荐(0)

摘要:在不同的场合,很多驱动编写人员需要在驱动和用户程序间共享内存。两种最容易的技术是:l 应用程序发送IOCTL给驱动程序,提供一个指向内存的指针,之后驱动程序和应用程序就可以共享内存。(应用程序分配共享内存)l 由驱动程序分配内存页,并映射这些内存页到指定用户模式进程的地址空间,并且将地址返回给应用程序。(驱动程序分配共享内存)使用IOCTL共享Buffer:使用一个IOCT描述的Buffer,在驱... 阅读全文
posted @ 2010-11-19 16:15 李sir 阅读(5668) 评论(1) 推荐(0)

摘要:下面是开发人员在使用 Windows NT 设备驱动程序时应当避免的事项列表: 1. 一定不要在没有标注 I/O 请求数据包 (IRP) 挂起 (IoMarkIrpPending) 的情况下通过调度例程返回 STATUS_PENDING。 2. 一定不要通过中断服务例程 (ISR) 调用 KeSynchronizeExecution。 它会使系统死锁。 3. 一定不要将 DeviceObject-... 阅读全文
posted @ 2010-11-19 15:45 李sir 阅读(554) 评论(0) 推荐(0)

摘要:1.背景在windows平台下,应用程序通常使用API函数来进行文件访问,创建,打开,读写文件。从kernel32的CreateFile/ReadFile/WriteFile函数,到本地系统服务,再到FileSystem及其FilterDriver,经历了很多层次。在每个层次上,都存在着安全防护软件,病毒或者后门作监视或者过滤的机会。作为安全产品开发者,我们需要比别人走得更远,因此我们需要一个底层... 阅读全文
posted @ 2010-11-19 11:02 李sir 阅读(779) 评论(0) 推荐(0)

上一页 1 2 3 下一页