Skip to content

Commit

Permalink
split NopJmp and JmpCall tests
Browse files Browse the repository at this point in the history
  • Loading branch information
cgytrus committed Aug 5, 2023
1 parent 0819bc1 commit 011ac35
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 19 deletions.
20 changes: 13 additions & 7 deletions test/Assembler64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -35,14 +39,16 @@ 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]);
a.mov(R9, m[RBP + 4]);
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
);
}

Expand Down Expand Up @@ -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
);
}
}
24 changes: 12 additions & 12 deletions test/Assembler86.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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) {
Expand Down Expand Up @@ -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);
}
}

0 comments on commit 011ac35

Please sign in to comment.