摘要: 转自盟主的文章在研究改别人的一个过滤驱动的时候,发现有的人会在preCreate回调里调用IoCreateFileSpecifyDeviceObjectHint打开Create参数里的文件名,并且用ZwReadFile读取文件并判断是否为pe文件。这种做法会导致一些小问题。其中过滤驱动并没处理fast io。然后我发现pre write回调偶尔会收不到消息。仔细跟踪下去,发现write消息发送了,但参数里的fileobject并不是Create回调里产生的,而居然是IoCreateFileSpecifyDeviceObjectHint产生的文件对象。而这个文件对象会有什么问题呢?见如下堆栈:f 阅读全文
posted @ 2012-06-08 23:41 kkindof 阅读(1229) 评论(0) 推荐(0) 编辑
摘要: kd> dt TCPROW_TYPEiphlpapi!TCPROW_TYPE TcpRowTypeDefault = 0n0 TcpRowType2 = 0n1 TcpRowTypeWithOwnerModule = 0n2 TcpRowTypeWithOwnerPid = 0n3 TcpRowTypeMax = 0n4kd> dt _TCP_CONNECTION_KEYiphlpapi!_TCP_CONNECTION_KEY +0x000 LocalSockAddr4 : sockaddr_in +0x000 LocalSockAddr6 : sockaddr_in6 +0x00 阅读全文
posted @ 2012-06-08 23:39 kkindof 阅读(489) 评论(0) 推荐(0) 编辑
摘要: !chkimg nt //检测模块代码是否被修改Thedt,可以使用dt -v显示结构的大小信息,dt -s xx nt!*xx*,能搜索大小为xx的结构体变量The!errorextension decodes and displays information about an error value.The!irqlextension displays the interrupt request level (IRQL) of a processor on the target computer before the debugger break.The!objaextension dis 阅读全文
posted @ 2012-06-08 22:28 kkindof 阅读(1214) 评论(0) 推荐(0) 编辑
摘要: --------- 阅读全文
posted @ 2012-06-08 22:26 kkindof 阅读(644) 评论(0) 推荐(1) 编辑
摘要: byshadow3转:http://hi.baidu.com/hnxyy/blog/item/c65aa86ebd56ceda80cb4a46.html前段时间在研究TDI和NDIS,发现在WINDOWS下复用端口并非很麻烦的事情,如果你对TDICLIENT比较熟悉的话,会发现这其实很容易,之前有很多种方法都可以复用端口,但是都会有或多或少的一些问题,例如hookwinsock函数,他需要把每个进程里的函数都hook,才能保证可以复用端口,而且这种方法对于win2k3的IIS6不通用,因为iis6有内核驱动http.sys来处理连接管理和数据接收等,当然后来还有NDIS上的hook,用他来接受 阅读全文
posted @ 2012-06-08 22:22 kkindof 阅读(6044) 评论(0) 推荐(0) 编辑
摘要: nt!_SECTION_OBJECT_POINTERS +0x000 DataSectionObject : 0x84b38388 Void +0x004 SharedCacheMap : 0x84e52458 Void +0x008 ImageSectionObject : 0x84a1a228 VoidDataSectionObject和SharedCacheMap里面对应的cache物理地址一样。ImageSectionObject的独立kd> !ca 84b38388 ControlArea @ 84b38388Segment e168ed98 Flink 00000000 .. 阅读全文
posted @ 2012-06-08 22:19 kkindof 阅读(577) 评论(0) 推荐(0) 编辑
摘要: typedef struct _SEGMENT { struct _CONTROL_AREA *ControlArea; ULONG TotalNumberOfPtes; ULONG NonExtendedPtes; ULONG Spare0; UINT64 SizeOfSegment; MMPTE SegmentPteTemplate; SIZE_T NumberOfCommittedPages; PMMEXTEND_INFO ExtendInfo; SEGMENT_FLAGS SegmentFlags; PVOID BasedAddress;//映象基地址 // // The fields 阅读全文
posted @ 2012-06-08 22:18 kkindof 阅读(575) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2012-06-08 22:17 kkindof 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 笔记是在写CyberInterceptor时为了UDP发包而写下的。获取物理网卡方法:1。遍历 注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards2。判断是否为物理网卡判断方法1:,有miniport的时候,可以查看miniport->SymbolicLinkName+0x0c0 SymbolicLinkName : _UNICODE_STRING "\??\PCI#VEN_11AB&DEV_4364&SUBSYS_303A17AA&REV_14# 阅读全文
posted @ 2012-06-08 22:16 kkindof 阅读(9731) 评论(0) 推荐(0) 编辑
摘要: XP环境:1。研究了在my_ethFilterDprIndicateReceivePacket中丢包情况//要想drop packet_arrays这些packet,使用miniportblock对应的ReturnPacketHandler来return//不能用ndis!ndisReturnpacket这函数。因为里面一些变量在我们现在拦截的这里还没设置好//调用ndis!ndisReturnpacket的话就会失败2。另外,如果想做tdi_event_connect拦截交互功能的话,最好是在tcpip!ArpRev,也就是tcpip协议驱动的RecvHandler中拦截比较好,因为如果系统 阅读全文
posted @ 2012-06-08 22:14 kkindof 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 在创建一个空的新文件的时候,写数据时,FSD会在cache中判断写的数据offset +len =len1是不是比原来的size大,如果是,则会把这个offset +len更新下去这时候,后面来一个no cache的写的时候,由于这时的写必须是加密后的,offset+len=len2肯定会比上面的len1大。FSD在no cache写的时候,发现len2比len1大,那FSD只会把len1的长度写下去,而len2-len1这个大小就会被漏掉PS:正在做的加密算法是明文4K对应密文8K所以要在cache write的时候也要更新这个大小。但这时候又有一个问题,是在cache write 前更新还 阅读全文
posted @ 2012-06-08 22:12 kkindof 阅读(249) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2012-06-08 22:11 kkindof 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 如果Process->SeAuditProcessCreationInfo.ImageFileName有值,NULL掉,并ExFreePool了。然后再遍历进程(简单zwqueryxxx即可),有神奇效果PS:进程名先查找Process->SeAuditProcessCreationInfo.ImageFileName,如果为空则obquery获取,并赋值到Process->SeAuditProcessCreationInfo.ImageFileName中,上面获取方法都没成功才会直接取Process->ImageFileName另外,asm说直接用zwqueryvir 阅读全文
posted @ 2012-06-08 22:03 kkindof 阅读(297) 评论(0) 推荐(0) 编辑
摘要: NDIS Loopback Discussionhttp://www.ndis.com/ndis-ndis5/loopback/loopback.htmLooping Back NDIS Packetshttp://msdn.microsoft.com/en-us/library/ff557071.aspx============================================================XP2环境下的具体流程:tcpip调用ndissend的时候//////////////////////////////////////////ndissend(minip 阅读全文
posted @ 2012-06-08 22:01 kkindof 阅读(1866) 评论(0) 推荐(0) 编辑
摘要: !PROCESS 0 1 explorer.exe !process 2f72 1和!process 81b3a980 1 结果1一样 (2f72是explorer的PIDbp /p 820dbbe0 win32k!xxxxx/t 就是线程bp win32k!xxxxxx".if(@$tpid != 0x999) {g;}"bu kernel32!LoadLibraryExW ";as /mu ${/v:MyAlias} poi(@esp+4); .if ( $spat( \"${MyAlias}\", \"*MYDLL*\" 阅读全文
posted @ 2012-06-08 21:58 kkindof 阅读(695) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2012-06-08 16:27 kkindof 阅读(3) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2012-06-08 16:08 kkindof 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 通过windows xp调试发现,这个端口是netbt启用关于SMB服务的时候开启的。\\Device\\NetbiosSmb这个设备对象就是NetBT驱动创建的(注意不是netbios驱动)端口的获取是通过注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Smb下的SessionPort键项获取的,如果没有的话,默认就是445。所以想改端口号的话,可以改这个,但是这样的话,远程客户端可能就访问不了。另外,除了SessionPort还有DatagramPort,下面是获取到端口后,绑定地址过程的堆栈 阅读全文
posted @ 2012-06-08 15:24 kkindof 阅读(8005) 评论(0) 推荐(0) 编辑