Changeset 46

Show
Ignore:
Timestamp:
03/15/10 06:41:52 (4 years ago)
Author:
csong
Message:

Forget to check in ...

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • virtualization/qebek/trunk/target-i386/qebek-nt-console.c

    r41 r46  
    147147        // set return address, so the VM will break when returned 
    148148        qebek_read_ulong(env, env->regs[R_ESP], &ret_addr); 
    149         if(!qebek_bp_add(ret_addr, env->cr[3], postNtReadFile, pReadData)) 
     149        if(!qebek_bp_add(ret_addr, env->cr[3], env->regs[R_EBP], postNtReadFile, pReadData)) 
    150150        { 
    151151                fprintf(stderr, "preNtReadFile: failed to add postcall interception.\n"); 
     
    183183        // remove return address 
    184184        bp_addr = env->eip; 
    185         if(!qebek_bp_remove(bp_addr, env->cr[3])) 
     185        if(!qebek_bp_remove(bp_addr, env->cr[3], env->regs[R_EBP])) 
    186186        { 
    187187                fprintf(stderr, "postNtReadFile: failed to remove postcall interception.\n"); 
     
    212212    // set return address, so the VM will break when returned 
    213213    qebek_read_ulong(env, env->regs[R_ESP], &ret_addr); 
    214     if(!qebek_bp_add(ret_addr, env->cr[3], postNtWriteFile, pWriteData)) 
     214    if(!qebek_bp_add(ret_addr, env->cr[3], env->regs[R_EBP], postNtWriteFile, pWriteData)) 
    215215    { 
    216216        fprintf(stderr, "preNtWriteFile: failed to add postcall interception.\n"); 
     
    248248    // remove return address 
    249249    bp_addr = env->eip; 
    250     if(!qebek_bp_remove(bp_addr, env->cr[3])) 
     250    if(!qebek_bp_remove(bp_addr, env->cr[3], env->regs[R_EBP])) 
    251251    { 
    252252        fprintf(stderr, "postNtWriteFile: failed to remove postcall interception.\n"); 
     
    277277    // set return address, so the VM will break when returned 
    278278    qebek_read_ulong(env, env->regs[R_ESP], &ret_addr); 
    279     if(!qebek_bp_add(ret_addr, env->cr[3], postNtSecureConnectPort, pPortData)) 
     279    if(!qebek_bp_add(ret_addr, env->cr[3], env->regs[R_EBP], postNtSecureConnectPort, pPortData)) 
    280280    { 
    281281        fprintf(stderr, "preNtSecureConnectPort: failed to add postcall interception.\n"); 
     
    371371    // remove return address 
    372372    bp_addr = env->eip; 
    373     if(!qebek_bp_remove(bp_addr, env->cr[3])) 
     373    if(!qebek_bp_remove(bp_addr, env->cr[3], env->regs[R_EBP])) 
    374374    { 
    375375        fprintf(stderr, "postNtSecureConnectPort: failed to remove postcall interception.\n"); 
     
    441441                // set return address, so the VM will break when returned 
    442442                qebek_read_ulong(env, env->regs[R_ESP], &ret_addr); 
    443                 if(!qebek_bp_add(ret_addr, env->cr[3], postNtRequestWaitReplyPort, pPortData)) 
     443                if(!qebek_bp_add(ret_addr, env->cr[3], env->regs[R_EBP], postNtRequestWaitReplyPort, pPortData)) 
    444444                { 
    445445                        fprintf(stderr, "preNtRequestWaitReplyPort: failed to add postcall interception.\n"); 
     
    480480        // remove return address 
    481481    bp_addr = env->eip; 
    482     if(!qebek_bp_remove(bp_addr, env->cr[3])) 
     482    if(!qebek_bp_remove(bp_addr, env->cr[3], env->regs[R_EBP])) 
    483483    { 
    484484        fprintf(stderr, "postNtRequestWaitReplyPort: failed to remove postcall interception.\n"); 
     
    620620        // set return address, so the VM will break when returned 
    621621    qebek_read_ulong(env, env->regs[R_ESP], &ret_addr); 
    622     if(!qebek_bp_add(ret_addr, env->cr[3], postNtCreateThread, NULL)) 
     622    if(!qebek_bp_add(ret_addr, env->cr[3], env->regs[R_EBP], postNtCreateThread, NULL)) 
    623623    { 
    624624        fprintf(stderr, "preNtCreateThread: failed to add postcall interception.\n"); 
     
    641641        // remove return address 
    642642    bp_addr = env->eip; 
    643     if(!qebek_bp_remove(bp_addr, env->cr[3])) 
     643    if(!qebek_bp_remove(bp_addr, env->cr[3], env->regs[R_EBP])) 
    644644    { 
    645645        fprintf(stderr, "postNtCreateThread: failed to remove postcall interception.\n");