コード例 #1
0
ファイル: SeniorVMHandle.cpp プロジェクト: Kernal-GH/WProtect
void SeniorVMHandle::d_sub(long _register1,long _register2)
{
  d_not(_register1);
  pop(T_INVALID);
  pop(T_TMP_REGISTER8);
  d_add(T_TMP_REGISTER8,_register2);
  //  pop(T_INVALID);
  pop(T_TMP_REGISTER6); //eflag 1
  d_copy_stack();
  d_not_and();
  pop(T_TMP_REGISTER7); //eflag 2 
  //pop(T_TMP_REGISTER8); //结果

  d_not(T_TMP_REGISTER6);
  pop(T_INVALID);
  w_push_imm_sx(0xf7ea);
  d_not_and();
  pop(T_INVALID);
  pop(T_TMP_REGISTER6);
  
  d_not(T_TMP_REGISTER7);
  pop(T_INVALID);
  w_push_imm_sx(0x815);
  d_not_and();
  pop(T_INVALID);
  pop(T_TMP_REGISTER7);
  d_add(T_TMP_REGISTER6,T_TMP_REGISTER7);
  pop(T_INVALID);
}
コード例 #2
0
ファイル: SeniorVMHandle.cpp プロジェクト: Kernal-GH/WProtect
void SeniorVMHandle::w_sub(long _register1,long _register2)
{
  w_not(_register1);  //sub eax,ebx = add((not eax),ebx) 
  pop(T_INVALID);
  pop(T_TMP_R16_8);
  b_add(T_TMP_R16_8,_register2);
  //  pop(T_INVALID);
  pop(T_TMP_REGISTER6); //eflag 1
  w_copy_stack();
  w_not_and();
  pop(T_TMP_REGISTER7); //eflag 2 
  //pop(T_TMP_REGISTER8); //结果

  d_not(T_TMP_REGISTER6);
  pop(T_INVALID);
  w_push_imm_sx(0xf7ea);
  d_not_and();
  pop(T_INVALID);
  pop(T_TMP_REGISTER6);
  
  d_not(T_TMP_REGISTER7);
  pop(T_INVALID);
  w_push_imm_sx(0x815);
  d_not_and();
  pop(T_INVALID);
  pop(T_TMP_REGISTER7);
  d_add(T_TMP_REGISTER6,T_TMP_REGISTER7);
  pop(T_INVALID);
}
コード例 #3
0
ファイル: SeniorVMHandle.cpp プロジェクト: Kernal-GH/WProtect
void SeniorVMHandle::d_or(long _register1,long _register2)
{
  d_not_and(_register1,_register2);
  pop(T_INVALID);
  d_not_and(_register1,_register2);
  pop(T_INVALID);
  db(HANDLE.d_nand.handle);
}
コード例 #4
0
ファイル: SeniorVMHandle.cpp プロジェクト: dellsun/WProtect
void SeniorVMHandle::d_xor(long _register1,long _register2,bool is_data)
{
  d_not_and(_register1,_register2,is_data);
  pop(T_INVALID);
  d_and(_register1,_register2,is_data);
  pop(T_INVALID);
  db(HANDLE.d_nand.handle);
}