如果我们使用机器指令并直接访问硬件,可能会有什么风险

时间:2015-04-17 20:03:00

标签: compiler-construction

如果我使用机器指令并直接访问硬件,可能会有什么风险。如果在此上下文中解释访问冲突和缓冲区溢出,它会对我有所帮助吗?

1 个答案:

答案 0 :(得分:0)

当您编写汇编程序(比高级编程重)时,它将以用户模式运行 - 与其他所有.exe应用程序一样。应用程序只能在ram和一些CPU寄存器和一些指针中直接访问它们自己的段。如果应用程序想要输出或输入内容,则必须使用系统函数(API) - 即使它们是用汇编语言编写的。 存在缓冲区溢出的风险,如果您不好好处理数据模型,但可以将程序的某些段设置为不可执行或不可写,因此不存在缓冲区溢出注入的危险。 唯一能够直接访问漏洞硬件的程序是 kernelmode drivers (。sys文件)。 Kernelmode驱动程序中的运行时错误可能导致蓝屏。因此,程序员只为那些无法完成的事情编写Kernelmode驱动程序。主流程序员很少编写Kernelmode驱动程序。