function Test():boolean;
var
  AsmCode:array[0..10]of byte;
begin
  AsmCoce[0]:= ...
  AsmCoce[*]:= ...
  RunAsm(AsmCoce);
end;
有可能实现不?
WriteProcessMemory

解决方案 »

  1.   

    或许可以哈,函数里可以嵌入asm的,就把参数传进去喽
      

  2.   

    ...
    我的意思是 ASM 是半动态的
    程序初试化时从文件读取
      

  3.   

    你的意思是改变程序的汇编代码?你可以吧汇编码对应的机器码写成数组,然后WriteProcessMemory加到程序里面去
      

  4.   

    谢谢楼上的楼上
    我也想到了
    WriteProcessMemory
    可具体写到哪个位置不知道
    进程的句柄 这个知道就当前进程进程地址 这个怎么知道? 直接@function吗? 本类里的函数也直接@?
    数据存放地址 @AsmCode? 
    数据的长度 sizeof(AsmCode)
    实际数据的长度 ??
      

  5.   

    都有个前提,数组里必须含有$C3,即retn指令。
      

  6.   

    远程进程的话,先VirtualAllocEx在远程进程里申请空间,然后用WriteProcessMemory把数组写入,然后用CreateRemoteThread开远程线程执行。当然数组中也必须要有$C3.
      

  7.   

    是 ret
    还是 retn好象 ret 是返回
    retn 是什么?
      

  8.   

    ret 和 retn 一样的。
    就像一个人有自己的名字也有外号一样。
      

  9.   

    该说啥,一看就知道没有么……
    $c3是不弹栈的返回,像带参数的 stdcall 显然是要用 $c2 imm16 的