From b2dc9aa54d90556d854ffadbb4973728fe4cb6d0 Mon Sep 17 00:00:00 2001 From: tuz358 Date: Tue, 6 Mar 2018 15:15:45 +0900 Subject: [PATCH] Add push_imm8(0x6a) instruction --- include/instructions.h | 1 + instructions.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/include/instructions.h b/include/instructions.h index 2342404..1493371 100644 --- a/include/instructions.h +++ b/include/instructions.h @@ -77,6 +77,7 @@ public: void pop_esi(); // 0x5e void pop_edi(); // 0x5f void push_imm32(); // 0x68 + void push_imm8(); // 0x6a void jne_imm8(); // 0x75 void opcode_83(); // 0x83 void mov_rm32_r32(); // 0x89 diff --git a/instructions.cpp b/instructions.cpp index 7c8636f..c5f8889 100644 --- a/instructions.cpp +++ b/instructions.cpp @@ -71,6 +71,7 @@ void Instructions::init_instructions(){ this->instructions[0x5e] = &Instructions::pop_esi; this->instructions[0x5f] = &Instructions::pop_edi; this->instructions[0x68] = &Instructions::push_imm32; + this->instructions[0x6a] = &Instructions::push_imm8; this->instructions[0x75] = &Instructions::jne_imm8; this->instructions[0x83] = &Instructions::opcode_83; this->instructions[0x89] = &Instructions::mov_rm32_r32; @@ -895,6 +896,15 @@ void Instructions::push_imm32(){ imm32 = swap_endian32(imm32); this->registers[4] -= 4; // esp -= 4 memory.write_uint32(this->registers[4], imm32); + this->eip += 4; +} + +void Instructions::push_imm8(){ + //printf("push_imm8 called.\n"); + uint8_t imm8 = memory.read_uint8(this->eip); + this->registers[4] -= 4; // esp -= 4 + memory.write_uint8(this->registers[4], imm8); + this->eip++; } void Instructions::jne_imm8(){