Procedure MachineCodeVirtualAlloc(a,b) *vm = VirtualAlloc_(#Null,?ecode-?scode,#MEM_COMMIT,#PAGE_EXECUTE_READWRITE) If(*vm) CopyMemory_(*vm,?scode,?ecode-?scode) eax_result=CallFunctionFast(*vm,a,b) VirtualFree_(*vm,0,#MEM_RELEASE) ProcedureReturn eax_result EndIf EndProcedure rv=MachineCodeVirtualAlloc(7,12) MessageRequester("MachineCodeVirtualAlloc",str(rv)+space(50),#PB_MessageRequester_Ok) #HEAP_CREATE_ENABLE_EXECUTE=$00040000 Procedure MachineCodeHeapCreate(a,b) hHeap=HeapCreate_(#HEAP_CREATE_ENABLE_EXECUTE,?ecode-?scode,?ecode-?scode) If(hHeap) CopyMemory_(hHeap,?scode,?ecode-?scode) eax_result=CallFunctionFast(hHeap,a,b) HeapDestroy_(hHeap) ProcedureReturn eax_result EndIf EndProcedure rv=MachineCodeHeapCreate(7,12) MessageRequester("MachineCodeHeapCreate",str(rv)+space(50),#PB_MessageRequester_Ok) End ; 8B442404 mov eax,[esp+4] ; 03442408 add eax,[esp+8] ; C20800 ret 8 DataSection scode: Data.c $8B,$44,$24,$04,$03,$44,$24,$08,$C2,$08,$00 ecode: EndDataSection