我想编写一个沙盒虚拟机来执行编译程序。我的目标是将该程序与操作系统的其余部分隔离开来,并控制其执行,使其不会对主机造成任何有害的影响。
我假设:
- 执行的程序被编译为可移植的可执行格式,它是机器码,而不是任何类型的字节码或用于 CLR,
- 执行的程序不允许与打印机、扫描仪等外围设备进行通信,并且不使用任何 GUI,
- 执行程序的主要任务是处理存储在本地文件中的一些数据(例如计算),并将其结果放入另一个本地文件中,
- 执行的程序不应该直接与操作系统通信,每个请求都应该由虚拟机处理,任何可能导致操作系统损坏的请求都应该被阻止。
我对沙盒虚拟机的架构和操作的概念:
- 应用程序由几个模拟对象组成:处理器、内存、对文件的 i/o 操作、
- 有一个模块可以读取编译文件并将可执行代码加载到虚拟内存中,
- 然后虚拟处理器从第一个字节开始处理,读取操作码,参数,如果需要,从内存中加载它们,执行命令并将结果放在适当的位置,如果需要设置虚拟标志,然后读取下一个命令,直到程序执行到最后。
你怎么看:这是一个好概念吗?你会改变什么来改善它?