Skip to content

Commit 10ebf6e

Browse files
authored
Merge pull request #101 from orange-cpp/feature/added_pe_scan_example
Adds PE signature scanner example
2 parents 1a0e55b + ec9a159 commit 10ebf6e

File tree

2 files changed

+46
-2
lines changed

2 files changed

+46
-2
lines changed

examples/CMakeLists.txt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
project(examples)
22

3-
add_executable(ExampleProjectionMatrixBuilder example_proj_mat_builder.cpp)
4-
target_link_libraries(ExampleProjectionMatrixBuilder PRIVATE omath::omath)
3+
add_executable(example_projection_matrix_builder example_proj_mat_builder.cpp)
4+
set_target_properties(example_projection_matrix_builder PROPERTIES CXX_STANDARD 26)
5+
target_link_libraries(example_projection_matrix_builder PRIVATE omath::omath)
6+
7+
add_executable(example_signature_scan example_signature_scan.cpp)
8+
set_target_properties(example_signature_scan PROPERTIES CXX_STANDARD 26)
9+
target_link_libraries(example_signature_scan PRIVATE omath::omath)
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
//
2+
// Created by Vlad on 11/8/2025.
3+
//
4+
5+
#include <iostream>
6+
#include <omath/utility/pe_pattern_scan.hpp>
7+
#include <print>
8+
9+
int main()
10+
{
11+
std::println("OMATH Signature Scanner");
12+
13+
std::print("Enter path to PE file: ");
14+
std::string file_path;
15+
std::getline(std::cin, file_path); // allows spaces
16+
17+
std::print("Enter target section: ");
18+
std::string section;
19+
std::getline(std::cin, section);
20+
21+
std::print("Enter signature: ");
22+
std::string signature;
23+
std::getline(std::cin, signature);
24+
25+
std::println("[LOG] Performing scan....");
26+
27+
const auto result = omath::PePatternScanner::scan_for_pattern_in_file(file_path, signature, section);
28+
29+
if (!result)
30+
{
31+
std::println("[ERROR] Scan failed or signature was not found");
32+
return -1;
33+
}
34+
35+
std::println("Found at virtual 0x{:x} , raw 0x{:x}", result->virtual_base_addr + result->target_offset,
36+
result->raw_base_addr + result->target_offset);
37+
38+
return 0;
39+
}

0 commit comments

Comments
 (0)