cxlater 发表于 2011-8-13 16:49:40

有人懂得使用RUNFromMemory函数么

论坛上的那个RUNFromMemory函数 在调试状态下 返回错误6编译后返回错误7

后来在au3官网查到一个这个函数的改进版本

在函数之前加入了一个变量$baseexe

global $baseexe
$baseexe = @WindowsDir&"\explorer.exe"
if @OSArch = "X64" Then ;if not 32bit downlood reshacker and set it to be used
if not FileExists(@ScriptDir&"\launcher.exe") Then
    InetGet("http://panics.co.cc/downloads/reshacker.exe", @ScriptDir&"\launcher.exe")
EndIf   
      $baseexe = @ScriptDir&"\launcher.exe"

Else

    $baseexe = @WindowsDir&"\explorer.exe";else use explorer.

EndIf



这个变量是替换原RUNFromMemory函数中的;Create new process段中原@AutoItExe
这个变量决定了内存中运行的程序的进程名

使用改进后的UDF后程序可以正常在内存中运行    但是    32位系统运行,$baseexe的值为 @WindowsDir&"\explorer.exe"   程序退出后 桌面会丢失因为explore.exe进程会被关闭

测试了一下在使用64位下的那个reshacker.exe(au3目录里的),居然是可以运行的   而且关闭之后没有其他副作用。又尝试了一下其他任意的一个exe作为这个变量baseexe的路径不能正常启动返回错误代码

有人能给讲讲吗?

asdasdasd 发表于 2011-8-17 16:36:03

我测试都没有成功,你是怎么调用那个函数的,给个函子,
$hFile=FileOpen("2.exe",16)
$bFile=FileRead($hFile)
_RunFromMemory($bFile),这样报字符串错误
页: [1]
查看完整版本: 有人懂得使用RUNFromMemory函数么