资 源 简 介
Plato是一个使用PHP语言编写的x86模拟器。
Plato的基本构成是一个虚拟机。通过虚拟x86的机器环境,Plato可直接执行机器指令。机器指令使用Windows的PE(EXE/DLL)格式进行封装,并附加一些特别的规定对文件进行约束。因而,尽管Plato需要在PHP环境中运行,但并不需要额外的扩展支持,也能执行符合规范的PE文件。
目前可以使用C语言编写PE文件。Plato提供了所需的宏和函数定义文件。
Plato的内部是由多个模块和构件组成的,其中包括文件加载器、CPU模拟器(调度器/解码器/通用寄存器/ALU)、内存模拟器、PE文件分析解码器,以及异常处理器、简易反汇编引擎和服务子程序处理器等。同时,通过版本扩展机制,Plato还可执行不同版本规范约束下的PE文件。
目前,Plato支持超过70条指令,并基本完整地实现了它们的的执行逻辑。不过,还不支持MMX/SSE等扩展指令集。
Plato通过地址中断的形式提供“服务子程序”功能。通过使用服务子程序,PE文件可以与PHP环境进行交互。服务子程序维持一个参数池和变量池,参数池保存了调用函数时所需的参数,而变量池则用于管理PHP变量。PE文件通过调用服务子程序,可以向PHP环境注册一个函数,也可以调用PHP语言结构/函数,此外还实现了异常处理(try-catch-final)和断点调试(断点回调)等功能。
相关页面
开发和运行需要的环境,请点击这里查看。
如何开发Plato环境可以使用的PE文件,请点击这里查看。
如何在PHP文件中调用Plato执行PE文件,请点击这里查看。
想知道异常处理