要求:不通过定义相同的函数指针类型执行它

解决方案 »

  1.   

    不定义相同的函数指针类型执行?那你按照参数次序,返回值把他们压栈,在jump那个函数地址看看。为什么不能定义函数类型呢?
      

  2.   

    因为不同函数参数个数是可能不同的,这样就要定义很多函数类型才能搞定,我不想这样。
    To yansea(思宏)给段代码看看吗,若通马上结贴
      

  3.   

    楼主是想hookapi之类的吗,对于这样的东西其实没什么好办法。我说的用汇编的方法也是在确定参数返回值的情况下呀。何况那也只是一个猜测。
    若你真的是想hookapi,那还是要给每个函数做一个说明的。
      

  4.   

    如果地址是LP
    asm
    Mov eax,&LP
    push 参数N
    Push 参数N-1
    Push 参数N-2
    ...
    Push 参数1
    Call [EAX]
    End;用API:CallWindowProc也可以的!
      

  5.   

    同意 mjcom(不明飞行物) ( )
      

  6.   

    又看到这帖子......function Afunction(a,b,c,d:integer):integer;
    begin
        ShowMessage(IntToStr(a+b+c+d));
        Result := a+b;
    end;//有这样一个函数;调用如下
    procedure TForm1.Button1Click(Sender: TObject);
    var
        a,b :integer;
    begin
        a := 10;
        b := 11;
        asm
            mov eax, a
            mov edx, b
            mov ecx, 11
            push 11 //使用堆栈
            call Afunction
        end;
    end;
    几点说明 “默认情况下若参数在3个已内,将分别使用eax、edx和ecx。超过3个参数部分将使用堆栈。返回参数的存放视长度而定。8位用al返回,16位用ax,32位用eax,64位用用两个32位寄存器edx:eax,其中eax是低位。”