delphi xe2 exec in memory 内存运行 解决x64位下不稳定问题以及不能等待执行的问题

在使用MemExe模块进行内存运行时,遇到在64位环境下不稳定和无法等待主线程的问题。为适应DelphiXE2的08R2 64位开发环境,对原有模块进行了改造,以改善其兼容性和控制执行流程。
摘要由CSDN通过智能技术生成

以前一直用的MemExe模块,这个在国内互联网里面到处复制的泛滥,都是98-99年的东西了。

 

现在的开发环境是08R2 64位,这个模块经常导致程序不能正常运行,而且没有等待主线程的问题。

 

对国外一个优秀的内存运行改装一下:

{ uExecFromMem

  Author: steve10120
  Description: Run an executable from another's memory.
  Credits: Tan Chew Keong: Dynamic Forking of Win32 EXE; Author of BTMemoryModule: PerformBaseRelocation().
  Reference: http://www.security.org.sg/code/loadexe.html
  Release Date: 26th August 2009
  Website: http://ic0de.org
  History: First try


  Additions by testest 15th July 2010:
  - Parameter support
  - Win7 x64 support
  Additions by a05356316 5th Aug 2012:
  - Support For Delphi XE2
  - Support For Wait Main Process
}
unit uExecFromMem;

interface

uses Windows, dialogs;
function ExecuteFromMem(szFilePath, szParams: string; pFile: Pointer): DWORD;

implementation

function NtUnmapViewOfSection(ProcessHandle: DWORD; BaseAddress: Pointer): DWORD; stdcall; external 'ntdll';

type
  PImageBaseRelocation = ^TImageBaseRelocation;

  TImageBaseRelocation = packed record
    VirtualAddress: DWORD;
    SizeOfBlock: DWORD;
  end;

procedure PerformBaseRelocation(f_module: Pointer; INH: PImageNtHeaders; f_delta: Cardinal); stdcall;
var
  l_i: Cardinal;
  l_codebase: Pointe
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值