如何运行流中的程序?(100分)

  • 主题发起人 主题发起人 mllee
  • 开始时间 开始时间
M

mllee

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个内存流(TMemoryStream),其内容为某一可执行文件,譬如:
procedure MyProc;
const
FILENAME = 'E:/a.exe';
var
MemoryStream: TMemoryStream;
begin
MemoryStream := TMemoryStream.Create;
MemoryStream.LoadFromFile(FILENAME);
//有没有什么办法可以在这里通过该内存流运行文件a.exe?不能使用临时文件,
//也不能直接去运行a.exe
MemoryStream.Free;
end;
声明:我绝不是想做病毒
 
觉得分少的话,我可以加分
 
不容易吧,你得知道 Windows 是怎样吧一个可执行文件加载入内存的
CreateFileMapping 创建文件映射是肯定有的,还有其他的一些操作
我就不知道了,那些操作要是泄漏出来了,可就不得了了:)

所以我估计你要失望了。恐怕暂时只有用临时文件的办法了:(
 
同意 beta 的意见。使用 CreateFileMapping 还有得说,使用 Stream 就没得说了。
 
那么如何用CreateFileMapping 创建文件映射呢?
 
程序中嵌入汇缟
用跳转指令跳到 MemoryStream 的首地址。
 
结束吧……
 
后退
顶部