![]() |
1
37
为了回答这个问题,特权指令是一种处理器操作码(汇编指令),它只能在“主管”(或环-0)模式下执行。 这些类型的指令通常用于从windows内核访问I/O设备和受保护的数据结构。 常规程序在“用户模式”(Ring-3)下执行,不允许直接访问I/O设备等。。。 正如其他人提到的,原因可能是堆栈损坏或函数指针调用混乱。 |
![]() |
2
7
这种情况通常发生在使用指向无效数据的函数指针时。 如果您有破坏返回堆栈的代码,也可能发生这种情况。有时追踪这类虫子是相当棘手的,因为它们通常很难复制。 |
![]() |
3
7
特权指令是仅允许在环0(即内核模式)中执行的IA-32指令。如果您在用户空间中遇到这个问题,您要么得到了一个非常旧的EXE,要么得到了一个损坏的二进制文件。 |
![]() |
4
5
正如我所怀疑的,我做的是件愚蠢的事。我想我解决这个问题的速度快了一倍,因为上面信息中的评论中有一些线索。多亏了这些人,尤其是那些在应用程序早期指向某个内容覆盖堆栈的人。事实上,我发现这里有几个答案比我标记为回答问题的帖子更有用,因为他们把我排在队列里,告诉我该去哪里找,尽管我认为这是答案的最佳总结。 事实证明,我刚刚添加了一个按钮,该按钮超过了包含一些工具栏按钮信息(位于堆栈上)的数组的最大大小。我忘了 #define MAX_NUM_TOOBAR_BUTTONS (24) 甚至存在! |
![]() |
5
4
我能想到的第一种可能性是,您可能正在使用一个局部数组,它位于函数声明的顶部附近。您的边界检查变得疯狂,覆盖了返回地址,它指向一些只允许内核执行的指令。 |
![]() |
6
2
错误位置0x00486752对我来说非常小,在可执行代码通常存在的位置之前。我同意丹尼尔的观点,这对我来说是一个疯狂的暗示。 |
![]() |
7
2
我在2000年用Visual C++ 6看到了这个。 在异常处理程序中,调试C++库调用它中的物理I/O指令。 如果我没记错的话,它是将状态转储到一个I/O端口,该端口过去用于DMA基本寄存器,我想微软的某个人正在使用它作为调试器卡。 查找可能导致诊断代码运行的潜在错误条件。
我正在调试、回溯和阅读DISS程序集。处理时出现异常
|
![]() |
8
2
这限制了用户编写的程序可能对系统造成的损害,并减少了系统实际崩溃的次数。 |
![]() |
9
2
在内核模式下执行时,操作系统可以不受限制地访问内核和用户程序的内存。
|
|
Drew Huslig · Pandas to\u sql右截断错误 7 年前 |
![]() |
nasck · 如何在vb中为odbc发送表 7 年前 |
![]() |
Dave · 使用C将数据插入数据库时出错# 7 年前 |
![]() |
AS7K · PHP 7-内置ODBC支持。。。还是这样? 7 年前 |