pe-parse/tests/simple_test.cpp

53 lines
1.4 KiB
C++
Raw Normal View History

#include <pe-parse/parse.h>
#include <catch2/catch.hpp>
#include "filesystem_compat.h"
namespace peparse {
TEST_CASE("Simple testing of PE", "[example]") {
fs::path path = fs::path(ASSETS_DIR) / "example.exe";
parsed_pe *p = ParsePEFromFile(path.string().c_str());
REQUIRE(p);
SECTION("dos header correctness") {
auto dos = p->peHeader.dos;
REQUIRE(dos.e_magic == 0x5a4d);
REQUIRE(dos.e_cp == 0x3);
REQUIRE(dos.e_crlc == 0x0);
REQUIRE(dos.e_cparhdr == 0x4);
REQUIRE(dos.e_minalloc == 0x0);
REQUIRE(dos.e_maxalloc == 0xffff);
REQUIRE(dos.e_ss == 0x0);
REQUIRE(dos.e_sp == 0xb8);
REQUIRE(dos.e_csum == 0x0);
REQUIRE(dos.e_ip == 0x0);
REQUIRE(dos.e_cs == 0x0);
REQUIRE(dos.e_lfarlc == 0x40);
REQUIRE(dos.e_ovno == 0x0);
REQUIRE(dos.e_res[0] == 0x0);
REQUIRE(dos.e_res[1] == 0x0);
REQUIRE(dos.e_res[2] == 0x0);
REQUIRE(dos.e_res[3] == 0x0);
REQUIRE(dos.e_oemid == 0x0);
REQUIRE(dos.e_oeminfo == 0x0);
REQUIRE(dos.e_res2[0] == 0x0);
REQUIRE(dos.e_res2[1] == 0x0);
REQUIRE(dos.e_res2[2] == 0x0);
REQUIRE(dos.e_res2[3] == 0x0);
REQUIRE(dos.e_res2[4] == 0x0);
REQUIRE(dos.e_res2[5] == 0x0);
REQUIRE(dos.e_res2[6] == 0x0);
REQUIRE(dos.e_res2[7] == 0x0);
REQUIRE(dos.e_res2[8] == 0x0);
REQUIRE(dos.e_res2[9] == 0x0);
REQUIRE(dos.e_lfanew == 0xf8);
}
DestructParsedPE(p);
}
} // namespace peparse