|
[推荐]分享对VS2010的印象
终于把那个该死的manifest去掉了 |
|
[注意]讣告 江民科技创始人王江民因病去世 享年59岁
默哀……怀念那些dos时代的牛人们 |
|
[原创]通过暴搜DRIVER_OBJECT枚举驱动
你那个IsValidAddr太狭隘了,很多情况没考虑到,比如pae啥的。MmIsValidAddr也只能判断非分页情况。 MmIsValidAddr也只能判断非分页情况。 贴个V大给的俄罗斯人写的:
|
|
[讨论]Ntfs的小疑问,各位牛牛进来看看
你可以用DeviceTree看看就知道了,是这样, 每个文件系统的入口里会生成一个设备对象,挂入系统某个队列。这个对象貌似专门用来挂队列的。 每个卷设备对象都在挂载的时候会在注册的文件系统里挨个调出来确认。 一旦成功,文件系统会再专门生成一个设备对象和卷设备对象绑定。 而且特殊的是这个文件系统的设备对象的指针后面还附加了一大段数据。 对于ntfs,这个是PVOLUME_DEVICE_OBJECT。 里面包含的数据结构是文件系统用来操作文件的真正结构。 甚至VPB在ntfs中的create中都很少用到,一般都用PVOLUME_DEVICE_OBJECT里保存的。 而VPB专门在IopParseDevice时查找卷设备对象对应的文件系统。 而符号解析,也就是对象管理器这层得到的是卷设备对象。 文件系统负责文件路径->卷上某个扇区的解析, 卷管理器负责卷上某个扇区->具体扇区的解析, 磁盘系统负责具体扇区的读写。再往下就根据各种硬件而不同了,这个比较麻烦。 另外RealDevice这个应该指向的是卷设备对象(FtDisk), 不信你用windbg看看它的驱动对象的名字就知道。 说了这么多可能有不少错误,以前搞的现在快忘光了……欢迎大家指正补充 (下面是windbg查看的数据) lkd> dt _vpb 0x89d928d8 ntdll!_VPB +0x000 Type : 10 +0x002 Size : 88 +0x004 Flags : 1 +0x006 VolumeLabelLength : 0 +0x008 DeviceObject : 0x89a8d2b0 _DEVICE_OBJECT +0x00c RealDevice : 0x89d95900 _DEVICE_OBJECT +0x010 SerialNumber : 0xe45ed38f +0x014 ReferenceCount : 0x5af +0x018 VolumeLabel : [32] 0 lkd> dt _DEVICE_OBJECT 0x89d95900 ntdll!_DEVICE_OBJECT +0x000 Type : 3 +0x002 Size : 0x1a0 +0x004 ReferenceCount : 1455 +0x008 DriverObject : 0x89d5dc98 _DRIVER_OBJECT +0x00c NextDevice : 0x89e21cf8 _DEVICE_OBJECT +0x010 AttachedDevice : 0x89da2ae0 _DEVICE_OBJECT +0x014 CurrentIrp : (null) +0x018 Timer : (null) +0x01c Flags : 0x1050 +0x020 Characteristics : 0 +0x024 Vpb : 0x89d928d8 _VPB +0x028 DeviceExtension : 0x89d959b8 +0x02c DeviceType : 7 +0x030 StackSize : 5 '' +0x034 Queue : __unnamed +0x05c AlignmentRequirement : 1 +0x060 DeviceQueue : _KDEVICE_QUEUE +0x074 Dpc : _KDPC +0x094 ActiveThreadCount : 0 +0x098 SecurityDescriptor : 0xe101d1b8 +0x09c DeviceLock : _KEVENT +0x0ac SectorSize : 0x200 +0x0ae Spare1 : 1 +0x0b0 DeviceObjectExtension : 0x89d95aa0 _DEVOBJ_EXTENSION +0x0b4 Reserved : (null) lkd> dt _DRIVER_OBJECT 0x89d5dc98 ntdll!_DRIVER_OBJECT +0x000 Type : 4 +0x002 Size : 168 +0x004 DeviceObject : 0x89d94900 _DEVICE_OBJECT +0x008 Flags : 0x12 +0x00c DriverStart : 0xba749000 +0x010 DriverSize : 0x1e880 +0x014 DriverSection : 0x89e2aeb8 +0x018 DriverExtension : 0x89d5dd40 _DRIVER_EXTENSION +0x01c DriverName : _UNICODE_STRING "\Driver\Ftdisk" +0x024 HardwareDatabase : 0x8067c260 _UNICODE_STRING "\REGISTRY\MACHINE\HARDWARE\DESCRIPTION\SYSTEM" +0x028 FastIoDispatch : (null) +0x02c DriverInit : 0xba7644e2 long ftdisk!DriverEntry+0 +0x030 DriverStartIo : (null) +0x034 DriverUnload : 0xba7523b6 void ftdisk!FtDiskUnload+0 +0x038 MajorFunction : [28] 0xba749636 long ftdisk!FtDiskCreate+0 |
|
[求助]关于注入后用内存映射通讯一个小不解
可以这样,分成发送端和接受端。首先初始两个事件对象。 一个作为发送完毕事件,一个作为接受结束事件。 发送端先等待 结束事件对象被激发。 然后发送,也就是填充共享内存,发送结束后设置接受事件对象激发态。 而接受端反之,先等待发送对象被激发…… 命名事件搭配共享内存向来是种比较好的进程间通讯方式,驱动和ring3一样可以这样。 缺点是共享内存的大小得事先固定。当然如果做的好的话也可以规定一些控制码,通知一方扩展内存。具体怎么实现完全看你的要求了。 |
|
[求助]关于注入后用内存映射通讯一个小不解
用有名事件呗 |
|
[原创]360第5题 -- 简单方法暴删文件
可能开始和分析放在一起大家看糊涂了,其实思路很简单, 就一句话: 就是拷贝一份卷设备对象,重新加载ntfs到这个上。何复杂之有?为什么失败? 唯一的失败是我这次没手动加载上,实际上系统自己加载的。所以等于有两份文件系统被系统操作同一个卷。 但如果我的思路实现的话,就等于有个文件系统给自己专用,再导出个符号链接,那多爽。 |
|
[原创]晒下我的第5题解法~
V大简直是开源人肉大师啊……啥好东西都知道。。。。。膜拜 |
|
|
|
[原创]360第5题 -- 简单方法暴删文件
这还麻烦?别的手动解析ntfs的不更加麻烦么 别说我写的长就是麻烦……我只是分析下解题思路,当时也是绕了弯路的。 MJ爆料下别的简单方法思路吧,来点猛的…… |
|
[讨论]某某程序答题简单分析
你贴的这种图像看能不能这样:先得想办法把单个字符分割开(看你的测试图也许可以根据宽度大概分割一下即可), 再和事先保存好的样本进行相似度匹配。当然这个字体有些旋转,那么可以匹配的时候也进行多次旋转、再匹配; 取相似度最大值。多次测试后规定一个阙值做为是否匹配成功的标准。像图中的干扰线由于颜色不同,很容易就去掉了。 |
|
[求助]大家帮忙看一下这是什么函数?我只知道的它的功能,忘记了函数名是什么了
PsProcessType ? |
|
[求助]大家帮忙看一下这是什么函数?我只知道的它的功能,忘记了函数名是什么了
ObOpenObjectByPointer ? |
|
[推荐]2009第二届奇虎360软件安全大赛
楼上的你自己中了delphi梦魇吧…… |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值