@ -46,6 +46,7 @@ profiler_t add = {
[](zydis_reg_t& vip, zydis_reg_t& vsp,
hndlr_trace_t& hndlr) -> std::optional<vinstr_t> {
vinstr_t res{mnemonic_t::add};
res.imm.has_imm = false;
// MOV REG, [VSP]
const auto mov_reg_vsp = std::find_if(
@ -71,7 +72,6 @@ profiler_t add = {
});
res.stack_size = mov_vsp_offset->m_instr.operands[1].size;
res.imm.size = mov_reg_vsp->m_instr.operands[1].size;
return res;
}};
}
@ -24,7 +24,7 @@ profiler_t shld = {
instr.operands[1].mem.base == vsp &&
instr.operands[1].mem.disp.has_displacement;
},
// SHL REG, REG
// SHLD REG, REG
[](const zydis_reg_t vip, const zydis_reg_t vsp,
const zydis_decoded_instr_t& instr) -> bool {
return instr.mnemonic == ZYDIS_MNEMONIC_SHLD &&
@ -2,7 +2,7 @@
namespace vm::instrs {
profiler_t shr = {
"SHRD",
"SHR",
mnemonic_t::shr,
{{// MOV REG, [VSP]
LOAD_VALUE,
@ -24,7 +24,7 @@ profiler_t shrd = {
// SHR REG, REG
// SHRD REG, REG
return instr.mnemonic == ZYDIS_MNEMONIC_SHRD &&