From 011ac35d4f5107915dc5d610bc32eacae88342d8 Mon Sep 17 00:00:00 2001 From: ConfiG Date: Sat, 5 Aug 2023 21:18:34 +0300 Subject: [PATCH] split NopJmp and JmpCall tests --- test/Assembler64.cpp | 20 +++++++++++++------- test/Assembler86.cpp | 24 ++++++++++++------------ 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/test/Assembler64.cpp b/test/Assembler64.cpp index c989b6e..c17b6b7 100644 --- a/test/Assembler64.cpp +++ b/test/Assembler64.cpp @@ -8,21 +8,25 @@ using namespace tulip::hook; using enum X64Register; static RegMem64 m; -TEST(X64AssemblerTest, NopMov) { +TEST(X64AssemblerTest, Nop) { X64Assembler a(0x123); a.nop(); - a.mov(R8, 10); - EXPECT_EQ(a.buffer(), "\x90\x49\xc7\xc0\x0a\x00\x00\x00"_bytes); + EXPECT_EQ(a.buffer(), "\x90"_bytes); } -TEST(X64AssemblerTest, JmpCall) { +TEST(X64AssemblerTest, Jmp) { X64Assembler a(0x123); a.jmp(0xb00b5); a.jmp(RCX); a.jmp(R8); + EXPECT_EQ(a.buffer(), "\xE9\x8D\xFF\x0A\x00\xFF\xE1\x41\xFF\xE0"_bytes); +} + +TEST(X64AssemblerTest, Call) { + X64Assembler a(0x123); a.call(R13); a.call(RSP); - EXPECT_EQ(a.buffer(), "\xE9\x8D\xFF\x0A\x00\xFF\xE1\x41\xFF\xE0\x41\xFF\xD5\xFF\xD4"_bytes); + EXPECT_EQ(a.buffer(), "\x41\xFF\xD5\xFF\xD4"_bytes); } TEST(X64AssemblerTest, Push) { @@ -35,6 +39,7 @@ TEST(X64AssemblerTest, Push) { TEST(X64AssemblerTest, Mov) { X64Assembler a(0x123); + a.mov(R8, 10); a.mov(RAX, RAX); a.mov(R9, R8); a.mov(RCX, m[R10 + 4]); @@ -42,7 +47,8 @@ TEST(X64AssemblerTest, Mov) { a.mov(m[RBP + 4], RSP); a.mov(m[R13], R8); EXPECT_EQ( - a.buffer(), "\x48\x89\xC0\x4D\x89\xC1\x49\x8B\x4A\x04\x4C\x8B\x4D\x04\x48\x89\x65\x04\x4D\x89\x45\x00"_bytes + a.buffer(), + "\x49\xc7\xc0\x0a\x00\x00\x00\x48\x89\xC0\x4D\x89\xC1\x49\x8B\x4A\x04\x4C\x8B\x4D\x04\x48\x89\x65\x04\x4D\x89\x45\x00"_bytes ); } @@ -77,4 +83,4 @@ TEST(X64AssemblerTest, Label) { EXPECT_EQ( a.buffer(), "\x48\x8B\x05\x07\x00\x00\x00\x48\x8D\x0D\x00\x00\x00\x00\x85\x00\x08\x00\x00\x00\x00\x00"_bytes ); -} \ No newline at end of file +} diff --git a/test/Assembler86.cpp b/test/Assembler86.cpp index d0bf0dd..7e3f7f3 100644 --- a/test/Assembler86.cpp +++ b/test/Assembler86.cpp @@ -8,27 +8,26 @@ using namespace tulip::hook; using enum X86Register; static RegMem32 m; -TEST(X86AssemblerTest, NopMov) { +TEST(X86AssemblerTest, Nop) { X86Assembler a(0x123); a.nop(); - a.mov(EAX, 10); - EXPECT_EQ(a.buffer(), "\x90\xb8\x0a\x00\x00\x00"_bytes); + EXPECT_EQ(a.buffer(), "\x90"_bytes); } -TEST(X86AssemblerTest, JmpCall) { +TEST(X86AssemblerTest, Jmp) { X86Assembler a(0x123); a.jmp(0xb00b5); a.jmp(ECX); - a.call(EAX); - a.call(EBP); - a.call(ESP); - EXPECT_EQ(a.buffer(), "\xE9\x8D\xFF\x0A\x00\xFF\xE1\xFF\xD0\xFF\xD5\xFF\xD4"_bytes); + EXPECT_EQ(a.buffer(), "\xE9\x8D\xFF\x0A\x00\xFF\xE1"_bytes); } -TEST(X86AssemblerTest, DirectCall) { +TEST(X86AssemblerTest, Call) { X86Assembler a(0); a.call(0x456); - EXPECT_EQ(a.buffer(), "\xE8\x51\x04\x00\x00"_bytes); + a.call(EAX); + a.call(EBP); + a.call(ESP); + EXPECT_EQ(a.buffer(), "\xE8\x51\x04\x00\x00\xFF\xD0\xFF\xD5\xFF\xD4"_bytes); } TEST(X86AssemblerTest, Push) { @@ -41,13 +40,14 @@ TEST(X86AssemblerTest, Push) { TEST(X86AssemblerTest, Mov) { X86Assembler a(0x123); + a.mov(EAX, 10); a.mov(EAX, EAX); a.mov(ECX, EAX); a.mov(ECX, m[EDX + 4]); a.mov(ECX, m[EBP + 4]); a.mov(m[EBP + 4], ESP); a.mov(m[EBP], EAX); - EXPECT_EQ(a.buffer(), "\x89\xC0\x89\xC1\x8B\x4A\x04\x8B\x4D\x04\x89\x65\x04\x89\x45\x00"_bytes); + EXPECT_EQ(a.buffer(), "\xb8\x0a\x00\x00\x00\x89\xC0\x89\xC1\x8B\x4A\x04\x8B\x4D\x04\x89\x65\x04\x89\x45\x00"_bytes); } TEST(X86AssemblerTest, Movsd) { @@ -79,4 +79,4 @@ TEST(X86AssemblerTest, Label) { a.write32(0x80085); a.updateLabels(); EXPECT_EQ(a.buffer(), "\x8B\x05\x2f\x01\x00\x00\x8D\x0D\x2f\x01\x00\x00\x85\x00\x08\x00"_bytes); -} \ No newline at end of file +}