From c18d872288b520711898242b8aa46be34d54ea89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B6eh=20Matt?= <5415177+ZehMatt@users.noreply.github.com> Date: Wed, 3 Nov 2021 16:47:37 +0200 Subject: [PATCH] Add more assembler tests --- .../Tests/TestAssembler.cs | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/src/Dotx64DbgManagedTests/Tests/TestAssembler.cs b/src/Dotx64DbgManagedTests/Tests/TestAssembler.cs index 9cdd5d4..66f306e 100644 --- a/src/Dotx64DbgManagedTests/Tests/TestAssembler.cs +++ b/src/Dotx64DbgManagedTests/Tests/TestAssembler.cs @@ -25,6 +25,87 @@ public void TestEncodeXorRaxRax() AssertEq(0x31, data[1]); AssertEq(0xC0, data[2]); } + + [Test] + public void TestEncodeLeaBasic64() + { + var assembler = new Dotx64Dbg.Assembler(); + assembler.Lea(Rax, QwordPtr(Rax)); + assembler.Finalize(); + + var data = assembler.GetData(); + AssertEq(4, data.Length); + AssertEq(0x3E, data[0]); + AssertEq(0x48, data[1]); + AssertEq(0x8d, data[2]); + AssertEq(0x00, data[3]); + } + + [Test] + public void TestEncodeLeaBasic32() + { + var assembler = new Dotx64Dbg.Assembler(); + assembler.Lea(Eax, DwordPtr(Eax)); + assembler.Finalize(); + + var data = assembler.GetData(); + AssertEq(4, data.Length); + AssertEq(0x3E, data[0]); + AssertEq(0x67, data[1]); + AssertEq(0x8D, data[2]); + AssertEq(0x00, data[3]); + } + + [Test] + public void TestEncodeMemSegment64() + { + var assembler = new Dotx64Dbg.Assembler(); + assembler.Mov(Rax, QwordPtr(0x60).WithSegment(Gs)); + assembler.Finalize(); + + var data = assembler.GetData(); + AssertEq(9, data.Length); + AssertEq(0x65, data[0]); + AssertEq(0x48, data[1]); + AssertEq(0x8B, data[2]); + AssertEq(0x04, data[3]); + AssertEq(0x25, data[4]); + AssertEq(0x60, data[5]); + AssertEq(0x00, data[6]); + AssertEq(0x00, data[7]); + AssertEq(0x00, data[8]); + } +#else + [Test] + public void TestEncodeLeaBasic32() + { + var assembler = new Dotx64Dbg.Assembler(); + assembler.Lea(Eax, DwordPtr(Eax)); + assembler.Finalize(); + + var data = assembler.GetData(); + AssertEq(3, data.Length); + AssertEq(0x3E, data[0]); + AssertEq(0x8D, data[1]); + AssertEq(0x00, data[2]); + } + + [Test] + public void TestEncodeMemSegment32() + { + var assembler = new Dotx64Dbg.Assembler(); + assembler.Mov(Eax, DwordPtr(0x30).WithSegment(Fs)); + assembler.Finalize(); + + var data = assembler.GetData(); + AssertEq(6, data.Length); + AssertEq(0x64, data[0]); + AssertEq(0xA1, data[1]); + AssertEq(0x30, data[2]); + AssertEq(0x00, data[3]); + AssertEq(0x00, data[4]); + AssertEq(0x00, data[5]); + } #endif [Test] @@ -39,5 +120,6 @@ public void TestEncodeXorEaxEax() AssertEq(0x31, data[0]); AssertEq(0xC0, data[1]); } + } }