вот написал код для спайсинга апи в своем процессе: PHP: program Projec_t1; uses windows, sysutils; type //msgbox=function (h:HWND; text:pchar; hdr:pchar; btn:UINT):bool;stdcall; jmp_far=record instr_push:byte; //здесь будет код инструкции push arg:dword; //аргумент push instr_ret:byte; //здесь будет код инструкции ret end; var old:array[0..5] of byte; adr:dword; jump:jmp_far; hlib:thandle; readed:dword; function Intercept_MessageBoxA(hWnd:HWND; text:pchar; hdr:pchar; utype:uint):bool;stdcall; var writen:dword; str:pchar; begin WriteProcessMemory(GetCurrentProcess(),pointer(adr), addr(old), 6, writen); str:='ololo_spliced'; //Вызываем оригинальную функцию asm push utype push str push text push hwnd call adr end; //Снова заменяем 6 байт функции на команду перехода на нашу функцию WriteProcessMemory(GetCurrentProcess(),pointer(adr),@jump,6,writen); result:=TRUE; end; begin hlib:=GetModuleHandle('user32.dll'); if hlib=invalid_handle_value then hlib:=loadlibrary('user32.dll'); adr:=dword(GetProcaddress(hlib,'MessageBoxA')); if adr<=0 then begin Messagebox(0,'fail',nil,0); exit; end; jump.instr_push:=$68; jump.arg:=DWORD(@Intercept_MessageBoxA); jump.instr_ret:=$C3; ReadProcessMemory( GetCurrentProcess(),pointer(adr), addr(old),6,readed); WriteProcessMemory(GetCurrentProcess(),pointer(adr),@jump,6,readed); MessageBox(0,'ololo','troll',0); end. почемуто когда доходит дело до вызова - вылетает stack overflow вроде все правильно... я и через прототип вызывал и через asm. нихера...