有没有模拟'系统从磁盘载入并执行可执行文件的方法
系统执行一个可执行文件,都是从磁盘读入它的PE,把它加载至内存,定位后,从入口地址开始执行的。
我要问的问题是,可不可以自己把这个可执行文件的PE二进制数据加载至内存(这个应该没什么问题),然后让Windows知道这段数据是个可执行文件,从而能够让它开始运行呢?是不是需要获得它的入口地址,然后采取什么方法呢?Windows要是没有相关的函数的话,是不是可以采用汇编?
当然,常用的方法是把这个PE文件以资源的形式存在另一个可执行文件里,后者运行时把这个资源以二进制形式拷贝到磁盘,然后用ShellExecute()或CreateProcess()函数运行之。但是这个方法还是经过了磁盘文件,并且是通过Windows执行的。
我提出这个问题的初衷是想把程序的配置(一般是用ini文件或者注册表)以资源的形式存放在程序本身,但是问题是Windows不允许程序运行时修改自身,所以想另行启动一个进程,完成修改的作用。