|
[讨论]进程监控蓝屏问题
建议把DUMP文件发上来比较好 |
|
[求助]ObReferenceObjectByHandle的问题
ObReferenceObjectByHandle((HANDLE)EventHandle,EVENT_ALL_ACCESS,*ExEventObjectType,KernelMode,(PVOID*)&RYYEvent,NULL); 没用过这种办法..不过把KernelMode改成usermode看看 |
|
[求助]欲学驱动,想先装个开发开发环境.问几个问题
1先按以下顺序装后工具: VC++6.0 DDK DriverStudio ------------------------------------------------------------------------------ 2给系统添上几个环境变量: 我的电脑->属性->高级->环境变量 接着新建下面几个用户变量 变量 值 描述 DDKROOT F:\WINDDK\3790.1830 你DDK安装所在的根目录 WORKPATH F:\MyDrivers 驱动工程文件目录,你放驱动项目的地方 WNETBASE F:\WINDDK\3790.1830 你DDK安装所在的根目录 ------------------------------------------------------------------------------ 3建立驱动工程文件目录 路劲为F:\MyDrivers,在MyDrivers的根目录下,创建名为dirs的无扩展名文件,内容为 DIRS=MyDriver (MyDriver是你的驱动文件所在的文件夹名) 如果以后有新的工程也要把工程名称添加到这里 DIRS= \ MyDriver1 \ MyDriver2 \ MyDriver3 也就是 在本目录下面有MyDriver1 MyDriver2 MyDriver3这几个工程 ----------------------------------------------------------------------------- 4,新建一MAKEFILE工程 打开我们的VC 假设工程名为MyDriver,工程位置为F:\MyDrivers\MyDriver 点"确定"后在弹出的窗口中填下面信息: 命令行:MakeDriver %DDKROOT% F: %WORKPATH% CHECKED 输出: MyDriver.sys(假设而已,可以自己定) 重建全部转换: -nmake/a 点"下一步"后填入下面信息: 命令行:MakeDriver %DDKROOT% F: %WORKPATH% FREE 输出: MyDriver.sys(假设而已,可以自己定) 重建全部转换: -nmake/a 这样工程配置就结束了,点完成 ------------------------------------------------------------------------------ 5在VC工具栏中,DriverStudio中设置DDK的安装路劲 ------------------------------------------------------------------------------ 6开始写文件了 把你的.CPP文件,.H头文件,makefile,sources,MakeDriver.bat等放进F:\MyDrivers\MyDriver 然后在VC的工具栏中,工程->添加到工程->文件,接着选择F:\MyDrivers\MyDriver的.CCP和.H文件即可,接着就可以编译了 ----------------------------------------------------------------------------- 附: MakeDriver.bat的内容为 @echo off if "%1"=="" goto usage1 if "%3"=="" goto usage2 if not exist %1\bin\setenv.bat goto usage3 call %1\BIN\setenv %1 %4 %2 cd %3 build -b -w %5 %6 %7 %8 goto ok :usage1 echo Error: the first parameter is NULL! goto exit :usage2 echo Error: the third parameter is NULL! goto exit :usage3 echo Error: %1\bin\setenv.bat not exist! goto exit :ok echo MakeDriver %1 %2 %3 %4 :exit 关于makefile和sources这俩个文件自己弄,很简单 |
|
“七嘴八舌:说说你曾经疯狂的事”活动结果公布!活动奖品已经发出
接触电脑不久..但对电脑很感兴趣...逃课是经常的事..记得有一次在路上见到高数老师...叫他他都不知道我是他学生好像........有时候感觉头脑里只有电脑....睡觉前还在想"今天驱动怎么蓝了.....觉得刚刚过去的那段时间很疯狂....有时候觉得我不是在浪费时间但又觉得有点空虚....而最近总算对电脑没那么感兴趣了.....写点代码也觉得累....还是改改路线...上课好.. |
|
[原创]简单inline hook ObReferenceObjectByHandle保护进程和屏蔽文件执行
不好意思.............这份写得太燎草了. __declspec(naked) T_ObReferenceObjectByHandle( IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType OPTIONAL, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL ) { __asm { ///////////////执行原先被修改的字节码 mov edi,edi push ebp mov ebp,esp //因为调用了我们这个函数,所以栈现在的情况是 // 参数1-->>参数2-->>参数3-->>参数4-->>参数5-->>参数6-->>返回地址-->>老的EBP(push ebp) // 执行完mov ebp,esp 后,ebp指向了栈顶,这个时候我们就可以用ebp来引用参数了 // 如下面的push [ebp+0x1c]就是用ebp来引用栈中参数 // 保存相关寄存器的值 pushad push [ebp+0x1c] push [ebp+0x18] push [ebp+0x14] push [ebp+0x10] push [ebp+0xc] push [ebp+8] call FilterFunction cmp eax,1 //是否匹配 //上面的这个过程可以看做是透明的..虽然有很多push..但不会影响到我们的栈 jz end //不匹配的..调用原来的地址+5个字节.ObReferenceObjectByHandle正常执行 mov eax,ObReferenceObjectByHandle add eax,5 jmp eax //否则 end: popad /* mov [ebp+8],-1 //--------->>无效句柄 mov eax,ObReferenceObjectByHandle add eax,5 jmp eax */ //下面我们用栈会溯来解决问题 mov esp,ebp //esp指向栈顶 pop ebp //ebp指向原来的栈底 ret 0x18 //返回..0x18 == 24 == 6个参数*4个字节 这样esp才能指向正常.程序才不会崩溃 ///这个地方也可以用来抵抗调试..这样肯定会到XX去.. } } |
|
|
|
[原创]Windows XP注册表文件格式简单分析
API直接做...说明你还不知道这东西的意义...哈哈 从安全的角度讲//API是不安全的... |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值