如题。高手请帮忙,回答后马上结帖给分

解决方案 »

  1.   

    int value;
    __asm
    {
    push eax
    xor eax, eaxmov eax, eip
    mov value, eaxpop eax
    }汇编忘得七七八八了。不一定能对。
      

  2.   

    mov eax, eip不对,eip这个寄存器不能直接读取的
      

  3.   

    调用一个函数,在函数内将eip取出了(应该在堆栈内)
      

  4.   

    为什么 要 得到 eip ?hml999(蓝色999) 的方法不错  
      

  5.   

    hml999的方法偶试过,好像eip在堆栈中的位置并不是很固定,如我用以下函数:
    int geteip()
    {
      int i;
      return *(&i + 2);
    }
    在不优化时是对的,优化之后就不对了
      

  6.   

    BOOL GetThreadContext(
      HANDLE hThread,       // handle to thread with context
      LPCONTEXT lpContext   // address of context structure
    );
    CONTEXT结构为CPU可用的寄存器包含一个成员,定认在winnt.h中
      

  7.   

    lbird(★郑恒★) ( ) 的方法可以读取线程中下一条指令的eip。
      

  8.   

    int value;
        __asm
        {
            mov value, ebp
        }    std::cout<<int(value + 4);乱写的,不要笑我啊,我一点不懂,只知道
    call xxx(push eip)之后就是push ebp,然后mov ebp,esp则说明ebp位置的东西是ebp,然后就是eip,所有把ebp+4应该就是eip把?
      

  9.   

    哦,不对,好像应该是+8int value;
    __asm
    {
       mov value, ebp
    }std::cout<<int(value + 8);
      

  10.   

    还是?    int * pValue;
        __asm
        {
            mov pValue, ebp
        }    std::cout<<*(pValue + 4);
      

  11.   

    如果是这样的话,应该是    int Value;
        __asm
        {
            push eax
            sub eax,eax
            mov eax, [ebp + 4]
            mov Value, eax
            pop eax
        }    std::cout<<Value;
      

  12.   

    __asm{
      mov eax, $}
      

  13.   

    我试过了:
    unsigned int temp;
    __asm{
      push eax;
    lable:
      mov  eax, label;
      mov temp, eax;
     pop eax;
    }
    cout<<temp<<endl;
      

  14.   

    push eip
    pop  eax
      

  15.   

    __asm{
            call lable:;
    lable:     
            pop  EAX;

    }
      

  16.   

    kevin_wang,我按你的方法:我试过了:
    unsigned int temp;
    __asm{
      push eax;
    lable:
      mov  eax, label;
      mov temp, eax;
     pop eax;
    }
    cout<<temp<<endl;好像不对
      

  17.   

    int iEIP;_asm
    {
        push eax
        call get_cur_eip
    get_cur_eip:
        pop eax
        sub eax,5 // sub "call get_cur_eip" length
        mov iEIP,eax
        pop eax
    }