|
[求助]驱动的内存访问异常能否捕获?
我试着把KeBugCheckEx函数Hook了一下,Hook函数里面第一条语句是给0地址赋值。 我用SOFTICE跟踪了一下,*(long*)0xffffffd0 = 0触发了KeBugCheckEx处的断点,然后会调用*(long*)0 = 0,这个触发了__CxxFrameHandler,继续跟踪了下去,一切正常,也回到了原来的地方,然后取消了Hook,并且成功离开DriverEntry,但是Ctrl+D放弃调试后就花屏了,蓝屏出错提示一开始闪了一下就花了,试了三次都是这样…… 既然异常已经成功捕获,那么这个蓝屏的可能性还有什么呢? |
|
[求助]驱动的内存访问异常能否捕获?
有KERNEL DEBUGGER也会BSOD。。。 |
|
[求助]驱动的内存访问异常能否捕获?
原先*(long*)4 = 0也直接蓝屏,原以为驱动里面不能捕获,承蒙LS高人指点,跟踪了一下,发现是异常处理库的一个BUG造成的。这个库是从一个nasm编写的lib库那里弄来的,这个lib库有些BUG,虽然已经修改了一部分,不过还存在问题,修改了以后,*(long*)4 = 0已经可以正常捕获。 这个库的异常处理代码的入口是__CxxFrameHandler,在这里加断点,*(long*)4 = 0可以断下,但是*(long*)0xffffffd0就断不下来。不过根据LS说的,在KebugCheckEx里面加了断点,可以断下,不过我不知道该怎么回去,LS可否再多指点一下…… |
|
[求助]驱动的内存访问异常能否捕获?
呃,蓝屏触发代码我也不知道在哪?这个没有办法吗? |
|
[求助]用WriteProcessMemory修改kernel32.dll返回487错误
停在系统断点时,Exe自身已经加载,ntdll.dll已经加载,不过kernel32.dll尚未加载,之后应该是直接调用ntdll.dll来加载kernel32等一系列所需dll的。 不过用OD调试停在系统断点时,kernel32已经存在,不知道它是怎么做的。 |
|
[求助]用WriteProcessMemory修改kernel32.dll返回487错误
目前的解决方法是,VirtualAllocEx分配一下空间,第一条指令是ret 4,然后用CreateRemoteThread创建一下线程,线程ret 4直接退出,主进程WaitForSingleObject等待该线程退出后,VirtualFreeEx释放空间,这样一来kernel32就被加载了。 |
|
[求助]用WriteProcessMemory修改kernel32.dll返回487错误
大侠帮个忙!为什么OD启动进程,第一次停在系统断点时,kernel32是已经加载的状况? |
|
[求助]有没有办法不修改dll文件本身,实现动态修改载入dll的基址?
我只知道先VirtualAlloc把位占了,等LoadLibrary占了其他的位后,再VirtualFree出来的方法,其他的帮不上忙。。。 |
|
[求助]调用KeWaitForSingleObject蓝屏?
非常感谢,用ObReferenceObjectByHandle所得到的Object已经可以正常进行Wait了。不过参数ObjectType不知道填什么才会得到PETHREAD,因为它是OPTIONAL,我就填了个0,运行起来还算正常。 |
|
[求助]调用KeWaitForSingleObject蓝屏?
非常感谢,换成ZwWaitForSingleObject就可以了,原来是要换个API啊。 KeWaitForSingleObject的对象是PETHREAD吗?有什么方法可以获得呢? |
|
[求助]调用KeWaitForSingleObject蓝屏?
那LS各位的意思是,线程相关的什么东西,都不能用来KeWaitForSingleObject么? [QUOTE=bozer;609458]Pointer to an initialized dispatcher object[/QUOTE] 注意后面的括号里面有个thread。Pointer to an initialized dispatcher object (event, mutex, semaphore, thead, or timer),这里的thread是什么意思? 本来自己创建一个事件对象也没什么关系,只是是否存在这种可能性:子线程设置事件后,原本在DriverUnload里面处于等待的主线程,早于子线程PsTerminateSystemThread之前就退出了?虽然可能性很小,但如果出现了,会不会有什么后果? 另外如果线程相关的任何东西都不能用来Wait,那么ring3下面对线程句柄进行Wait所等待的事件对象又是哪里来的? |
|
[求助]调用KeWaitForSingleObject蓝屏?
难道没有人用线程本身作参数等待线程结束的么?难道都是自己再创建一个事件对象来同步的么? |
|
[求助]调用KeWaitForSingleObject蓝屏?
如果等待的对象不是句柄,也请给一个类型说明啊,都是void*,我不知道传什么给它。 |
|
[求助]调用KeWaitForSingleObject蓝屏?
MSDN提到过: NTSTATUS KeWaitForSingleObject( IN PVOID Object, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL ); Object Pointer to an initialized dispatcher object (event, mutex, semaphore, thead, or timer) for which the caller supplies the storage. 还有个啥《Windows驱动编程基础教程》里面提到“实际上等待线程结束并不一定要用事件。线程本身也可以当作一个事件来等待。” 我本身就是初学驱动,原来只会玩玩ring3,ring3创建完线程就是这么等的,所以下意识认为也是这么写。不过根据MSDN的说法,应该是可行的,只是我不知道也找不到正确写法。 |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值